跳到内容

无效聊天记录

call_model图节点收到格式错误的消息列表时,预构建的create_react_agent会抛出此错误。具体来说,当存在带有tool_callsAIMessages(LLM请求调用工具)但没有相应的ToolMessage(工具调用结果返回给LLM)时,其格式是错误的。

您看到此错误的原因可能有以下几点:

  1. 您在调用图时手动传入了格式错误的消息列表,例如graph.invoke({'messages': [AIMessage(..., tool_calls=[...])]})
  2. 图在从tools节点(即ToolMessages列表)接收更新之前被中断,并且您使用非None或非ToolMessage的输入调用了它,例如graph.invoke({'messages': [HumanMessage(...)]}, config)。此中断可能通过以下方式之一触发:
    • 您在create_react_agent中手动设置了interrupt_before = ['tools']
    • 其中一个工具引发了错误,但该错误未被ToolNode ("tools")处理。

故障排除

要解决此问题,您可以执行以下操作之一:

  1. 不要使用格式错误的消息列表来调用图
  2. 如果发生中断(手动或由于错误),您可以:

    • 提供与现有工具调用匹配的ToolMessages,并调用graph.invoke({'messages': [ToolMessage(...)]})注意:这会将消息附加到历史记录中,并从START节点运行图。
    • 手动更新状态并从中断处恢复图

      1. 使用graph.get_state(config)从图状态中获取最新消息列表
      2. 修改消息列表,删除AIMessages中未响应的工具调用,或添加带有与未响应工具调用匹配的tool_call_ids的ToolMessages
      3. 使用修改后的消息列表调用graph.update_state(config, {'messages': ...})
      4. 恢复图,例如调用graph.invoke(None, config)