강좌
65개 강의 중 29번째 · Claude with Amazon Bedrock배치 도구 사용
Sign in to save your progressYou can keep reading without an account, but completed lessons won't be saved.
Not nowSign in

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

Claude가 메시지에서 도구 사용 부분을 반환할 때, 단일 응답에 둘 이상의 도구 요청이 포함될 수 있습니다. 예를 들어 "2025년 3월 12일 + 50일은 언제인가요? 그리고 2025년 3월 12일 + 100일은 언제인가요?"라고 질문하면, Claude는 이론적으로 각 계산에 대해 하나씩, 두 개의 별도 도구 사용 부분을 반환할 수 있습니다. 이러한 작업들은 서로 의존하지 않기 때문에 완전히 병렬화할 수 있습니다.

하지만 Claude는 여러분이 기대하는 만큼 항상 도구 호출을 병렬화하려고 시도하지는 않습니다. 두 호출을 동시에 수행하는 대신, 종종 순차적으로 수행하는데, 이는 효율성이 떨어집니다.

배치 도구의 작동 방식

배치 도구는 다른 도구와 마찬가지로 구현됩니다 - 도구 명세와 호출될 때 처리할 함수가 필요합니다. 핵심 아이디어는 여러 다른 도구를 동시에 호출할 수 있는 도구를 만드는 것입니다.

다음은 배치 도구 명세의 기본 구조입니다:

json
{
  "name": "batch_tool",
  "description": "Invoke multiple other tool calls simultaneously",
  "input_schema": {
    "type": "object",
    "properties": {
      "invocations": {
        "type": "array",
        "description": "The tool calls to invoke",
        "items": {
          "type": "object",
          "properties": {
            "name": {
              "type": "string",
              "description": "The name of the tool to invoke"
            },
            "arguments": {
              "type": "string", 
              "description": "The arguments to the tool, encoded as a JSON string"
            }
          },
          "required": ["name", "arguments"]
        }
      }
    },
    "required": ["invocations"]
  }
}

이 도구는 호출 목록을 받으며, 각 호출에는 호출할 도구의 이름과 그 인수(JSON 문자열로 인코딩됨)가 포함됩니다.

구현

배치 도구 구현에는 두 가지 주요 함수가 포함됩니다:

run_batch 함수

python
def run_batch(tool_input):
    batch_output = []
    for invocation in tool_input["invocations"]:
        tool_name = invocation["name"]
        args = json.loads(invocation["arguments"])
        
        tool_output = run_tool(tool_name, args)
        batch_output.append({"tool_name": tool_name, "output": tool_output})
    
    return batch_output

이 함수는 각 호출을 순회하며, 도구 이름과 인수를 추출하고, 기존의 run_tool 함수를 사용하여 적절한 도구를 호출한 다음, 모든 결과를 수집합니다.

run_tool에 추가하기

메인 run_tool 함수에도 케이스를 추가해야 합니다:

python
elif tool_name == "batch_tool":
    return run_batch(tool_input)

다른 도구와 달리, 배치 도구는 원시 입력 구조를 처리해야 하므로 스플랫 연산자(**)를 사용하지 않고 tool_input을 직접 전달한다는 점에 유의하세요.

결과

배치 도구를 구현하고 동일한 날짜 계산 쿼리를 실행하면, 메시지 로그에서 두 개의 별도 도구 호출을 보는 대신, 배치 도구에 대한 단일 호출을 보게 됩니다. 이 단일 호출에는 두 날짜 계산이 하위 호출로 포함되어 있어, 효과적으로 작업을 병렬화합니다.

배치 도구는 동시에 실행할 수 있는 여러 독립적인 작업이 있을 때 특히 유용합니다. Claude가 이 패턴을 사용하도록 "유도"함으로써, 도구 호출 워크플로우의 효율성을 크게 향상시킬 수 있습니다.