核心架构:状态机视角
LangGraph 是 LangChain 团队推出的 Agent 编排框架,其核心思想是将 Agent 工作流建模为带状态的有向图。与传统 DAG 不同,LangGraph 的每个节点不仅执行逻辑,还会读写共享的 State 对象,使整个流程具备记忆和分支能力。
节点(Nodes)
节点是图的基本执行单元,通常对应一个函数,接收 state 并返回 state 的更新(或完整替换)。常见节点类型包括:
- LLM 节点:调用大模型生成回复或规划
- 工具节点:执行搜索、计算、API 调用
- 人工节点:暂停等待用户输入(human-in-the-loop)
- 路由节点:根据条件决定下一跳
边(Edges)
边定义节点间的流转关系:
- 普通边:
add_edge(A, B)表示 A 执行后无条件进入 B - 条件边:
add_conditional_edges(A, router_fn)根据router_fn(state)的返回值决定下一节点 - 入口与出口:
add_node注册节点,通过set_entry_point和set_finish_point定义图的入口和出口
状态(State)
State 是贯穿全图的共享数据结构,通常用 TypedDict 或 Pydantic 定义。节点可以:
- 追加:如
messages列表追加新消息 - 覆盖:如更新
current_step字段 - 合并:LangGraph 支持 reducer 函数,自定义多节点并发时的状态合并策略
检查点(Checkpointers)
Checkpointer 将图执行过程中的状态快照持久化到存储(内存、Redis、Postgres 等)。这使得:
- 时间旅行:可以回溯到任意历史步骤重新执行
- 断点续跑:长时间任务中断后可从上次检查点恢复
- 人机协作:在 human 节点暂停,用户响应后再从该检查点继续
典型模式
llm → tools → llm 形成循环,通过条件边判断是否继续调用工具或结束小结
掌握 LangGraph 的 nodes、edges、state 和 checkpointers,是构建可观测、可恢复、可扩展 Agent 系统的关键。其状态机模型天然支持循环与分支,比线性 Chain 更灵活,适合复杂多步任务编排。