INVALID_CONCURRENT_GRAPH_UPDATE¶
一个 LangGraph StateGraph
的状态接收到来自多个节点的并发更新,而其状态属性不支持此操作。
这种情况可能发生在您的图中使用扇出(fanout)或其他并行执行时,并且您定义了一个像这样的状态值:
const StateAnnotation = Annotation.Root({
someKey: Annotation<string>,
});
const graph = new StateGraph(StateAnnotation)
.addNode(...)
...
.compile();
如果上述图中的一个节点返回 { someKey: "someStringValue" }
,这将用 "someStringValue"
覆盖 someKey
的状态值。然而,如果多个节点(例如在单个步骤中的扇出)返回 "someKey"
的值,图将抛出此错误,因为如何更新内部状态存在不确定性。
为了解决这个问题,您可以定义一个组合多个值的归约器(reducer):
const StateAnnotation = Annotation.Root({
someKey: Annotation<string[]>({
default: () => [],
reducer: (a, b) => a.concat(b),
}),
});
这将允许您定义逻辑来处理从并行执行的多个节点返回的相同键。
故障排除¶
以下建议可能有助于解决此错误:
- 如果您的图并行执行节点,请确保您已经为相关状态键定义了归约器(reducer)。