INVALID_CHAT_HISTORY
这个错误在预构建的@[create_agent][create_agent]中当call_model图节点收到格式错误的消息列表时抛出。具体来说,当有带有tool_calls(LLM请求调用工具)的AIMessages但没有对应的@[ToolMessage](工具调用结果返回给LLM)时,格式就不正确。
这个错误在预构建的@[createAgent][create_agent]中当callModel图节点收到格式错误的消息列表时抛出。具体来说,当有带有tool_calls(LLM请求调用工具)的AIMessage但没有对应的@[ToolMessage](工具调用结果返回给LLM)时,格式就不正确。
您看到此错误的原因可能有几个:
您在调用图时手动传递了格式错误的消息列表,例如
graph.invoke({'messages': [AIMessage(..., tool_calls=[...])]})图在收到
tools节点的更新(即@[ToolMessage]的列表)之前被中断了
并且您使用非None或非ToolMessage的输入调用了它,
例如graph.invoke({'messages': [HumanMessage(...)]}, config)。
此中断可能通过以下方式之一触发:
* 您在create_agent中手动设置了interrupt_before = ['tools']- 其中一个工具引发了未被@[
ToolNode]("tools")处理的错误
- 其中一个工具引发了未被@[
您在调用图时手动传递了格式错误的消息列表,例如
graph.invoke({messages: [new AIMessage({..., tool_calls: [...]})]})图在收到
tools节点的更新(即@[ToolMessage]的列表)之前被中断了
并且您使用非null或非ToolMessage的输入调用了它,
例如graph.invoke({messages: [new HumanMessage(...)]}, config)。
此中断可能通过以下方式之一触发:- 您在
createAgent中手动设置了interruptBefore: ['tools'] - 其中一个工具引发了未被@[
ToolNode]("tools")处理的错误
- 您在
故障排除
要解决此问题,您可以执行以下操作之一:
- 不要使用格式错误的消息列表调用图
- 在中断的情况下(手动或由于错误),您可以:
- 提供与现有工具调用匹配的@[
ToolMessage]对象并调用graph.invoke({'messages': [ToolMessage(...)]})。
注意:这将把消息附加到历史记录中,并从START节点运行图。- 手动更新状态并从中断点恢复图:
- 使用
graph.get_state(config)从图状态获取最近的消息列表 - 修改消息列表,要么从未回答的AIMessages中删除工具调用
- 使用
- 手动更新状态并从中断点恢复图:
或者添加具有与未回答工具调用匹配的tool_call_ids的@[ToolMessage]对象
3. 使用修改后的消息列表调用graph.update_state(config, {'messages': ...})
4. 恢复图,例如调用graph.invoke(None, config)
- 提供与现有工具调用匹配的
ToolMessage对象并调用graph.invoke({messages: [new ToolMessage(...)]})。
注意:这将把消息附加到历史记录中,并从START节点运行图。- 手动更新状态并从中断点恢复图:
- 使用
graph.getState(config)从图状态获取最近的消息列表 - 修改消息列表,要么从未回答的AIMessages中删除工具调用
- 使用
- 手动更新状态并从中断点恢复图:
或者添加具有与未回答工具调用匹配的toolCallId的ToolMessage对象
3. 使用修改后的消息列表调用graph.updateState(config, {messages: ...})
4. 恢复图,例如调用graph.invoke(null, config)