D
AI
学习工作台
Agent 开发2026-03-171 分钟阅读

LangGraph 深度解析:状态机驱动的 Agent 编排

深入理解 LangGraph 的节点、边、状态与检查点机制,掌握状态机驱动的 Agent 编排

LangGraphAgent状态机编排记笔记标记疑惑

核心架构:状态机视角

LangGraph 是 LangChain 团队推出的 Agent 编排框架,其核心思想是将 Agent 工作流建模为带状态的有向图。与传统 DAG 不同,LangGraph 的每个节点不仅执行逻辑,还会读写共享的 State 对象,使整个流程具备记忆和分支能力。

节点(Nodes)

节点是图的基本执行单元,通常对应一个函数,接收 state 并返回 state 的更新(或完整替换)。常见节点类型包括:

  • LLM 节点:调用大模型生成回复或规划
  • 工具节点:执行搜索、计算、API 调用
  • 人工节点:暂停等待用户输入(human-in-the-loop)
  • 路由节点:根据条件决定下一跳

边(Edges)

边定义节点间的流转关系:

  • 普通边add_edge(A, B) 表示 A 执行后无条件进入 B
  • 条件边add_conditional_edges(A, router_fn) 根据 router_fn(state) 的返回值决定下一节点
  • 入口与出口add_node 注册节点,通过 set_entry_pointset_finish_point 定义图的入口和出口

状态(State)

State 是贯穿全图的共享数据结构,通常用 TypedDict 或 Pydantic 定义。节点可以:

  • 追加:如 messages 列表追加新消息
  • 覆盖:如更新 current_step 字段
  • 合并:LangGraph 支持 reducer 函数,自定义多节点并发时的状态合并策略

检查点(Checkpointers)

Checkpointer 将图执行过程中的状态快照持久化到存储(内存、Redis、Postgres 等)。这使得:

  • 时间旅行:可以回溯到任意历史步骤重新执行
  • 断点续跑:长时间任务中断后可从上次检查点恢复
  • 人机协作:在 human 节点暂停,用户响应后再从该检查点继续

典型模式

  • ReAct 循环llm → tools → llm 形成循环,通过条件边判断是否继续调用工具或结束
  • 多 Agent 协作:不同节点代表不同 Agent,通过路由在不同专家间切换
  • 子图:将复杂流程封装为子图,作为父图的一个节点调用,实现模块化
  • 小结

    掌握 LangGraph 的 nodes、edges、state 和 checkpointers,是构建可观测、可恢复、可扩展 Agent 系统的关键。其状态机模型天然支持循环与分支,比线性 Chain 更灵活,适合复杂多步任务编排。

    知识卡片

    问题

    LangGraph 中的 StateGraph 与普通 DAG 有何本质区别?

    点击翻转查看答案

    答案

    StateGraph 是带状态的图,每个节点执行后都会更新共享的 State 对象,状态在节点间传递并持久化,支持条件分支和循环,而普通 DAG 通常是无状态的静态流程。

    问题

    Checkpointer 在 LangGraph 中扮演什么角色?

    点击翻转查看答案

    答案

    Checkpointer 负责将图执行过程中的状态快照持久化,支持时间旅行、断点续跑、人机协作(等待用户输入后继续)以及多轮对话的上下文恢复。

    问题

    如何实现 LangGraph 中的条件边(conditional edge)?

    点击翻转查看答案

    答案

    通过 add_conditional_edges 定义路由函数,根据当前 state 的某些字段返回值,决定下一步跳转到哪个节点;常用于多分支决策和循环控制。