Skip to main content
此错误在预构建的@[createAgent][create_agent]中引发,当callModel图节点接收到格式不正确的消息列表时。具体来说,当存在AIMessage个带有tool_calls(LLM请求调用工具)而没有相应@[ToolMessage](工具调用结果返回给LLM)的情况时,消息列表格式不正确。 可能存在几个原因导致您看到此错误:
  1. 在调用图时,您手动传递了一个格式不正确的消息列表,例如 graph.invoke({messages: [new AIMessage({..., tool_calls: [...]})]})
  2. 在从 tools 节点(即 @[ToolMessage] 的列表)接收更新之前,图被中断了,并且您使用了一个非 null 或 ToolMessage 的输入来调用它,例如 graph.invoke({messages: [new HumanMessage(...)]}, config)。这种中断可能是以下方式之一触发的:
    • 您在 createAgent 中手动设置了 interruptBefore: ['tools']
    • 其中一个工具抛出了一个未被 ToolNode 处理的错误("tools")。

故障排除

为了解决这个问题,您可以执行以下操作之一:
  1. 不要使用格式错误的消息列表调用图
  2. 在发生中断(手动或由于错误)的情况下,您可以:
  • 提供 ToolMessage 对象以匹配现有的工具调用,并调用 graph.invoke({messages: [new ToolMessage(...)]})注意:这将把消息添加到历史记录中,并从起始节点运行图。
    • 手动更新状态并从中断处恢复图:
      1. 使用 graph.getState(config) 从图状态获取最近的消息列表
      2. 修改消息列表,从 AIMessages 中移除未回答的工具调用
或添加具有匹配未回答工具调用的 toolCallIdToolMessage 对象 3. 使用修改后的消息列表调用 graph.updateState(config, {messages: ...}) 4. 恢复图,例如调用 graph.invoke(null, config)