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

故障排除

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