INVALID_TOOL_RESULTS

INVALID_TOOL_RESULTS

현재 `langchainjs`(JavaScript/TypeScript)에서만 사용돼요.

툴 호출(tool calling) 과정에서 불일치하거나, 부족하거나, 과도한 ToolMessage 객체를 모델에 전달할 때 발생하는 오류예요.

이 오류는 근본적인 요구 사항에서 비롯돼요: tool_calls를 포함한 assistant 메시지 뒤에는 각 tool_call_id에 응답하는 tool 메시지가 이어져야 해요.

모델이 툴 호출이 포함된 AIMessage를 반환하면, 각 툴 호출마다 정확히 하나의 대응 ToolMessagetool_call_id 값이 일치하도록 제공해야 해요.

일반적인 원인 (Common causes)

  • 응답 부족 (Insufficient responses): 모델이 두 번의 툴 실행을 요청했는데 응답 메시지를 하나만 제공하면, 모델이 불완전한 메시지 체인을 거부해요
  • 중복 응답 (Duplicate responses): 동일한 툴 호출 ID에 대해 여러 ToolMessage를 제공하면 거부되며, 일치하지 않는 ID가 있어도 마찬가지예요
  • 고아 tool 메시지 (Orphaned tool messages): 툴 호출이 포함된 선행 AIMessage 없이 ToolMessage를 보내면 프로토콜 요구 사항을 위반해요

문제가 되는 패턴의 예는 다음과 같아요:

// 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

문제 해결 (Troubleshooting)

이 오류를 해결하려면:

  • 쌍(pair) 개수 맞추기: 선행 AIMessage의 툴 호출마다 ToolMessage가 하나씩 존재하는지 확인하세요
  • ID 검증: 각 ToolMessage.tool_call_id가 실제 툴 호출 식별자와 일치하는지 확인하세요

출처: 문서

본문

tool_calls가 있는 assistant 메시지에는 각 tool_call_id에 대응하는 tool 메시지가 반드시 이어져야 한다는 규칙이 깨질 때 발생해요. 모델이 요청한 툴 실행 수에 맞는 ToolMessage를 정확히 하나씩, ID가 일치하도록 제공해야 해요. 응답이 부족하거나, 중복되거나, 선행 AIMessage가 없는 고아 tool 메시지를 보내면 이 오류가 발생할 수 있어요.

더 알아보기 (Learn more)