Skip to main content
此错误在预构建的 create_agent 中触发,当 call_model 图节点接收到格式错误的消息列表时。具体来说,当存在带有 tool_callsAIMessages(LLM 请求调用工具),但没有对应的 ToolMessage(返回给 LLM 的工具调用结果)时,消息列表即为格式错误。 您看到此错误可能有以下几个原因:
  1. 您在调用图时手动传入了格式错误的消息列表,例如 graph.invoke({'messages': [AIMessage(..., tool_calls=[...])]})
  2. 图在接收到 tools 节点的更新(即 ToolMessage 列表)之前被中断, 且您使用了非 None 或非 ToolMessage 的输入调用它, 例如 graph.invoke({'messages': [HumanMessage(...)]}, config)。 此中断可能由以下方式之一触发:
    • 您在 create_agent 中手动设置了 interrupt_before = ['tools']
    • 某个工具抛出了未被 ToolNode ("tools") 处理的错误

故障排除

要解决此问题,您可以执行以下操作之一:
  1. 不要使用格式错误的消息列表调用图
  2. 在发生中断(手动或由于错误)的情况下,您可以:
  • 提供与现有工具调用相匹配的 ToolMessage 对象,并调用 graph.invoke({'messages': [ToolMessage(...)]})注意:这会将消息追加到历史记录中,并从 START 节点重新运行图。
    • 手动更新状态并从中断处恢复图的运行:
      1. 使用 graph.get_state(config) 从图状态中获取最新消息列表
      2. 修改消息列表,从 AIMessages 中移除未响应的工具调用
或添加带有与未响应工具调用相匹配的 tool_call_idsToolMessage 对象 3. 使用修改后的消息列表调用 graph.update_state(config, {'messages': ...}) 4. 恢复图的运行,例如调用 graph.invoke(None, config)