Claude는 기본적으로 여러 도구를 동시에 실행할 수 있지만, 일부 버전은 이를 원하는 만큼 활용하지 못합니다. 배치 도구를 구현하면 Claude가 단일 메시지에서 여러 도구를 호출할 가능성을 크게 높일 수 있습니다.

Claude가 메시지에서 도구 사용 부분을 반환할 때, 단일 응답에 둘 이상의 도구 요청이 포함될 수 있습니다. 예를 들어 "2025년 3월 12일 + 50일은 언제인가요? 그리고 2025년 3월 12일 + 100일은 언제인가요?"라고 질문하면, Claude는 이론적으로 각 계산에 대해 하나씩, 두 개의 별도 도구 사용 부분을 반환할 수 있습니다. 이러한 작업들은 서로 의존하지 않기 때문에 완전히 병렬화할 수 있습니다.
하지만 Claude는 여러분이 기대하는 만큼 항상 도구 호출을 병렬화하려고 시도하지는 않습니다. 두 호출을 동시에 수행하는 대신, 종종 순차적으로 수행하는데, 이는 효율성이 떨어집니다.
배치 도구의 작동 방식
배치 도구는 다른 도구와 마찬가지로 구현됩니다 - 도구 명세와 호출될 때 처리할 함수가 필요합니다. 핵심 아이디어는 여러 다른 도구를 동시에 호출할 수 있는 도구를 만드는 것입니다.
다음은 배치 도구 명세의 기본 구조입니다:
이 도구는 호출 목록을 받으며, 각 호출에는 호출할 도구의 이름과 그 인수(JSON 문자열로 인코딩됨)가 포함됩니다.
구현
배치 도구 구현에는 두 가지 주요 함수가 포함됩니다:
run_batch 함수
이 함수는 각 호출을 순회하며, 도구 이름과 인수를 추출하고, 기존의 run_tool 함수를 사용하여 적절한 도구를 호출한 다음, 모든 결과를 수집합니다.
run_tool에 추가하기
메인 run_tool 함수에도 케이스를 추가해야 합니다:
다른 도구와 달리, 배치 도구는 원시 입력 구조를 처리해야 하므로 스플랫 연산자(**)를 사용하지 않고 tool_input을 직접 전달한다는 점에 유의하세요.
결과
배치 도구를 구현하고 동일한 날짜 계산 쿼리를 실행하면, 메시지 로그에서 두 개의 별도 도구 호출을 보는 대신, 배치 도구에 대한 단일 호출을 보게 됩니다. 이 단일 호출에는 두 날짜 계산이 하위 호출로 포함되어 있어, 효과적으로 작업을 병렬화합니다.
배치 도구는 동시에 실행할 수 있는 여러 독립적인 작업이 있을 때 특히 유용합니다. Claude가 이 패턴을 사용하도록 "유도"함으로써, 도구 호출 워크플로우의 효율성을 크게 향상시킬 수 있습니다.