LangGraph 00:系列概要

前言

LangChain 的 create_agent 能快速拼出「模型 + 工具」循环。
一旦要自定义状态、并行分支、人工审批或可恢复长任务,就要直接操作 LangGraph 的状态图。
本系列从手写 StateGraph 讲到工具、检查点、HITL、流式、子图,最后用工作流模式收束。
本文不写可运行代码,只说明后续各篇讲什么、适合什么时候读。
动手环境、Coding Plan 与最小图见下一篇 《LangGraph 01:生态与环境》。

怎么读

建议按编号顺序读:01 到 04 打底,05、06 接上动态路由与工具,07 再谈循环上限。
08 之后按任务跳读即可。

  1. 只要标准 Agent:先看 LangChain 系列;本系列补手写图时,工具看 06,循环上限看 07。
  2. 要可恢复会话或跨进程落库:08 检查点,09 时光旅行,10 Store。
  3. 要人点头再继续:11 动态中断,12 静态闸门;要在浏览器里点选 resume:16 Studio。
  4. 要拆大图或套工作流形状:14、15;要多个角色分工:18 多智能体。
  5. 要更短的线性写法: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 或自托管镜像上线。

总结

  1. 00 只负责地图;动手从 01 开始。
  2. 01~04 是图的语法;06 是工具;08 是会话记忆,09 是时间线操作,10 是跨线程档案。
  3. 15 是总复习;标准循环可走 create_agent,自定义图再回 06 与 07。
  4. 浏览器里联调 HITL 看 16;产品里自建审批页看 17。
  5. 多角色分工看 18;线性/并行图用功能式写法看 19。
  6. 接任意前端与上生产看 20;REST 协议以此为准。