Skip to content

第 1 章 导论:Agent 范式、框架定位与生态 ​

1.1 从单次 LLM 调用到 Agent 范式 ​

大语言模型的基础调用形态是一次性的请求-响应:输入一段提示词,模型返回一段文本。这种模式适用于翻译、摘要、改写等单轮任务,但在需要与外部环境交互、多步推理、根据反馈调整策略的场景中存在天然局限。ReAct(Reasoning + Acting)范式将"观察(Observe)—思考(Think)—行动(Act)"组织为一个循环:模型先根据当前状态产生思考,再选择并执行一个动作(调用工具、读取数据等),获得观察结果后再次进入思考,直到任务完成。

在工程落地中,直接使用 while True 手写循环存在若干不可控因素:循环边界与终止条件散落在业务代码中,难以做统一的超时与递归深度控制;中间状态没有结构化承载,跨步骤的上下文依赖容易出错;缺少可持久化的快照点,进程崩溃后无法从中断处恢复;人类介入(Human-in-the-Loop, HITL)没有一等公民支持,必须在循环内部插入阻塞等待;并发节点、并行工具调用等需求需要手动写 asyncio 调度。这些问题共同催生了专门的 Agent 编排框架。

1.2 Agent 编排框架的分类 ​

当前主流的 Agent 编排框架可以按抽象方式划分为四类。

DAG(有向无环图)框架将工作流建模为节点与有向边组成的无环图,代表是 LangChain Expression Language(LCEL)、LlamaIndex Query Pipelines 早期版本。其优势是执行路径可预测、易于流式与追踪,劣势是无法表达循环,多轮推理需要在外层再套循环。

状态机框架以显式的状态(State)和节点间的转移为核心,天然支持循环与条件跳转,代表是 LangGraph 与 LlamaIndex Workflows。状态机框架在图层面提供持久化、中断与恢复能力,是工程化 Agent 的主流方向。

对话式框架以多轮对话的 turn 为基本调度单位,将 Agent 视为一个可以持续接收消息的对话参与者,代表是 AutoGen 的早期 ConversableAgent。该模型在多角色聊天场景下直观,但对非对话形态的工作流(如批处理、数据流水线)表达力较弱。

角色驱动框架以 Agent 的角色、目标、分工为抽象单元,关注"谁来做"而非"执行到哪一步",代表是 CrewAI。该类框架在多智能体协作的叙事层表达力强,但底层控制粒度较粗,对精确状态管理与中断恢复的支持相对有限。

1.3 LangGraph 的定位 ​

LangGraph 被定位为一个低级别(low-level)编排运行时:它不提供高层的 Agent 角色模板,而是提供一套最小但完备的图执行原语——节点(Node)、边(Edge)、状态(State)、通道(Channel)、检查点(Checkpoint)、中断(Interrupt),让使用者以有向图的方式建模任意循环工作流。

其执行模型基于 Google Pregel 论文提出的 BSP(Bulk Synchronous Parallel,整体同步并行)模型,将一次图执行拆分为若干个"超步(Superstep)":每个超步内选中的节点并发执行,执行完毕后在屏障处同步,将写入合并到状态中再进入下一个超步。基于该模型,LangGraph 提供四项核心能力:

  1. 状态(State):通过类型化 Schema 声明全局共享状态,并通过 reducer 规则声明字段的合并语义;
  2. 循环(Cycles):边可以回指到已执行过的节点,天然支持 ReAct 循环、反思循环等;
  3. 持久化(Persistence):每个超步结束后自动写入 Checkpoint,支持断点续跑、时间旅行调试;
  4. 中断(Interrupt):在超步边界挂起执行,等待人类或外部系统输入后恢复,用于审批、补充信息等 HITL 场景。

LangGraph 与 LangChain 的关系需要明确区分。LangChain 是组件库,提供模型封装、提示词模板、工具、Retriever 等可复用积木;LangGraph 是编排运行时,负责把这些(或其他任意)积木组装成可循环、可持久化、可中断的工作流。LangGraph 可以独立使用,节点函数可以直接写原生 Python,不强制依赖 LangChain;但在接入模型与工具时,复用 LangChain 的组件生态可以显著降低样板代码量。

适用场景与不适用场景对比如下:

维度适用不适用
流程长度长流程、多步骤、含循环的工作流(如研究助手、代码生成-执行-修复)单次问答、简单 RAG、一进一出的模型调用
人类介入需要审批、确认、补充信息的业务流程完全自动化、无人值守的短链路任务
协作模式多智能体协作、Supervisor-Worker 分工单一模型调用即可完成的任务
可靠性要求需要断点续跑、故障恢复、状态可审计的生产流程一次性脚本、临时原型
延迟要求秒级到分钟级可接受亚秒级极高并发低延迟场景(BSP 屏障同步会引入固定开销)

1.4 生态全景与版本 ​

LangGraph 生态由以下包与服务构成:

  • langgraph:主包,提供 StateGraph、Pregel 运行时、Checkpoint 机制、Command 原语等核心能力;
  • langgraph-checkpoint-sqlite / postgres / redis:检查点持久化后端,分别基于 SQLite、PostgreSQL、Redis 存储 Superstep 快照;
  • langgraph-prebuilt:预构建的常用组件,包括 create_react_agent、ToolNode、ChatPromptTemplate 适配层等;
  • langgraph-cli:命令行工具,提供 langgraph dev(启动 LangGraph Studio 本地调试服务)、langgraph build 等命令;
  • langgraph-sdk:运行时客户端 SDK,用于从外部进程以 HTTP/WebSocket 方式调用部署好的图;
  • LangSmith:可观测性平台,提供 trace、评估、prompt 管理,与 LangGraph 深度集成;
  • LangGraph Platform / Cloud:托管部署服务,提供长时运行线程、cron 调度、API 网关等生产能力。

版本线方面,LangGraph 于 2024 年 4 月首次公开发布,2026 年 1 月发布 1.0 稳定版本。本手册基于 LangGraph 1.2.x(2026 年稳定版),Python 版本要求 ≥ 3.9,推荐使用 3.11 或 3.12。

1.5 同类框架对比 ​

维度LangGraph 1.2.xAutoGen (MAF) 0.4+CrewAILlamaIndex WorkflowsSemantic Kernel
抽象层级低级别运行时多 Agent 消息传递角色/任务驱动事件驱动工作流插件/规划器栈
控制粒度细(节点/边/Channel)中(消息/Agent 句柄)粗(Task/Agent)中(Step/Event)中(Kernel/Function)
循环支持原生一等公民通过对话 turn 实现通过 Task 回指通过事件回环支持通过 Plan 迭代支持
持久化Checkpoint 一等公民(SQLite/Postgres/Redis)有限需自行实现社区扩展通过 Memory Store
HITLinterrupt/resume 原生通过 Human-in-the-loop AgentTask 级 callback事件中断点Kernel 事件钩子
多智能体模式Supervisor/Wallet/Map-Reduce 等可自由构图群聊/选择发言者层级/顺序/并行EventBus 式Planner/Hand-off
部署形态Library + Platform/Cloud 自托管Library + StudioLibraryLibraryLibrary + Azure
学习曲线中(需理解 BSP/Channel)中低中中
典型场景生产级长流程 Agent、可审计工作流研究型多 Agent 对话原型/演示级多角色协作RAG+工作流结合.NET/Azure 企业栈

本章小结 ​

LangGraph 将 Agent 执行抽象为基于 BSP/Pregel 模型的有向状态图,以显式 State、循环、持久化、中断为核心能力,定位在"编排运行时"而非"Agent 模板库"。它复用 LangChain 的组件生态但不强依赖 LangChain,适合长流程、需要 HITL、多智能体协作与断点续跑的生产场景,不适用于单次问答与极低延迟链路。

常见错误 ​

  1. 把 LangGraph 当成 LangChain 的一部分。现象:认为必须深度使用 LangChain 的 Chain/Tool 才能写 LangGraph。原因:两个包由同一团队维护,早期文档容易混淆。修复:节点函数可以是任意 Python Callable,LangChain 仅作为可选组件源。
  2. 在简单任务上过度引入。现象:单次 RAG 问答也画了一张 5 节点图,代码复杂度高于直接调用链。原因:误将框架视为通用替换。修复:对照 1.3 节的适用场景表,短链路优先用 LCEL 或直接调用模型。
  3. Python 版本不匹配。现象:安装或导入时出现语法错误、类型错误。原因:使用 3.8 或更低版本。修复:升级到 3.11/3.12,并在虚拟环境中锁定解释器。

生产建议 ​

  • 项目初始化时即选定 Checkpoint 后端:开发期使用 SQLite,生产期使用 PostgreSQL,并通过环境变量切换;
  • 从第一天起接入 LangSmith 采集 trace,便于后续复盘超步耗时与节点异常;
  • 长流程业务在图设计阶段就标注 HITL 节点位置,使用 interrupt 而非在节点内阻塞等待输入;
  • 选型阶段对照 1.5 节对比表,若团队以 .NET 为主栈可评估 Semantic Kernel,若主要是快速原型且角色分工明确可短期使用 CrewAI,生产级可控编排优先 LangGraph。