本文较长,建议点赞收藏。更多AI大模型应用开发学习视频及资料,在智泊AI。

langGraph介绍
LangGraph 是一个由 LangChain 团队开发的库,用于构建复杂、有状态的应用程序,特别是那些需要循环和条件控制的 AI 工作流。它扩展了 LangChain 的核心功能,提供了更灵活的图形化编程模型。
核心概念
1.状态图(StateGraph): LangGraph 的核心数据结构,表示应用程序的不同状态和它们之间的转换。
2.节点(Nodes): 执行特定功能的函数,可以是:
- 工具调用
- 语言模型调用
- 自定义函数
3.边(Edges): 定义节点之间的条件转换路径。
主要优势
- 可靠性和可控性。通过适度检查和人在循环审批来引导智能体操作。LangGraph为长时间运行的工作流持久化上下文,使智能体保持在正确的方向上。
- 低级和可扩展。使用完全描述性的低级原语构建自定义智能体,而不受限制自定义的严格抽象的影响。设计可伸缩的多智能体系统,每个智能体都为您的用例定制一个特定的角色。
- 优秀的流输出支持。通过逐个令牌的流和中间步骤的流,LangGraph为用户提供了对智能体的清晰可见性
使用langGraph搭建聊天机器人
python
from typing import Annotated
from langchain_openai import ChatOpenAI
from typing_extensions import TypedDict
from langgraph.graph import StateGraph,START,END
from langgraph.graph.message import add_messages
from dotenv import load_dotenv
load_dotenv()
# 第一步: 创建StateGraph对象,StateGraph对象定义聊天机器人的消息状态结构,相当于上下文
class State(TypedDict):
messages: Annotated[list, add_messages]
graph_builder = StateGraph(State)
# 大模型api,这里主要使用阿里百炼的api,使用openAI的客户端进行调用,故需要在环境变量配置OPENAI_API_KEY=百炼key
llm = ChatOpenAI(model="qwen-max-latest", base_url="https://dashscope.aliyuncs.com/compatible-mode/v1")
def chatbot(state: State):
return {"messages": [llm.invoke(state["messages"])]}
# 第二步: 添加node节点
graph_builder.add_node("chatbot", chatbot)
# 第三步:定义流程入口和连线
graph_builder.add_edge(START, "chatbot")
graph_builder.add_edge("chatbot", END
# 第四步:编译graph
graph = graph_builder.compile()
# from IPython.display import Image, display
# 第五步:显示可视化图形
# try:
# display(Image(graph.get_graph().draw_mermaid_png()))
# except Exception:
# # This requires some extra dependencies and is optional
# print("Mermaid graph visualization requires some extra dependencies.")
# print("Please install the optional dependency `mermaid` to see the graph.")
# 第六步:执行流程
def stream_graph_updates(user_input: str):
for event in graph.stream({"messages": [{"role": "user", "content": user_input}]}):
for value in event.values():
print("Assistant:", value["messages"][-1].content)
while True:
try:
user_input = input("User: ")
if user_input.lower() in ["quit", "exit", "q"]:
print("Goodbye!")
break
stream_graph_updates(user_input)
except:
# fallback if input() is not available
user_input = "What do you know about LangGraph?"
print("User: " + user_input)
stream_graph_updates(user_input)
break
使用langGraph快速搭建一个langGraph流程主要有以下步骤:
第一步: 创建StateGraph对象,StateGraph对象定义聊天机器人的消息状态结构,相当于上下文
第二步: 添加node节点
第三步:定义流程入口和连线
第五步:显示可视化图形(可选)
这里编译后流程图形如下:

第六步:执行流程
vbnet
User: hi
Assistant: Hello! How can I assist you today? 😊
User: what is langGraph?
Assistant: **LangGraph** is a framework designed to simplify the creation and management of complex, stateful applications that involve large language models (LLMs). It builds on top of **LangChain**, a popular library for working with LLMs, and extends its capabilities by introducing **state management**, **multi-agent workflows**, and **graph-based execution**. LangGraph allows developers to build more sophisticated, multi-step workflows where multiple agents or components interact in a coordinated manner.
LangGraph 和 LangChain 的区别
1. 核心设计理念
LangChain:
基于"链"(Chain)的概念构建
主要采用线性执行流程
设计用于顺序的、无状态的AI应用
LangGraph:
基于"图"(Graph)的概念构建
支持复杂的、有状态的工作流
专门设计用于需要循环和条件分支的应用
2. 执行模型
LangChain:
线性执行:A → B → C
有限的循环能力(需要额外配置)
主要通过SequentialChain实现简单流程
LangGraph:
图结构执行:支持任意拓扑
原生支持循环和条件分支
可以表示更复杂的控制流
3. 状态管理
LangChain:
主要是无状态的
信息通过链传递
需要显式管理中间结果
LangGraph:
内置状态管理
自动维护和更新状态对象
简化了多步骤交互中的状态跟踪
4. 适用场景
LangChain 更适合:
简单的问答系统
文档处理流水线
不需要复杂控制流的应用
LangGraph 更适合:
自主代理(Autonomous Agents)
多轮对话系统
需要反馈循环的应用
复杂决策系统
声明:本文的示例代码基于langGraph官网样例进行修改
学习资源推荐
如果你想更深入地学习大模型,以下是一些非常有价值的学习资源,这些资源将帮助你从不同角度学习大模型,提升你的实践能力。
本文较长,建议点赞收藏。更多AI大模型应用开发学习视频及资料,在智泊AI。