INVALID_CHAT_HISTORY(无效的聊天历史记录)¶
当预构建的 create_react_agent 中的 call_model
图节点接收到格式错误的消息列表时,会引发此错误。具体来说,当存在带有 tool_calls
(大语言模型请求调用工具)的 AIMessages
但没有对应的 ToolMessage
(要返回给大语言模型的工具调用结果)时,消息列表就是格式错误的。
你看到此错误可能有以下几个原因:
- 你在调用图时手动传递了格式错误的消息列表,例如
graph.invoke({'messages': [AIMessage(..., tool_calls=[...])]})
- 图在从
tools
节点(即ToolMessages
列表)接收更新之前被中断,并且你使用非None
或ToolMessage
的输入调用了它, 例如graph.invoke({'messages': [HumanMessage(...)]}, config)
。 这种中断可能通过以下方式之一触发:- 你在
create_react_agent
中手动设置了interrupt_before = ['tools']
- 其中一个工具引发了一个未被 ToolNode (
"tools"
) 处理的错误
- 你在
故障排除¶
要解决此问题,你可以采取以下操作之一:
- 不要使用格式错误的消息列表来调用图。
-
如果出现中断(手动中断或因错误导致的中断),你可以:
- 提供与现有工具调用相匹配的工具消息,并调用
graph.invoke({'messages': [ToolMessage(...)]})
。 注意:这将把消息追加到历史记录中,并从起始节点开始运行图。 -
手动更新状态并从中断处恢复图的运行:
- 使用
graph.get_state(config)
从图的状态中获取最新的消息列表。 - 修改消息列表,要么从 AI 消息中移除未应答的工具调用,要么添加工具调用 ID 与未应答工具调用相匹配的工具消息。
- 使用修改后的消息列表调用
graph.update_state(config, {'messages': ...})
。 - 恢复图的运行,例如调用
graph.invoke(None, config)
。
- 使用
- 提供与现有工具调用相匹配的工具消息,并调用