한 응답에 tool_use가 여러 개 올 수 있어
“서울과 도쿄 날씨”처럼 독립된 두 작업을 물으면 Claude는 한 도우미 턴에 여러 tool_use 블록을 돌려줄 수 있어. 애플리케이션은 모두 실행한 뒤 대응하는 tool_result 블록을 사용자 턴 하나에 담아 보내. 도구 수만큼 왕복하지 않아 지연이 크게 줄어.
동시 실행은 애플리케이션 책임이야
프로토콜은 병렬 요청을 표현할 뿐 실제 실행 순서는 정하지 않아. Python에서는 asyncio.gather, TypeScript에서는 Promise.all로 독립 작업을 함께 기다릴 수 있어. 결과 배열의 위치가 아니라 tool_use_id로 원래 호출과 연결해야 해.
의존성이 있을 때만 순서를 강제해
B가 A의 결과를 필요로 하면 첫 턴에 tool_choice: {"type": "tool", "name": "A"}로 A를 지정하고 다음 턴에서 B를 실행해. 또는 disable_parallel_tool_use: True로 병렬 호출을 막을 수 있어. 대부분의 도구는 독립적이므로 실제 의존성이 확인된 곳에서만 직렬화해.
원칙: 독립적인 도구는 기본적으로 함께 실행해. 순서는 데이터 의존성이 있을 때만 비용을 지불해.