LangChain 系列已经完成模型调用、提示词、结构化输出和聊天应用,RAG 系列又补齐了 Embedding、向量数据库与检索问答。到这里,程序可以完成多轮聊天和知识库问答,但执行路径仍然由代码提前写好:先改写问题,再检索文档,最后让模型回答。
从本文开始进入独立的 LangGraph 系列,重点从“调用哪些组件”转向“怎样组织状态、节点、路由、中断和恢复”。
如果任务变成下面这样,固定调用链就会越来越难维护:
- 模型需要根据问题决定是否调用工具。
- 一次工具调用后,模型还要判断是否继续调用其他工具。
- 某些步骤失败后需要重试或从中断位置恢复。
- 高风险操作必须先暂停,等待人工确认。
- 多个执行分支需要共享和修改同一份状态。
这类问题正是 LangGraph 需要解决的。本篇先不写代码,先把 LangGraph、Agent 和 Workflow 的关系讲清楚。
1. LangGraph 是什么
LangGraph 是一个用于构建有状态、长时间运行任务的底层编排框架。它不会替代大模型,也不负责训练模型,它负责组织模型、工具和普通代码之间的执行关系。
在 LangGraph 中,一个应用通常可以看成一张图。官方 Graph API 将图概括为 State、Nodes 和 Edges 三个核心组成;为了方便理解路径选择,本文再把 Edge 分成普通边和条件边:
- State:整个执行过程中需要共享的数据。
- Node:真正执行工作的步骤,例如调用模型或执行工具。
- Edge:节点之间的连接关系,可以固定进入某个节点。
- Conditional Edge:Edge 的一种,根据当前状态动态选择下一条路径。
以天气 Agent 为例,状态中可以保存消息,模型节点判断是否需要查询天气,工具节点执行天气查询,边负责让执行过程回到模型或结束。
LangGraph 官方把它定位为一个低层级编排框架,重点能力包括持久化执行、流式输出、人工介入和记忆等。它可以与 LangChain 一起使用,也可以单独使用。LangGraph 1.0 文档
2. LangChain、LangGraph 和 LangSmith 的关系
这三个名称经常一起出现,但解决的问题并不相同。
2.1 LangChain
LangChain 提供模型、消息、提示词、工具、结构化输出和 Agent 等高层开发接口。前面文章使用的 ChatOpenAI、ChatPromptTemplate 和 HuggingFaceEmbeddings 都属于这一层。
它更关注“用什么组件完成任务”。
2.2 LangGraph
LangGraph 负责组织状态和执行流程。LangChain 的高级 Agent API 也是建立在 LangGraph 之上的,因此使用 create_agent() 得到的不是一个普通函数,而是一张可以执行的编译图。
它更关注“任务按什么顺序运行,状态怎样流转,什么时候继续或停止”。
2.3 LangSmith
LangSmith 用于观察、调试和评估模型应用。一次 Agent 执行经过了哪些节点、调用了什么工具、每一步输入输出是什么,都可以通过追踪信息查看。
它更关注“程序实际做了什么,哪里需要改进”。
三者不是必须同时使用。简单模型调用只需要 LangChain;需要显式控制状态和流程时再使用 LangGraph;需要系统观察和评估时再接入 LangSmith。
3. 什么是 Workflow
Workflow 是由代码预先确定执行路径的流程。
例如订单退款流程可能是:
读取订单
→ 检查支付状态
→ 判断是否超过退款期限
→ 执行退款
→ 发送通知
每一步该做什么、下一步去哪里,都由程序员提前定义。即使流程中调用了大模型,只要执行路径仍由代码控制,它依然属于 Workflow。
Workflow 的优点是:
- 执行路径清晰。
- 行为容易预测。
- 方便编写测试。
- 成本和调用次数更容易估算。
- 出现问题时更容易定位到具体步骤。
它的限制也很明显:任务变化较大时,需要不断增加判断和分支,流程会变得越来越复杂。
4. 什么是 Agent
Agent 会让模型参与决定下一步做什么,而不是只负责生成最后一段文字。
一个最小 Agent 通常包含:
- 模型:理解任务并决定下一步动作。
- 工具:执行模型本身无法完成的操作。
- 系统提示词:告诉模型身份、规则和目标。
- 循环与停止条件:工具执行后再次调用模型,直到模型生成最终回答。
一次典型执行过程如下:
用户提出问题
→ 模型判断是否需要工具
→ 生成工具名称和参数
→ 程序执行工具
→ 工具结果返回模型
→ 模型继续判断或生成最终回答
这里的关键不是“用了大模型”,而是“模型可以动态决定下一步动作”。

5. Agent 与 Workflow 有什么区别
例如用户要求“整理今天的重要邮件并生成待办事项”。
使用 Workflow 时,可以固定为:读取邮件、筛选未读邮件、生成摘要、提取待办、保存结果。无论邮件内容怎样,都会按照相同顺序执行。
使用 Agent 时,模型可以根据邮件内容决定:
- 普通通知只做摘要。
- 包含会议时间时调用日历工具。
- 包含附件时调用文件读取工具。
- 信息不足时向用户追问。
Agent 更灵活,但不代表一定更好。因为路径由模型动态决定,所以也会带来更多不确定性:
- 工具调用次数可能变化。
- 响应时间和成本更难提前确定。
- 模型可能选择错误工具或生成错误参数。
- 测试不能只检查最终文字,还要检查执行过程。
- 涉及真实写操作时,需要增加权限和人工确认。
Anthropic 关于 Agent 的工程实践也建议从最简单的方案开始,只有在固定流程不能满足任务时再提高自主程度。
6. Agent 和 Workflow 可以组合
两者不是互斥关系。实际应用中,经常把 Agent 作为 Workflow 中的一个节点。
这里还要区分“执行结构”和“决策方式”:Graph 是承载状态与执行路径的结构,Workflow 和 Agent 描述的是下一步由代码还是模型决定。因此,固定 Workflow 可以画成图,Agent 循环也可以画成图,一个 Agent 还可以作为更大 Workflow 中的子图或节点。
例如客户工单流程可以固定为:
接收工单
→ 检查用户权限
→ Agent 分析问题并选择工具
→ 人工确认解决方案
→ 系统发送回复
权限检查、人工确认和发送回复采用固定 Workflow,只有中间的问题分析交给 Agent。这样既保留灵活性,也能控制风险。
7. Graph、State、Node 和 Edge
接下来用概念理解 LangGraph 中的 State、Node 和 Edge,并单独说明最常用的条件边。LangGraph Graph API
7.1 State
State 是执行过程中共享的数据。聊天 Agent 最常见的状态是消息列表,也可以包含用户信息、任务进度和中间结果。
节点不是各自保存一份孤立数据,而是读取当前状态,并返回需要更新的部分。
7.2 Node
Node 是一个执行步骤,可以是普通 Python 函数、模型调用、工具执行,也可以是另一个子图。
天气 Agent 中至少包含模型节点和工具节点。
7.3 Edge
Edge 连接两个节点。例如模型已经生成最终回答时,边会把执行导向结束节点。
7.4 Conditional Edge
Conditional Edge 根据状态选择不同路径。例如模型生成了 tool_calls 时进入工具节点,否则直接结束。
create_agent() 会帮我们生成这些常见节点和边,因此入门时不需要立即手写整张图。后面学习复杂 Workflow 时,再直接使用 StateGraph API 定义状态和路径。
下面用一个简化的天气 Agent 表示四个元素如何配合。模型节点和工具节点都读取共享 State,并返回局部更新;普通 Edge 负责固定流转,Conditional Edge 根据模型是否生成 tool_calls 决定调用工具还是结束。

8. 框架、Agent Server 和 Studio
学习 LangGraph 时还会看到几个容易混淆的名称。
- LangGraph 框架:安装在 Python 环境中的编排库。
- LangGraph CLI:创建项目、启动开发服务和构建部署产物的命令行工具。
- Agent Server:把图作为 HTTP API 运行的服务。
- Studio:查看图结构、输入输出和每一步执行过程的调试界面。
安装 LangGraph 并不等于已经启动服务器。普通 Python 程序可以直接调用图;需要通过 HTTP 或 Studio 调试时,才启动 Agent Server。
本地 langgraph dev 使用单进程内存运行时,适合开发和测试。开发服务器会把 checkpoint 和 store 写入项目的 .langgraph_api/,方便本地重启恢复,但这不是生产级持久化方案。生产环境还要考虑认证、数据库、并发、监控和资源隔离。
9. 初学者常见误区
9.1 使用了工具就是 Agent
如果工具调用顺序完全由代码固定,它仍然是 Workflow。只有模型参与选择下一步动作时,才具有 Agent 的动态决策特征。
9.2 Agent 一定比 Workflow 高级
Agent 只是另一种执行方式。规则明确的任务使用固定流程通常更稳定,也更容易控制成本。
9.3 LangGraph 会自动让模型更聪明
LangGraph 改善的是流程组织和运行能力,不会改变模型本身的知识和推理上限。
9.4 LangGraph 必须和 LangChain 一起使用
LangGraph 可以独立使用。本系列为了复用已经部署的 Qwen3 和 ChatOpenAI,会同时使用 LangChain 的模型与 Agent 接口。
10. 小结
本篇先建立 LangGraph 的整体认识。下一篇会安装 LangGraph CLI,创建一个符合 Agent Server 规范的项目,并使用本地 Qwen3 和模拟天气工具构建第一张可运行的 Agent 图。
| 知识点 | 作用 |
|---|---|
| LangChain | 提供模型、提示词、工具和 Agent 等高层组件 |
| LangGraph | 组织状态、节点、边和执行流程 |
| LangSmith | 追踪、调试和评估模型应用 |
| Workflow | 执行路径由代码提前确定 |
| Agent | 模型根据上下文动态决定下一步动作 |
| State | 保存执行过程中共享的数据 |
| Node | 执行模型、工具或普通代码 |
| Edge | 决定节点之间如何流转 |
| Agent Server | 通过 HTTP 运行编译后的图 |
| Studio | 查看图结构和执行过程的调试界面 |