INVALID_TOOL_RESULTS
INVALID_TOOL_RESULTS
툴 호출(tool calling) 과정에서 불일치하거나, 부족하거나, 과도한 ToolMessage 객체를 모델에 전달할 때 발생하는 오류예요.
이 오류는 근본적인 요구 사항에서 비롯돼요: tool_calls를 포함한 assistant 메시지 뒤에는 각 tool_call_id에 응답하는 tool 메시지가 이어져야 해요.
모델이 툴 호출이 포함된 AIMessage를 반환하면, 각 툴 호출마다 정확히 하나의 대응 ToolMessage를 tool_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 메시지를 보내면 이 오류가 발생할 수 있어요.