Skip to main content
目前仅用于 langchainjs(JavaScript/TypeScript)。
当在工具调用操作中向模型传递不匹配、不足或过多的 ToolMessage 对象时,会发生此错误。 该错误源于一个基本要求:包含 tool_calls 的助手消息后,必须跟随响应每个 tool_call_id 的工具消息。 当模型返回带有工具调用的 AIMessage 时,你必须为每个工具调用提供恰好一个对应的 ToolMessage,且 tool_call_id 值必须匹配。

常见原因

  • 响应不足:如果模型请求执行两个工具但你只提供了一条响应消息,模型会拒绝不完整的消息链
  • 重复响应:为同一个工具调用 ID 提供多个 ToolMessage 对象会导致拒绝,ID 不匹配同样如此
  • 孤立工具消息:发送没有前置包含工具调用的 AIMessageToolMessage 违反了协议要求
以下是一个有问题的示例:
# Model requests two tool calls
response_message.tool_calls  # Returns 2 calls

# But only one ToolMessage provided
chat_history.append(ToolMessage(
    content=str(tool_response),
    tool_call_id=tool_call.get("id")
))

model_with_tools.invoke(chat_history)

故障排查

要解决此错误:
  • 检查匹配数量:确保前置 AIMessage 中每个工具调用都有对应的 ToolMessage
  • 验证 ID:确认每个 ToolMessage.tool_call_id 与实际的工具调用标识符相匹配