不要将 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 需要执行可检查、可暂停且可审查的多步工作时,才应使用它。

Source: https://dev.to/doramagic/do-not-treat-langgraph-as-a-longer-chain-define-state-interrupts-and-recovery-first-4n3n

Optional learning community: https://t.me/GyaanSetuAi