Skip to content

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 痛点与解决方案对照


生活化类比:智能餐厅的后厨管理系统

想象你开了一家高档餐厅,后厨有多个工位(洗菜、切菜、炒菜、摆盘),每道菜都需要按顺序经过不同工位:

LangGraph 概念餐厅类比作用
Graph(图)后厨的工作流程图规定了一道菜从原料到上桌要经过哪些步骤
Node(节点)每个工位(洗菜台、炒锅、摆盘区)执行具体的工作任务
Edge(边)工位之间的传送带定义完成一个工位后,下一步去哪个工位
State(状态)每道菜的"订单小票"记录这道菜当前在哪、已经做了什么、还差什么
START / END点单窗口 / 出餐窗口工作流的起点和终点

关键场景演示:

  • 🔌 厨房突然停电了(服务中断)? 因为有"订单小票"(State),来电后可以看到每道菜做到哪一步,接着做就行!
  • 👨‍🍳 主厨想检查一下摆盘(Human-in-the-loop)? 系统可以在摆盘前暂停,等主厨点头后再出餐!

智能餐厅后厨与 LangGraph 概念映射


核心概念详解

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:工作流的终点,相当于"返回最终结果给用户"

LangGraph 核心概念架构图


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"  │
└──────────────────────┘

这段代码的本质就是:

  1. 定义了一个最简单的单节点工作流
  2. 用户消息进来 → 经过一个假的 LLM 处理 → 返回结果
  3. 虽然简单,但展示了 LangGraph 的核心模式:定义状态 → 创建节点 → 连接边 → 编译执行

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:如何选择?

维度LangChainLangGraph
核心定位高层 Agent 抽象底层工作流编排
API 风格createAgent() 一行创建StateGraph 精细控制
适用场景快速构建标准 Agent自定义复杂工作流
控制粒度粗粒度(预设模式)细粒度(节点级控制)
学习曲线较低较高
灵活性中等极高

💡 建议学习路径:先学 LangChain 了解 Agent 概念,再学 LangGraph 掌握底层编排。


什么时候该用 LangGraph?

✅ 适合使用的场景

  • 多步骤的复杂 Agent(不是简单的一问一答)
  • 需要人工介入审核的流程
  • 长时间运行的任务(可能跨越多个会话)
  • 需要清晰追踪每一步执行的场景
  • 生产环境部署,需要高可靠性

❌ 不太需要的场景

  • 简单的问答机器人(直接用 LangChain 的 Agent 就够了)
  • 原型验证阶段(先跑通再说)
  • 没有复杂流程控制需求的应用

总结对比表

核心概念一句话解释餐厅类比
StateGraph整个工作流程的蓝图后厨 SOP 手册
Node执行具体任务的函数各个工位(洗菜/炒菜/摆盘)
Edge节点之间的流转关系传送带
State流程中传递的数据包订单小票
Checkpointer状态持久化工具订单追踪系统

核心要点回顾

  1. LangGraph 是 Agent 编排框架:专注于让你设计的流程跑得稳、跑得久、跑得清楚
  2. 核心模式:定义状态 → 创建节点 → 连接边 → 编译执行
  3. 五大优势:持久执行、人机协作、全面记忆、调试支持、生产就绪
  4. 与 LangChain 的关系:LangGraph 更底层、更灵活,LangChain 更高层、更便捷
  5. 适用场景:复杂多步骤任务、需要人工介入、生产环境高可靠性需求

下一步学习

恭喜你了解了 LangGraph 的核心概念!接下来:


📅 更新时间:2026-02-22

读文档、看源码、写代码,理解 AI Agent 本质 🤖