0%

LangGraph 状态机式编排

LangGraph 状态机式编排

一句话定位:LangGraph 把 Agent 的执行流程从”线性 Chain”升级为”带状态的图(Graph)”,天然支持条件分支、循环和检查点,适合线性 Chain 处理不了的复杂可控流程。

1. 为什么 Chain 不够用

  • LangChain 的 Chain 本质是一条固定顺序的流水线:A → B → C,很难表达”如果 A 的结果满足条件 X 就走 B,否则走 D,并且可能要循环回到 A 重试”这类复杂控制流。
  • Agent 的真实执行往往需要循环(反复调用工具直到任务完成)、分支(根据中间结果选择不同后续动作)、以及在关键节点暂停等待人工确认——这些都是”图”更自然的表达方式,而不是”链”。

2. LangGraph 核心概念

  • 节点(Node):图中的每个处理单元(可以是一次 LLM 调用、一次工具执行、一次条件判断)。
  • 边(Edge):节点间的转移关系,可以是固定的(无条件转移)也可以是条件的(根据上一步状态动态决定下一个节点)。
  • 状态(State):贯穿整个图执行过程、可被各节点读写的共享数据结构,取代了 Chain 里”只能顺序传递”的局限。
  • 检查点(Checkpoint):可以在图执行到某个节点时持久化当前状态,支持中断后恢复、支持人工审核后继续(对应 7.7 的 Human-in-the-loop)。

3. 类比大数据的 DAG 编排

  • LangGraph 的图结构和大数据任务调度的 DAG 编排(1.9)高度同构:节点 ≈ 算子,边 ≈ 依赖关系,状态 ≈ 算子间传递的数据,检查点 ≈ Checkpoint/Savepoint 机制(1.4 Flink 的 Checkpoint)。
  • 区别在于:大数据 DAG 通常是静态的(编译期确定),LangGraph 的边可以是运行时动态决定的(根据 LLM 输出内容选择走哪条边),更接近”动态 DAG”或状态机。

4. 面试落点

  • 能讲清”什么场景该用 LangGraph 而不是简单 Chain”:需要循环、条件分支、或需要人工介入检查点的复杂 Agent 流程。
  • 可迁移话术:直接把大数据 DAG 编排经验类比过来——“我在大数据平台做过的任务依赖编排、失败重试、Checkpoint 恢复,本质上和 LangGraph 的状态机编排是同一套设计哲学,只是执行的节点从数据处理算子换成了 LLM 调用/工具调用”。

参考:LangGraph 官方文档