跳到主要内容
当预构建的 @[createAgent][create_agent] 中的 callModel 图节点收到格式错误的会话列表时,会引发此错误。具体来说,当存在带有 tool_callsAIMessage(LLM 请求调用工具)而没有相应的 @[ToolMessage](工具调用返回给 LLM 的结果)时,会话列表是格式错误的。 您可能会看到此错误的原因有以下几点:
  1. 您在调用图时手动传递了格式错误的会话列表,例如 graph.invoke({messages: [new AIMessage({..., tool_calls: [...]})]})
  2. 图在收到 tools 节点的更新(即 @[ToolMessage] 列表)之前被中断,并且您使用非空或非 ToolMessage 的输入调用了它,例如 graph.invoke({messages: [new HumanMessage(...)]}, config)。此中断可能是以下方式之一触发的
    • 您在 createAgent 中手动设置了 interruptBefore: ['tools']
    • 其中一个工具引发了错误,而该错误未由 ToolNode ("tools") 处理

故障排除

要解决此问题,您可以执行以下操作之一
  1. 不要使用格式错误的会话列表调用图
  2. 如果发生中断(手动或由于错误),您可以
  • 提供与现有工具调用匹配的 ToolMessage 对象,并调用 graph.invoke({messages: [new ToolMessage(...)]})注意:这将把消息附加到历史记录中,并从 START 节点运行图。
    • 手动更新状态并从中断处恢复图
      1. 使用 graph.getState(config) 从图状态获取最近的消息列表
      2. 修改消息列表,以从 AIMessages 中删除未答复的工具调用
或添加带有 toolCallIdToolMessage 对象,其 toolCallId 与未答复的工具调用匹配。3. 使用修改后的消息列表调用 graph.updateState(config, {messages: ...})。4. 恢复图,例如调用 graph.invoke(null, config)
以编程方式连接这些文档到 Claude、VSCode 等,通过 MCP 获取实时答案。
© . This site is unofficial and not affiliated with LangChain, Inc.