不要将 LangGraph 仅仅视为更长的链
不要再把 LangGraph 看作是步骤更多的 LangChain 了。这种错误会导致 Agent 失效。
LangGraph 适用于需要状态 (state)、分支 (branches)、工具调用 (tool calls) 和人工审批 (human approval) 的工作流。它适用于那些必须在不重启的情况下从错误中恢复的 Agent。
如果你要使用它,必须首先定义三件事:状态 (state)、中断 (interrupts) 和恢复 (recovery)。
第一个边界:State Schema
对于单个 Prompt,边界是文本。对于 LangGraph,边界是 State schema。你必须决定:
- 哪些字段在节点之间传递。
- 节点更新哪些字段。
- 并行分支如何合并值。
- 哪些值进入检查点 (checkpoint)。
- 哪些值绝不能持久化。
Reducer 在这里至关重要。如果你没有设置合适的规则来追加消息,你的并行工作将会丢失数据。
从小处着手。构建一个仅包含一个 schema、一个节点和一个 reducer 的图。如果你连这都做不到,那么增加工具只会掩盖你的错误。
运行时边界
在调用 compile() 之前,你的图仅仅是一个描述。调用 compile() 之后,运行时 (runtime) 开始接管。
当图运行失败时,不要只盯着节点看。请检查以下四点:
- State schema 是否允许该节点写入该键 (key)?
- 节点是否返回了有效的 State 字段?
- Reducer 是否正确合并了数据?
- 条件边 (conditional edge) 是否有退出路径?
人机协同 (Human In The Loop)
不要将人工审批视为一种 UI 功能。要将其视为一种图契约 (graph contract)。
一个可靠的模式如下所示:
- 模型提议进行工具调用。
- 图触发中断。
- 人工审批或编辑该操作。
- 图从该精确点恢复运行。
这使得 Agent 具有可恢复性,而不仅仅是响应式。
冒烟测试清单
在进入生产环境之前,请运行此测试:
- 使用一个不含生产数据的临时目录。
- 定义一个最小化的 State。
- 编写一个仅返回有效字段的节点。
- 使用 reducer 来处理追加操作。
- 在工具操作之前添加一个中断。
- 添加一个检查点管理器 (checkpointer)。
- 强制发生故障并验证恢复行为。
如果这条路径失败了,不要增加更多工具。问题出在你的运行时边界。
LangGraph 并非用于一次性的模型调用。当你的 AI 需要执行可检查、可暂停且可审查的多步工作时,才应使用它。
Optional learning community: https://t.me/GyaanSetuAi
