createAgent 中触发,当 callModel 图节点接收到格式错误的消息列表时。具体来说,当存在带有 tool_calls(LLM 请求调用工具)的 AIMessage,但没有对应的 ToolMessage(返回给 LLM 的工具调用结果)时,即为格式错误。
您看到此错误可能有几个原因:
- 您在调用图时手动传递了格式错误的消息列表,例如
graph.invoke({messages: [new AIMessage({..., tool_calls: [...]})]}) - 图在接收到来自
tools节点的更新(即ToolMessage列表)之前被中断,并且您使用非空或非 ToolMessage 的输入调用了它,例如graph.invoke({messages: [new HumanMessage(...)]}, config)。此中断可能由以下方式之一触发:- 您在
createAgent中手动设置了interruptBefore: ['tools'] - 其中一个工具引发了
ToolNode("tools")未处理的错误
- 您在
故障排除
要解决此问题,您可以执行以下操作之一:- 不要使用格式错误的消息列表调用图
- 在中断(手动或由于错误)的情况下,您可以:
- 提供与现有工具调用匹配的
ToolMessage对象,并调用graph.invoke({messages: [new ToolMessage(...)]})。注意:这将把消息附加到历史记录中,并从 START 节点运行图。 - 手动更新状态并从中断处恢复图:
- 使用
graph.getState(config)从图状态获取最近的消息列表 - 修改消息列表,要么从 AIMessages 中移除未应答的工具调用,要么添加
toolCallId与未应答工具调用匹配的ToolMessage对象 - 使用修改后的消息列表调用
graph.updateState(config, {messages: ...}) - 恢复图,例如调用
graph.invoke(null, config)
- 使用
- 提供与现有工具调用匹配的
将这些文档连接到 Claude、VSCode 等,通过 MCP 获取实时答案。

