主题
LangGraph 概述:构建可靠的智能代理工作流
简单来说
LangGraph 是一个专门用来"指挥"AI Agent 干活的底层调度框架,让你的 Agent 能像流水线一样有条不紊地完成复杂任务,而且即使中途挂掉也能接着干。
如果 LLM(大语言模型)是一个聪明的员工,LangGraph 就是那个帮你管理这个员工什么时候干什么活、干完了下一步去哪的"项目经理"。
🎯 本节目标
学完本节,你将能够回答:
- LangGraph 是什么?它解决了什么问题?
- LangGraph 和 LangChain 是什么关系?
- LangGraph 的核心优势有哪些?
- 什么场景下应该使用 LangGraph?
核心痛点与解决方案
痛点:没有 LangGraph 之前,我们有多惨?
想象一下,你要让 AI 完成一个复杂任务(比如:帮用户订机票 + 订酒店 + 安排行程):
| 问题 | 具体表现 |
|---|---|
| 流程失控 | AI 一股脑儿把所有事情混在一起干,逻辑乱成一锅粥 |
| 没有记忆 | 对话断了就忘了之前聊了啥,用户得从头说起 |
| 中途挂掉完蛋 | 网络抖一下、服务器重启一下,之前做的全白费 |
| 黑盒操作 | AI 在干嘛?谁知道呢!出了问题根本没法排查 |
| 人工介入困难 | 想在关键步骤让人类审核一下?做梦吧,流程根本停不下来 |
解决:LangGraph 怎么救你的?
| LangGraph 特性 | 解决的问题 | 效果 |
|---|---|---|
| Durable Execution(持久化执行) | 任务中断了? | 从上次停的地方继续! |
| Human-in-the-loop(人类介入) | 关键节点需要审核? | 可以暂停,让人类确认后再继续 |
| Comprehensive Memory(全面记忆) | AI 记忆力差? | 短期记忆 + 长期记忆,不再是"金鱼脑" |
| State Management(状态管理) | 不知道进度? | 清晰追踪当前进度,知道 AI 在哪一步 |
| Debugging Support(调试支持) | 出问题没法查? | 配合 LangSmith 可视化追踪每一步执行 |

生活化类比:智能餐厅的后厨管理系统
想象你开了一家高档餐厅,后厨有多个工位(洗菜、切菜、炒菜、摆盘),每道菜都需要按顺序经过不同工位:
| LangGraph 概念 | 餐厅类比 | 作用 |
|---|---|---|
| Graph(图) | 后厨的工作流程图 | 规定了一道菜从原料到上桌要经过哪些步骤 |
| Node(节点) | 每个工位(洗菜台、炒锅、摆盘区) | 执行具体的工作任务 |
| Edge(边) | 工位之间的传送带 | 定义完成一个工位后,下一步去哪个工位 |
| State(状态) | 每道菜的"订单小票" | 记录这道菜当前在哪、已经做了什么、还差什么 |
| START / END | 点单窗口 / 出餐窗口 | 工作流的起点和终点 |
关键场景演示:
- 🔌 厨房突然停电了(服务中断)? 因为有"订单小票"(State),来电后可以看到每道菜做到哪一步,接着做就行!
- 👨🍳 主厨想检查一下摆盘(Human-in-the-loop)? 系统可以在摆盘前暂停,等主厨点头后再出餐!

核心概念详解
1. StateGraph(状态图)
整个工作流程的蓝图
这是 LangGraph 的核心类,你用它来定义整个 Agent 的工作流程。就像餐厅的 SOP 手册,规定了从接单到出餐的每一步。
2. Node(节点)
干活的具体工位
每个 Node 就是一个执行具体任务的函数。比如:
- 一个 Node 负责调用 LLM 生成回复
- 另一个 Node 负责查询数据库
- 还有一个 Node 负责调用外部 API
3. Edge(边)
工位之间的传送带
Edge 定义了节点之间的流转关系。分为两种:
- 普通 Edge:A 做完了一定去 B
- 条件 Edge:A 做完了,根据结果决定去 B 还是 C
4. State(状态)
菜品的订单小票
State 是整个流程中流转的"数据包",记录了:
- 当前的对话历史(messages)
- 中间计算结果
- 任何你想要在节点之间传递的信息
5. START / END
入口和出口
START:工作流的起点,相当于"收到用户请求"END:工作流的终点,相当于"返回最终结果给用户"

Hello World:第一个 LangGraph 程序
让我们来看一个最简单的示例:
typescript
import { StateSchema, MessagesValue, GraphNode, StateGraph, START, END } from "@langchain/langgraph";
const State = new StateSchema({
messages: MessagesValue,
});
const mockLlm: GraphNode<typeof State> = (state) => {
return { messages: [{ role: "ai", content: "hello world" }] };
};
const graph = new StateGraph(State)
.addNode("mock_llm", mockLlm)
.addEdge(START, "mock_llm")
.addEdge("mock_llm", END)
.compile();
await graph.invoke({ messages: [{ role: "user", content: "hi!" }] });💡 代码人话解读
typescript
const State = new StateSchema({
messages: MessagesValue, // 定义状态:有一个 messages 字段存对话记录
});
// 💡 人话:告诉系统"我的订单小票上有一栏叫 messages,记对话内容"
const mockLlm: GraphNode<typeof State> = (state) => {
return { messages: [{ role: "ai", content: "hello world" }] };
};
// 💡 人话:创建一个工位,不管收到啥,都回复 "hello world"
const graph = new StateGraph(State)
.addNode("mock_llm", mockLlm) // 注册一个叫 "mock_llm" 的工位
.addEdge(START, "mock_llm") // 订单进来后,先去 mock_llm 工位
.addEdge("mock_llm", END) // mock_llm 做完后,直接出餐(结束)
.compile(); // 编译成可执行的流程
// 💡 人话:画好流程图,编译成可以运行的程序
await graph.invoke({ messages: [{ role: "user", content: "hi!" }] });
// 💡 人话:用户说 "hi!",走一遍流程,得到 "hello world" 的回复流程图示意
┌────────────────┐
│ 用户: "hi!" │
└───────┬────────┘
│
▼
┌─────────┐
│ START │
└────┬────┘
│
▼
┌─────────┐
│mock_llm │ ──► 生成 "hello world"
└────┬────┘
│
▼
┌─────────┐
│ END │
└────┬────┘
│
▼
┌──────────────────────┐
│ 返回: "hello world" │
└──────────────────────┘这段代码的本质就是:
- 定义了一个最简单的单节点工作流
- 用户消息进来 → 经过一个假的 LLM 处理 → 返回结果
- 虽然简单,但展示了 LangGraph 的核心模式:定义状态 → 创建节点 → 连接边 → 编译执行

真实场景案例:智能客服系统
假设你要开发一个电商平台的智能客服,需要处理:退款、查订单、投诉转人工等不同诉求。
❌ 没有 LangGraph 的做法
typescript
async function handleCustomerQuery(query: string) {
const intent = await detectIntent(query);
if (intent === 'refund') {
const orderInfo = await getOrderInfo(query);
if (orderInfo.canRefund) {
return await processRefund(orderInfo);
} else {
// 转人工?怎么转?状态怎么传?
// ...一堆嵌套 if-else
}
} else if (intent === 'complaint') {
// 又是一堆嵌套...
}
// 代码越写越乱,bug 越来越多
}✅ 用 LangGraph 的做法
typescript
const graph = new StateGraph(CustomerServiceState)
.addNode("detect_intent", detectIntentNode) // 识别用户意图
.addNode("get_order_info", getOrderInfoNode) // 查询订单信息
.addNode("process_refund", processRefundNode) // 处理退款
.addNode("human_review", humanReviewNode) // 人工审核节点
.addNode("handle_complaint", complaintNode) // 处理投诉
.addEdge(START, "detect_intent")
.addConditionalEdges("detect_intent", routeByIntent, {
"refund": "get_order_info",
"complaint": "handle_complaint",
"other": "human_review"
})
.addConditionalEdges("get_order_info", checkRefundEligibility, {
"eligible": "process_refund",
"not_eligible": "human_review"
})
.addEdge("process_refund", END)
.addEdge("human_review", END)
.compile();
提升效果对比
| 方面 | 没有 LangGraph | 使用 LangGraph |
|---|---|---|
| 代码可读性 | 面条代码,嵌套严重 | 清晰的流程图,新人也能秒懂 |
| 可维护性 | 改一处动全身 | 加新功能?加个 Node 连上就行 |
| 容错能力 | 中断就完蛋 | 重启后从断点继续 |
| 人工介入 | 难以实现 | 敏感操作可暂停等人工审批 |
| 问题排查 | 只能靠日志 | 配合 LangSmith,每一步都有记录 |
LangGraph 五大核心优势
1. 🔄 Durable Execution(持久化执行)
构建能够在失败后恢复的 Agent,可以长时间运行,从上次中断的地方继续。
任务执行中... → 💥 服务器重启 → 恢复执行 ✅2. 👤 Human-in-the-loop(人机协作)
在任何节点暂停执行,让人类检查和修改 Agent 状态后再继续。
Agent 执行 → ⏸️ 暂停等待审批 → 人类确认 → ▶️ 继续执行3. 🧠 Comprehensive Memory(全面记忆)
创建有状态的 Agent,同时具备:
- 短期记忆:当前对话的上下文
- 长期记忆:跨会话的用户信息
4. 🔍 Debugging with LangSmith(调试支持)
通过可视化工具深入了解复杂 Agent 行为:
- 追踪执行路径
- 捕获状态转换
- 提供详细的运行时指标
5. 🚀 Production-ready Deployment(生产就绪)
为有状态、长时间运行的工作流设计的可扩展基础设施。
LangGraph 生态系统
LangGraph 可以独立使用,也可以与 LangChain 产品无缝集成:
| 组件 | 作用 | 类比 |
|---|---|---|
| LangGraph | 底层流程编排框架 | 后厨管理系统 |
| LangSmith | 追踪、调试、监控 | 餐厅的监控摄像头 + 报表系统 |
| LangSmith Agent Server | 生产环境部署平台 | 连锁餐厅的中央厨房 |
| LangChain | 提供 LLM/工具等组件集成 | 厨房里的各种厨具和食材供应商 |
LangChain vs LangGraph:如何选择?
| 维度 | LangChain | LangGraph |
|---|---|---|
| 核心定位 | 高层 Agent 抽象 | 底层工作流编排 |
| API 风格 | createAgent() 一行创建 | StateGraph 精细控制 |
| 适用场景 | 快速构建标准 Agent | 自定义复杂工作流 |
| 控制粒度 | 粗粒度(预设模式) | 细粒度(节点级控制) |
| 学习曲线 | 较低 | 较高 |
| 灵活性 | 中等 | 极高 |
💡 建议学习路径:先学 LangChain 了解 Agent 概念,再学 LangGraph 掌握底层编排。
什么时候该用 LangGraph?
✅ 适合使用的场景
- 多步骤的复杂 Agent(不是简单的一问一答)
- 需要人工介入审核的流程
- 长时间运行的任务(可能跨越多个会话)
- 需要清晰追踪每一步执行的场景
- 生产环境部署,需要高可靠性
❌ 不太需要的场景
- 简单的问答机器人(直接用 LangChain 的 Agent 就够了)
- 原型验证阶段(先跑通再说)
- 没有复杂流程控制需求的应用
总结对比表
| 核心概念 | 一句话解释 | 餐厅类比 |
|---|---|---|
| StateGraph | 整个工作流程的蓝图 | 后厨 SOP 手册 |
| Node | 执行具体任务的函数 | 各个工位(洗菜/炒菜/摆盘) |
| Edge | 节点之间的流转关系 | 传送带 |
| State | 流程中传递的数据包 | 订单小票 |
| Checkpointer | 状态持久化工具 | 订单追踪系统 |
核心要点回顾
- LangGraph 是 Agent 编排框架:专注于让你设计的流程跑得稳、跑得久、跑得清楚
- 核心模式:定义状态 → 创建节点 → 连接边 → 编译执行
- 五大优势:持久执行、人机协作、全面记忆、调试支持、生产就绪
- 与 LangChain 的关系:LangGraph 更底层、更灵活,LangChain 更高层、更便捷
- 适用场景:复杂多步骤任务、需要人工介入、生产环境高可靠性需求
下一步学习
恭喜你了解了 LangGraph 的核心概念!接下来:
- 📦 02-环境安装与配置:安装 LangGraph 并配置开发环境
- 🚀 03-快速开始:动手构建你的第一个完整 Agent
- 🖥️ 04-本地服务运行:把 Agent 变成可调用的 API 服务
📅 更新时间:2026-02-22