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

常见原因

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

// But only one ToolMessage provided
chatHistory.push({
  role: "tool",
  content: toolResponse,
  tool_call_id: responseMessage.tool_calls[0].id
});

await modelWithTools.invoke(chatHistory); // Fails with INVALID_TOOL_RESULTS

故障排除

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