Claude의 도구 호출 기능을 사용할 때, Claude가 하나의 어시스턴트 메시지에 여러 개의 도구 사용 블록을 포함할 수 있다는 것을 알게 될 수 있습니다. 이를 통해 Claude는 각 도구마다 별도의 요청을 하는 대신 여러 도구를 병렬로 실행할 수 있습니다. 하지만 실제로 Claude가 이를 일관되게 수행하도록 만드는 것은 쉽지 않을 수 있습니다.
여러 도구 호출의 문제점
같은 날짜에 두 개의 알림을 설정하도록 Claude에게 요청한다고 가정해 보겠습니다. 이론적으로는 Claude가 각 알림에 대해 하나씩, 총 두 개의 도구 사용 블록을 포함한 단일 응답을 보낼 수 있어야 합니다. 하지만 실제로는 Claude가 대신 별도의 응답을 보내는 경우가 많습니다.

일반적으로 발생하는 현상은 Claude가 첫 번째 도구 호출을 수행하고, 결과를 기다린 다음, 후속 메시지에서 두 번째 도구 호출을 수행하는 것입니다. 이는 동시에 수행할 수 있었던 작업에 대해 불필요한 주고받기식 통신을 발생시킵니다.

배치 도구 솔루션
해결책은 "배치 도구(batch tool)"를 구현하는 것입니다. 이는 동시에 실행할 다른 도구 호출 목록을 받는 특수한 도구입니다. 이는 본질적으로 Claude가 한 번에 여러 도구 호출을 하도록 유도하는 일종의 우회 방법입니다.

작동 방식은 다음과 같습니다:
- Claude에게 다른 여러 도구를 병렬로 실행할 수 있다고 알려주는 배치 도구 스키마를 정의합니다
- Claude는 도구를 직접 호출하는 대신, 도구 호출 목록과 함께 배치 도구를 호출합니다
- 여러분의 코드는 이 목록을 처리하고 각 도구 호출을 실행합니다
- 결합된 결과를 Claude에게 반환합니다
배치 도구 스키마 구현하기
배치 도구 스키마는 Claude가 여러 도구를 실행하려고 할 때 요청을 어떻게 구성해야 하는지를 정의합니다:
배치 도구 호출 처리하기
Claude가 배치 도구를 사용할 때, 여러분은 호출 목록을 처리하고 각각을 실행해야 합니다. 구현 방법은 다음과 같습니다:
또한 배치 도구 호출을 처리하도록 메인 도구 라우팅 함수를 업데이트해야 합니다:
결과
배치 도구를 구현하면, Claude가 관련 작업들을 함께 그룹화할 가능성이 훨씬 높아집니다. 각 알림에 대해 별도의 요청을 하는 대신, Claude는 배치 도구를 사용하여 두 알림을 동시에 설정합니다.
대화 흐름이 훨씬 깔끔해집니다 - 사용자로부터의 요청 하나, 배치 도구 호출이 포함된 Claude의 응답 하나, 그리고 모든 결과가 담긴 후속 메시지 하나로 이루어집니다. 이는 지연 시간을 줄이고 애플리케이션을 더 효율적으로 만듭니다.
우회 방법처럼 보일 수 있지만(실제로 그렇습니다), 배치 도구 패턴은 Claude가 병렬화할 수 있는 작업을 고려하고 이를 더 효율적으로 실행하도록 유도하는 효과적인 방법입니다.