Phase 2 从第 8 篇开始,讲了为什么需要图、五要素、State、Node/Edge、条件 Edge、Reducer、Checkpoint、HITL、多 Agent。概念拆得很细,但还没看它们怎么合在一个真实 Agent 里

这一篇做 Phase 2 的实战收束——用一个「带工具的客服 Agent」例子,把五要素全部串起来。看完这篇,你对 LangGraph 的理解就闭环了。

要做的 Agent:能查订单、能回答、能请人审批

假设做一个客服 Agent,需求:

  1. 接收用户问题
  2. 模型判断:能直接答的直接答;要查订单的去查
  3. 查订单时,如果涉及退款(敏感操作),暂停等人审批
  4. 工具结果回灌模型,继续判断
  5. 满意了输出最终回答

这个例子不大,但把五要素全用上了。

第一步:定义 State

先想清楚这个 Agent 要在节点间传什么:

  • messages:对话历史(必须,追加)
  • user_query:当前用户问题
  • order_info:查到的订单信息

这个 Agent 的 State

注意 messages 用追加 reducer——第 13 篇强调过,对话历史必须追加,否则记忆断。

第二步:定义 Node

按职责拆分节点(第 11 篇:一个 node 干一件事):

  • 模型节点:调 LLM,判断要不要调工具
  • 工具节点:执行查订单工具
  • (判断「要不要审批」放条件 edge,不放 node)

这个 Agent 的 Node

第三步:连 Edge(含条件 edge)

这是关键——用条件 edge 做分支(第 12 篇):

START → 模型节点
模型节点 →[条件: 有工具调用?]→
    有 → 工具节点 →[条件: 涉及退款?]→
            是 → interrupt 暂停 → 人审批 → 回模型节点
            否 → 回模型节点
    没有 → END

这个 Agent 的完整图

这张图把前面学的全用上了:条件 edge 分流、循环(工具回模型)、interrupt 暂停(HITL)。

第四步:编译并挂 Checkpointer

图定义好后,编译时挂上持久化 checkpointer(第 14 篇):

graph.compile(checkpointer=PostgresSaver(...))

为什么要挂?因为这个 Agent 有 interrupt(等人审批),暂停几小时,内存 checkpointer 早没了。HITL 必须配持久化 checkpointer(第 15 篇)。

跑起来的完整过程

用户问「帮我查下订单 A123 要退款」,Agent 跑起来:

  1. super-step 1:进模型节点。模型判断「要查订单」→ 返回工具调用。state 存档。
  2. super-step 2:条件 edge 分流到工具节点。查到订单 A123。state 存档。
  3. super-step 3:条件 edge 判断「涉及退款」→ interrupt 暂停。state 存档,等审批。
  4. (人在前端点「批准」)
  5. 恢复:从 checkpoint 续跑,带着批准信息回模型节点。
  6. super-step 4:模型节点生成退款说明。条件 edge 判断「没有工具调用」→ END。

跑起来的完整过程

这一个过程,把五要素(State/Node/Edge/Reducer/Super-step)+ Checkpoint + HITL 全用上了。这就是一个生产级 Agent 的完整运作。

回顾 Phase 2

这个例子串起了 Phase 2 的全部内容。回顾这 10 篇:

讲了什么 在这个 Agent 里体现
08 为什么需要图 这个流程有循环有分支,直线做不了
09 五要素全景 就是这张图的骨架
10 State messages + order_info
11 Node/Edge 模型节点、工具节点、各种连线
12 条件 Edge 「有工具调用吗」「涉及退款吗」两个分支
13 Reducer messages 用追加
14 Checkpoint 每步存档,能恢复
15 HITL 退款前 interrupt 等审批
16 多 Agent (这个例子是单 Agent,复杂了可拆)

收束:从懂概念到能搭图

这一篇用实战收束了 Phase 2。现在你应该能:看懂任何一张 LangGraph 图,也能把自己的需求拆成 State/Node/Edge,搭出一个能跑的 Agent。

但这套图是手动搭建的——你得自己定义 state、写 node、连 edge。下一篇开始 Phase 3,讲 LangChain 的应用层怎么把这些封装成开箱即用的 Agent:用 create_agent 一行代码搭出标准 Agent,用 middleware 定制它。Phase 3 是「从会搭图到会用封装」的进阶。


关于十三Tech

我是十三,All in AI Agent 方向的架构师,专注 AI 工程实践。我相信 AI 是程序员的最佳搭档。

如果你想跟完这套「图解 LangChain」,欢迎关注公众号 「十三Tech」。全系列 42 篇,会按认识基础、LangGraph 状态机、Agent 与 middleware、RAG 检索、Tools/MCP/记忆、生产化收束这条线更新。

十三Tech公众号二维码