Skip to content

无效聊天历史记录

此错误在预构建的 create_react_agent 中触发,当 call_model 图节点接收到一个格式不正确的消息列表时。具体来说,当存在带有 tool_calls(LLM 请求调用工具)的 AIMessages(AI 消息),但没有相应的 ToolMessage(工具调用结果返回给 LLM)时,消息列表被认为是格式不正确的。

你可能会遇到此错误的原因有以下几种:

  1. 在调用图时手动传递了一个格式不正确的消息列表,例如 graph.invoke({'messages': [AIMessage(..., tool_calls=[...])]})
  2. 图在接收到来自 tools 节点(即工具消息列表)的更新之前被中断,并且你用一个不是 NoneToolMessage 的输入调用了它,例如 graph.invoke({'messages': [HumanMessage(...)]}, config)。 这种中断可能是通过以下方式之一触发的:
    • 你手动设置了 interrupt_before = ['tools']create_react_agent
    • 工具之一触发了一个未被 ToolNode(“tools”)处理的错误

故障排除

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

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

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

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

Comments