LangGraph 00:系列概要
前言
LangChain 的 create_agent 能快速拼出「模型 + 工具」循环。
一旦要自定义状态、并行分支、人工审批或可恢复长任务,就要直接操作 LangGraph 的状态图。
本系列从手写 StateGraph 讲到工具、检查点、HITL、流式、子图,最后用工作流模式收束。
本文不写可运行代码,只说明后续各篇讲什么、适合什么时候读。
动手环境、Coding Plan 与最小图见下一篇 《LangGraph 01:生态与环境》。
怎么读
建议按编号顺序读:01 到 04 打底,05、06 接上动态路由与工具,07 再谈循环上限。
08 之后按任务跳读即可。
- 只要标准 Agent:先看 LangChain 系列;本系列补手写图时,工具看 06,循环上限看 07。
- 要可恢复会话或跨进程落库:08 检查点,09 时光旅行,10 Store。
- 要人点头再继续:11 动态中断,12 静态闸门;要在浏览器里点选 resume:16 Studio。
- 要拆大图或套工作流形状:14、15;要多个角色分工:18 多智能体。
- 要更短的线性写法:19 功能式 API;要把图接给任意前端或上生产:20 部署上线。
示例统一对接火山方舟 Coding Plan,Python 3.12+,依赖用 uv。
与 LangChain 系列可共用同一套 .env。
图基础
01 生态与环境
对比 LangGraph 与 create_agent 的分工。
用 uv 装依赖、配置 Coding Plan,跑通一个不调 LLM 的最小 StateGraph。
从这里开始动手。
02 StateGraph 基础
状态怎么定义、节点返回的局部更新怎么合并。
覆盖 TypedDict、dataclass、Pydantic,以及 Annotated 与自定义 reducer。
本篇仍可不调模型。
03 消息与多 Schema
对话图几乎都围绕 messages。
讲解 add_messages、Overwrite、输入/输出 Schema 与私有状态,并用 MessagesState 接上模型。
04 边与条件路由
图的跳转:固定边、并行扇出、条件边、path_map,以及 defer 汇合。
最后用 LLM 做一个内容类型路由示例。
控制与工具
05 Send 与 Command
编译期边不够用时,用 Send 在运行时按列表派生 N 个同构任务。Command 把状态更新和 goto 写在同一个返回值里。
含扇入归并与 MapReduce 词频示例。
06 工具调用
工具如何定义、如何挂到运行时、按场景怎么选。
默认可抄路径是 @tool + bind_tools + ToolNode;再补并行调用、手写节点、包装与写入状态。
07 循环重试与缓存
「模型 ⇄ 工具」多轮往返,以及如何避免把递归跑爆。
覆盖条件边 / Command 循环、RemainingSteps、RetryPolicy 与节点缓存。
最小工具闭环见 06,本篇侧重循环与韧性。
记忆
08 Checkpoint 持久化
给图加上 checkpointer 和 thread_id,同一会话才能续跑。
查询 get_state / get_state_history;可选 PostgresSaver,连接串从 DB_URL 读取。
09 时光旅行
在检查点上做错误恢复、replay 与 fork。
仍是同一条会话时间线,不涉及跨线程档案。
10 Store 与 Context
Store 是跨线程长期键值,演示 InMemoryStore 与 PostgresStore。
请求级、不应进检查点的数据用 Runtime context。
人机协同
11 HITL 人机协同
节点里 interrupt() 暂停,再用 Command(resume=...) 按同一线程续跑。
覆盖审批、编辑、并行多中断,以及检查点上的分步恢复。
可视化联调见 16。
12 静态断点
编译期声明 interrupt_before / interrupt_after,适合调试或固定闸门。
恢复用 invoke(None) 逐步推进。
输出与组合
13 流式输出
stream / astream 与 stream_mode:values、updates、messages、custom。
以及 stream_writer 和 astream_events。
14 子图
把一张图嵌进另一张。
四种模式:子图当节点、checkpointer 共享、子图内 interrupt、跨图 Command.PARENT + goto。
15 工作流模式
用短示例串常见形状:提示链、并行、路由、编排-工人、评估-优化、最小工具 Agent。
当作本系列收束对照表,细节回前面各篇。
开发工具
16 Studio 接入
旧版桌面安装包已停更。
用 langgraph-cli 起本地服务器,在浏览器 LangSmith Studio 里挂图、处理 interrupt 与 resume。
协议仍以 11 为准,本篇只讲接入与界面联调。
17 自建中断面板
产品不能把审批人绑在 LangSmith Studio 上。
用同一套 interrupt / resume 接到自有后端和对话页:选「是」通过,选「否」重写。
多智能体
18 多智能体协作
把职责拆成多个 Agent:Supervisor 中心编排与 Handoff(Swarm)互相转手。
共享 checkpointer + thread_id 让多智能体会话可续聊。
功能式 API
19 功能式 API
用 @task 与 @entrypoint 以函数式写法组织图:yield 即等待,天然并行。
覆盖流式、HITL 与 Store,适合线性/并行,复杂路由仍用 StateGraph。
上线
20 部署上线
langgraph.json 声明入口,本地起 LangGraph Server,走 REST 与 SSE 流式。
配 Postgres 持久化,再 langgraph up 或自托管镜像上线。
总结
- 00 只负责地图;动手从 01 开始。
- 01~04 是图的语法;06 是工具;08 是会话记忆,09 是时间线操作,10 是跨线程档案。
- 15 是总复习;标准循环可走
create_agent,自定义图再回 06 与 07。 - 浏览器里联调 HITL 看 16;产品里自建审批页看 17。
- 多角色分工看 18;线性/并行图用功能式写法看 19。
- 接任意前端与上生产看 20;REST 协议以此为准。