LangGraph基本概念与编码思路(状态、节点、边)(有向图工作流)State状态合并、Conditional Edge条件边、LangGraph原理、LangGraph概念
文章目录
- LangGraph 基本概念与编码思路详解
- 一、什么是 LangGraph?
- 二、LangGraph 核心思想
- 三、为什么 LangGraph 比 Chain 更强?
- 四、LangGraph 最核心的三个概念
- 1. State(状态)
- 2. Node(节点)
- 3. Edge(边)
- 五、Conditional Edge(条件边)
- 六、LangGraph 工作流执行过程
- 七、最小 LangGraph 示例
- 安装
- 基础代码
- (注意)状态合并:LangGraph 不会用节点返回的结果完全替换当前状态,而是将返回的字典与当前状态进行合并(类似 Python 的 dict.update() 操作)
- 八、LangGraph 编码思路(非常重要)
- 正确思维方式
- 推荐设计流程
- 九、为什么 Multi-Agent 都在用 Graph?
- 十、LangGraph 与 DAG 的关系
- 十一、典型 Agent Workflow
- ReAct Agent
- 十二、LangGraph 常见组件
- 十三、生产级编码建议
- 十四、LangGraph 适合什么场景?
- 十五、总结
LangGraph 基本概念与编码思路详解
在 AI Agent、Multi-Agent、Workflow AI 快速发展的今天,越来越多开发者开始接触:
- Agent Workflow
- Tool Calling
- 状态管理
- 长链路推理
- 多步骤决策
而在这些能力背后,LangChain 推出的 LangGraph 正在成为构建 Agent Workflow 的核心框架之一。
很多人第一次看到 LangGraph 会疑惑:
- 为什么它叫 Graph?
- 和普通链式调用(Chain)有什么区别?
- State 是什么?
- Node 怎么组织?
- Conditional Edge 是什么?
- Multi-Agent 为什么都在用 DAG / Graph?
这篇文章会从:
- 基础概念
- 核心架构
- 编码思维
- 状态流转
- 条件路由
- Agent Workflow
- 实战代码
系统讲清楚 LangGraph 的核心设计思想。
一、什么是 LangGraph?
LangGraph 是一个:
基于 Graph(图)模型的 AI Workflow 编排框架。
它本质上解决的是:
LLM 多步骤任务如何组织?
例如:
用户问题
↓
意图识别
↓
工具调用
↓
RAG 检索
↓
LLM 推理
↓
结果校验
↓
输出
传统 Chain 难以处理:
- 循环
- 条件分支
- 状态共享
- 多 Agent 协作
- 长生命周期 Workflow
因此 LangGraph 引入:
State + Node + Edge
形成真正的:
有向图工作流(Graph Workflow)
二、LangGraph 核心思想
LangGraph 的核心:
状态在图中流动
整个系统类似:
这里:
| 概念 | 含义 |
|---|---|
| Node | 节点(执行逻辑) |
| Edge | 边(执行路径) |
| State | 全局共享状态 |
| Conditional Edge | 条件路由 |
| START | 起点 |
| END | 终点 |
三、为什么 LangGraph 比 Chain 更强?
传统 Chain:
A → B → C → D
本质是:
线性流程
而真实 AI Workflow 往往是:
A
├── B
├── C
└── D
└── retry
例如:
- Agent 失败重试
- Tool 多轮调用
- 动态决策
- 多 Agent 协作
- Planner / Executor 模式
这已经不是:
链(Chain)
而是:
图(Graph)
四、LangGraph 最核心的三个概念
1. State(状态)
State 是 LangGraph 的灵魂。
为什么需要 State?
因为 Agent Workflow 是:
多步骤共享上下文
例如:
{
"question": "...",
"documents": [...],
"tool_result": "...",
"final_answer": "..."
}
所有节点都操作同一个状态。
(补充解释)

1. 代码示例部分
JSON结构示例:
{
"question": "...",
"documents": [...],
"tool_result": "...",
"final_answer": "..."
}
这是一个共享状态对象的典型表示,包含:
question: 用户提出的问题documents: 检索到的相关文档tool_result: 工具执行的结果final_answer: 最终生成的答案
这个JSON结构代表了系统在处理过程中需要维护和更新的全局状态。
2. "所有节点都操作同一个状态"说明
明确指出"所有节点都操作同一个状态",这正是图片展示的核心概念。在分布式系统中,这意味着系统中的每个组件(节点)都基于同一个共享状态进行操作和更新,而不是各自维护独立的状态副本。
3. State 流转示意图分析
共享状态区域 (Shared State)
- 位于图表上部,被明确标记为"Shared State"
- 包含三个关键状态元素:
question、documents和answer - 这表示系统中所有组件都能访问和修改这些状态变量
处理流程
- Input: 系统接收初始输入
- Retriever: 检索组件,负责根据问题检索相关文档
- 作用:填充
documents字段 - 与共享状态交互:从
question获取信息,将结果写入documents
- 作用:填充
- LLM: 大型语言模型组件
- 作用:基于问题和文档生成答案
- 与共享状态交互:读取
question和documents,生成并写入answer
- Validator: 验证组件
- 作用:验证生成的答案是否符合要求
- 与共享状态交互:读取
answer进行验证
4. 系统架构意义
这种设计体现了"所有节点都操作同一个状态"的核心思想:
- 状态一致性:所有组件操作的是同一个状态对象,避免了数据不一致问题
- 流程协同:组件间通过共享状态进行通信,而不是直接传递数据
- 可扩展性:可以轻松添加新组件,只要它们遵循访问和更新共享状态的规则
- 容错性:如果某个组件失败,其他组件仍可以基于最新状态继续工作
5. 实际应用场景
这种架构常见于:
- RAG(检索增强生成)系统:如图片所示,Retriever检索文档,LLM生成回答
- 多步骤处理流程:需要多个组件协作完成复杂任务的系统
- 对话系统:维护对话历史和上下文状态
总结
这张图片清晰地展示了在分布式处理系统中,如何通过共享状态机制确保所有处理节点操作同一数据视图。与传统分布式系统不同,这里不是多个独立节点维护相同数据的副本,而是所有组件共同操作一个单一的、集中的状态对象。这种设计使系统更加简洁、一致,特别适合需要多步骤处理的AI应用,如基于LLM的问答系统。
State 流转示意图
State 通常怎么定义?
最常见:
from typing import TypedDict
class AgentState(TypedDict):
question: str
documents: list
answer: str
LangGraph 中:
节点输入 = State
节点输出 = State 更新
2. Node(节点)
Node 是:
执行逻辑单元
例如:
- LLM 调用
- Tool 调用
- RAG 检索
- 数据处理
- Agent 推理
Node 的本质
Node 就是:
def node(state):
...
return updated_state
例如:
def retrieve_node(state):
docs = retriever.invoke(state["question"])
return {
"documents": docs
}
3. Edge(边)
Edge 决定:
节点之间如何流转
例如:
五、Conditional Edge(条件边)
这是 LangGraph 最重要能力之一。
AI Workflow 本质上:
不是固定路径
而是:
动态决策路径
示例:Agent 是否继续调用 Tool?
编码方式
def router(state):
if state["need_tool"]:
return "tool_node"
return "end"
然后:
graph.add_conditional_edges(
"agent",
router
)
六、LangGraph 工作流执行过程
整个执行过程:
核心思想:
Graph 控制流程
State 保存上下文
Node 负责逻辑
七、最小 LangGraph 示例
安装
pip install langgraph langchain openai
基础代码
from typing import TypedDict
from langgraph.graph import StateGraph, END
class State(TypedDict):
input: str
output: str
def chatbot(state):
text = state["input"]
# 状态合并
return {
"output": f"Echo: {text}"
}
graph = StateGraph(State)
graph.add_node("chatbot", chatbot)
graph.set_entry_point("chatbot")
graph.add_edge("chatbot", END)
app = graph.compile()
result = app.invoke({
"input": "hello"
})
print(result)
需要:
pip install langgraph
运行结果:
{'input': 'hello', 'output': 'Echo: hello'}
(注意)状态合并:LangGraph 不会用节点返回的结果完全替换当前状态,而是将返回的字典与当前状态进行合并(类似 Python 的 dict.update() 操作)
八、LangGraph 编码思路(非常重要)
很多人学不会 LangGraph。
原因不是 API。
而是:
没有 Graph 思维
正确思维方式
不要想:
我下一步调用谁?
而要想:
状态下一步流向哪里?
推荐设计流程
第一步:先设计 State
先问:
整个流程需要共享什么数据?
例如:
class AgentState(TypedDict):
messages: list
tool_result: str
final_answer: str
第二步:拆分 Node
每个 Node:
只做一件事
例如:
| Node | 职责 |
|---|---|
| planner | 规划 |
| retriever | 检索 |
| tool | 工具调用 |
| generator | 生成答案 |
| validator | 校验 |
第三步:设计 Edge
思考:
流程如何跳转?
例如:
九、为什么 Multi-Agent 都在用 Graph?
因为 Multi-Agent 本质:
多个智能体协作
这天然就是:
图结构
例如:
这里:
- 每个 Agent 是 Node
- Agent 间通信是 Edge
- 共享 Memory 是 State
这也是:
- AutoGen
- CrewAI
- OpenAI Agents
- DeepResearch
越来越 Graph 化的原因。
十、LangGraph 与 DAG 的关系
很多人会问:
LangGraph 是 DAG 吗?
答案:
部分是
DAG(有向无环图)
特点:
不能回环
例如:
LangGraph 更强
LangGraph 支持:
循环(Loop)
例如:
这对于 Agent 极其重要:
- ReAct
- Tool Retry
- Self Reflection
- Auto Correction
都需要循环。
十一、典型 Agent Workflow
ReAct Agent
这其实就是:
经典 LangGraph 模型
十二、LangGraph 常见组件
1. START
起始节点。
2. END
结束节点。
3. StateGraph
图对象。
4. compile()
编译 Workflow。
5. invoke()
执行 Workflow。
十三、生产级编码建议
1. State 不要过大
错误:
state["everything"]
正确:
state["messages"]
state["tool_result"]
2. Node 单一职责
不要:
一个 Node 做全部事情
而要:
一个 Node 一个能力
3. Conditional Edge 保持简单
不要:
if-else 地狱
而要:
router()
集中管理。
4. Graph 先画图再编码
强烈推荐:
先 Mermaid
再代码
因为:
Graph 本质是架构设计
十四、LangGraph 适合什么场景?
非常适合:
| 场景 | 是否适合 |
|---|---|
| AI Agent | ✅ |
| Multi-Agent | ✅ |
| Tool Calling | ✅ |
| RAG Workflow | ✅ |
| 长链路推理 | ✅ |
| 自动化流程 | ✅ |
| Retry Workflow | ✅ |
不太适合:
| 场景 | 原因 |
|---|---|
| 简单聊天机器人 | 过重 |
| 单次 Prompt | 不需要 Graph |
| 极简单 API 封装 | 没必要 |
十五、总结
LangGraph 本质是:
用图结构管理 AI Workflow
核心三要素:
State
Node
Edge
核心思想:
状态在图中流动
它解决的是:
复杂 Agent Workflow 编排问题
相比传统 Chain:
| Chain | LangGraph |
|---|---|
| 线性 | 图结构 |
| 固定流程 | 动态路由 |
| 无状态 | 状态共享 |
| 不擅长循环 | 支持循环 |
| 难做 Multi-Agent | 天然支持 |
可以这样理解:
Chain 是函数调用
LangGraph 是操作系统调度
未来:
- AI Agent
- Deep Research
- Multi-Agent
- Autonomous Workflow
几乎都会走向:
Graph Workflow
而 LangGraph 正是当前最主流的 Graph AI 编排框架之一。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)