Skip to content

课 1 · Graph Workflow vs Chain

本课目标

理解 Chain、ReAct、Graph Workflow 三种 Agent 架构的区别,以及 LangGraph 用图来组织 Agent 状态的核心动机。

先建立直觉:Chain 是流水线,ReAct 是循环,Graph 是有记忆的状态机。

三种 Agent 架构

Chain(顺序调用)

最简单:A → B → C,每步拿上一步的输出作为输入。

typescript
// 典型 Chain
const result1 = await queryRewrite(question)
const chunks = await retrieve(result1)
const answer = await generate(chunks)

优点:简单直观,调试容易。
局限:没有循环,遇到需要多步推理或回溯的情况束手无策。

ReAct(思考-行动循环)

基础课模块 5 实现的模式:Reason → Act → Observe → Reason → ...

typescript
// 基础课 ReAct
while (!done) {
  const decision = await reasonStep(messages)  // 模型决定下一步
  if (decision.type === 'tool_call') {
    const result = await executeTool(decision)  // 执行工具
    messages.push({ role: 'tool', content: result })
  } else {
    done = true
  }
}

优点:支持多步工具调用,能处理动态任务。
局限:状态只有 messages 数组,结构简单但不灵活;没有分支;调试困难(不知道 Agent 在哪步出了问题)。

Graph Workflow(状态图)

LangGraph 的核心模型:

优点

  • 可观测:每个 Node 的输入输出都记录在状态里,出问题能精确定位到哪步
  • 可中断:任意 Node 执行后可以暂停,等待人工审批再继续
  • 可分支:条件边可以根据状态动态决定走哪条路
  • 可恢复:Checkpoint 记录每步状态,崩溃后可以从断点继续

Graph vs ReAct 的核心区别

ReActGraph Workflow
状态messages 数组结构化 State 对象
流程控制模型决定是否继续明确的 Node + Edge
分支条件边支持多分支
中断恢复不支持Checkpoint 内置支持
调试难(只有消息列表)容易(每步状态快照)

什么时候用 Graph Workflow

不是所有 Agent 都需要 Graph Workflow。判断标准:

  • ✅ 需要中断等待人工审批(如批准操作前暂停)
  • ✅ 需要多分支(如根据问题类型走不同检索策略)
  • ✅ 需要长时任务恢复(进程重启后继续未完成的任务)
  • ✅ 团队需要可视化调试 Agent 执行过程
  • ❌ 简单的单轮问答 → 普通 Chain 足够
  • ❌ 标准 ReAct 工具调用 → AI SDK 的 maxSteps 足够

进阶课的知识库 Agent 用混合方式:外层用 Graph 管理任务类型路由,内层用 ReAct 处理工具调用。

面试追问

Graph Workflow 和普通 Chain 有什么区别?

Chain 是静态的顺序执行,从 A 到 B 到 C,流程在代码里固定。Graph Workflow 是动态状态机:每个 Node 读取当前状态、修改状态,然后由边(可以是条件边)决定下一个 Node。关键区别在于"分支"和"循环"——Chain 做不到,Graph 原生支持。

LangGraph 为什么用 Graph 而不是传统状态机框架?

图的表达能力比顺序代码更强:节点可以任意互连,可以有环(循环),可以有条件分支。同时图结构天然可视化,容易让非技术成员理解 Agent 的决策流程。相比传统状态机框架,LangGraph 专门针对 LLM 场景做了 Reducer、Checkpoint 和 streaming 的集成。

面向前端工程师和独立开发者的 AI 应用工程课程