Skip to content

无效聊天历史记录

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

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

  1. 在调用图时手动传递了一个不正确的消息列表,例如:graph.invoke({'messages': [AIMessage(..., tool_calls=[...])]})
  2. 图被中断前未从tools节点接收更新(即一个包含ToolMessages的列表),并且您使用了一个非None或非ToolMessage的输入来调用它,例如: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中的未回答工具调用,或者添加具有与未回答工具调用匹配的tool_call_ids的ToolMessages
      3. 调用graph.update_state(config, {'messages': ...}),传入修改后的消息列表
      4. 恢复图,例如调用graph.invoke(None, config)

Comments