Claude가 여러 도구를 선택하도록 만드는 Tool Use 설계 방법

Claude를 업무 자동화에 활용할 때 단순히 질문에 답하는 기능만으로는 한계가 있습니다. 실제 업무에서는 검색, 계산, 데이터 조회, 파일 생성, 외부 API 호출처럼 서로 다른 작업을 하나의 AI가 처리해야 하는 경우가 많기 때문입니다.

이때 활용할 수 있는 대표적인 기능이 Tool Use입니다.

Tool Use를 적용하면 Claude가 사용자의 요청을 분석한 뒤 필요한 도구를 선택하고, 해당 도구의 결과를 다시 받아 최종 답변을 생성하는 구조를 만들 수 있습니다.


1. Tool Use란 무엇인가?

Tool Use는 Claude가 직접 모든 작업을 수행하는 것이 아니라 외부 프로그램이나 API를 호출하도록 연결하는 방식입니다.

예를 들어 다음과 같은 도구가 있다고 가정해 보겠습니다.

search_product()
get_weather()
calculate()
send_email()
query_database()

사용자가

“서울의 현재 날씨를 확인하고 우산을 가져가야 하는지 알려줘.”

라고 질문하면 Claude는 직접 날씨를 추측하는 대신 get_weather()라는 도구를 선택할 수 있습니다.

전체 흐름은 다음과 같습니다.

사용자 질문
     ↓
Claude
     ↓
필요한 도구 판단
     ↓
Tool 호출
     ↓
외부 시스템 결과
     ↓
Claude
     ↓
최종 답변

즉, Claude를 도구를 사용할 수 있는 AI Agent의 두뇌처럼 활용하는 것입니다.


2. 여러 도구를 사용할 때 중요한 것은 Tool Description이다

Claude에게 여러 개의 도구를 제공한다고 해서 자동으로 항상 정확한 도구를 선택하는 것은 아닙니다.

가장 중요한 요소 중 하나가 Tool Description입니다.

예를 들어 다음처럼 단순하게 작성할 수 있습니다.

{
  "name": "search_customer",
  "description": "고객 정보를 검색합니다."
}

하지만 실제 시스템에서는 보다 구체적으로 작성하는 것이 좋습니다.

{
  "name": "search_customer",
  "description": "고객의 이름, 이메일 또는 고객 ID를 이용해 CRM에 등록된 고객 정보를 검색합니다. 주문 내역이나 결제 정보가 필요할 경우에는 이 도구가 아니라 주문 조회 도구를 사용해야 합니다."
}

두 번째 방식은 Claude가 이 도구를 언제 사용해야 하고 언제 사용하면 안 되는지 판단할 수 있도록 정보를 제공합니다.


3. 도구를 기능별로 명확하게 분리한다

여러 도구를 제공할 때 하나의 도구가 지나치게 많은 기능을 담당하도록 만드는 것은 피하는 것이 좋습니다.

예를 들어 다음과 같이 설계할 수 있습니다.

search_customer
    ↓
고객 정보 검색

get_order
    ↓
주문 정보 조회

get_payment
    ↓
결제 정보 조회

cancel_order
    ↓
주문 취소

send_email
    ↓
이메일 발송

이렇게 역할을 분리하면 Claude가 사용자의 의도를 파악하고 필요한 도구를 선택하기 쉬워집니다.

반대로

manage_customer()

라는 하나의 도구가 검색, 수정, 삭제, 결제, 주문 취소까지 모두 담당한다면 도구의 입력 구조가 복잡해지고 잘못된 작업을 수행할 가능성도 커집니다.


4. Claude에게 도구 선택을 맡기는 구조

예를 들어 쇼핑몰 AI Agent를 만든다고 가정해 보겠습니다.

사용자가

“지난주에 주문한 노트북 배송 상태 알려줘.”

라고 질문하면 Claude는 다음과 같이 판단할 수 있습니다.

질문 분석
   ↓
주문 정보 필요
   ↓
get_order 도구 선택
   ↓
주문 결과 확인
   ↓
배송 정보 필요
   ↓
get_shipping_status 도구 선택
   ↓
최종 답변

즉, 한 번의 질문에 하나의 Tool만 사용하는 것이 아니라 필요한 경우 여러 Tool을 순차적으로 사용할 수 있도록 설계할 수 있습니다.


5. 여러 도구를 순차적으로 사용하는 경우

실제 업무에서는 Tool Chain이 자주 필요합니다.

예를 들어 사용자가

“김민수 고객의 최근 주문을 찾아서 배송 상태를 확인하고 이메일로 알려줘.”

라고 요청했다고 가정해 보겠습니다.

Claude는 다음과 같이 작업할 수 있습니다.

search_customer
      ↓
고객 ID 확인
      ↓
get_order
      ↓
최근 주문 확인
      ↓
get_shipping_status
      ↓
배송 상태 확인
      ↓
send_email
      ↓
완료

이런 구조를 Sequential Tool Use라고 생각할 수 있습니다.

중요한 점은 개발자가 모든 작업 순서를 하드코딩하는 것이 아니라 Claude가 앞선 Tool의 결과를 보고 다음에 필요한 Tool을 선택하도록 설계하는 것입니다.


6. Tool 입력값을 엄격하게 정의한다

여러 도구를 연결할수록 입력값 검증이 중요해집니다.

예를 들어 이메일 발송 도구라면 다음과 같이 필요한 값을 명확하게 정의할 수 있습니다.

{
  "name": "send_email",
  "description": "사용자에게 이메일을 발송합니다.",
  "input_schema": {
    "type": "object",
    "properties": {
      "to": {
        "type": "string"
      },
      "subject": {
        "type": "string"
      },
      "body": {
        "type": "string"
      }
    },
    "required": ["to", "subject", "body"]
  }
}

이렇게 하면 Claude가 Tool을 호출할 때 필요한 입력 구조를 명확하게 알 수 있습니다.

특히 필수값과 선택값을 명확하게 구분하는 것이 중요합니다.


7. 읽기 도구와 실행 도구를 구분한다

기업용 Agent를 설계한다면 매우 중요한 부분입니다.

모든 Tool이 동일한 위험 수준을 가지고 있지 않기 때문입니다.

예를 들어

읽기(Read)
- 고객 조회
- 주문 조회
- 문서 검색
- 재고 확인

실행(Write)
- 주문 취소
- 이메일 발송
- 결제 처리
- 데이터 삭제

는 분리해서 관리하는 것이 좋습니다.

특히 삭제·결제·송금·계정 변경처럼 되돌리기 어려운 작업은 Claude가 판단했다고 바로 실행하지 않고 사용자 확인을 한 번 거치도록 설계하는 것이 안전합니다.

예를 들어:

Claude
 ↓
"주문을 취소할까요?"
 ↓
사용자 확인
 ↓
cancel_order()

같은 구조입니다.


8. Tool 선택 실패를 대비해야 한다

Claude가 항상 올바른 Tool을 선택한다고 가정해서는 안 됩니다.

예를 들어 사용자가

“김민수의 정보를 확인해줘.”

라고 요청했는데 시스템에

search_customer
search_employee
search_supplier

가 모두 존재한다면 어떤 대상을 의미하는지 불명확할 수 있습니다.

이런 경우 AI가 임의로 선택하게 하기보다 추가 질문을 하도록 설계하는 것이 좋습니다.

“김민수 고객 정보를 찾으시는 건가요, 직원 정보를 찾으시는 건가요?”

이러한 설계가 Agent의 안정성을 높입니다.


9. Tool 결과도 구조화해야 한다

Claude가 Tool 결과를 쉽게 이해할 수 있도록 반환 데이터 역시 일정한 형식을 유지하는 것이 좋습니다.

예를 들어 주문 조회 결과를 다음처럼 반환할 수 있습니다.

{
  "order_id": "ORD-10294",
  "status": "shipping",
  "product": "Laptop",
  "estimated_delivery": "2026-08-12"
}

반대로 사람이 읽는 문장을 그대로 반환하면 후속 Tool이 필요한 정보를 추출하기 어려워질 수 있습니다.

따라서 Agent 시스템에서는 Tool Input뿐 아니라 Tool Output의 구조화도 중요합니다.


10. 여러 Tool 중 잘못된 Tool을 선택하는 문제

Tool이 많아질수록 또 다른 문제가 발생합니다.

예를 들어

search_document
search_customer
search_order
search_product
search_database

처럼 비슷한 이름의 Tool이 많으면 Claude가 잘못된 Tool을 선택할 가능성이 높아질 수 있습니다.

이 문제를 줄이려면 다음 원칙을 사용할 수 있습니다.

Tool 이름을 명확하게 작성

search_data보다는

search_customer
search_order
search_product

처럼 구체적으로 작성합니다.

설명에서 사용 범위를 명시

search_order

주문번호 또는 고객 ID를 이용해 주문 정보를 조회합니다.
고객의 기본 프로필을 조회할 때는 search_customer를 사용합니다.

처럼 사용하지 말아야 할 상황까지 설명하는 것이 도움이 됩니다.


11. Tool을 너무 많이 제공하지 않는 것도 중요하다

Tool Use를 처음 설계할 때 흔히 하는 실수가 있습니다.

“우리 시스템의 API를 전부 Claude에게 연결하면 더 똑똑해지겠지.”

하지만 반드시 좋은 결과가 나오는 것은 아닙니다.

도구가 지나치게 많아지면 Claude가 선택해야 할 후보가 증가하고, 비슷한 기능을 가진 Tool 사이에서 혼동할 가능성도 커집니다.

따라서 다음과 같이 계층화하는 방법을 고려할 수 있습니다.

사용자 요청
     ↓
업무 영역 판단
     ↓
Customer Agent
     ├─ search_customer
     └─ get_customer_history

Order Agent
     ├─ search_order
     └─ cancel_order

Support Agent
     ├─ search_faq
     └─ create_ticket

이처럼 전문 Agent 또는 Tool Group을 구성하면 복잡한 시스템을 관리하기 쉬워집니다.


12. Tool Use와 MCP의 차이

Claude를 활용한 자동화를 공부한다면 Tool Use와 MCP를 함께 이해하는 것이 좋습니다.

Tool Use는 기본적으로 AI가 특정 도구를 호출할 수 있도록 애플리케이션에서 도구를 정의하는 방식입니다.

반면 MCP(Model Context Protocol)는 AI 모델과 외부 도구 및 데이터 소스를 연결하기 위한 표준화된 연결 방식이라는 점에서 차이가 있습니다.

간단하게 보면:

Tool Use
→ AI에게 어떤 도구를 사용할 수 있는지 정의

MCP
→ 다양한 AI와 외부 도구를 표준화된 방식으로 연결

따라서 작은 프로젝트에서는 직접 Tool Use를 구현하고, 여러 서비스와 도구를 확장해야 하는 환경에서는 MCP 같은 표준화된 구조를 고려할 수 있습니다.


13. 실제 Agent 설계에서 중요한 것은 “도구 선택”보다 “도구 사용 제한”

기업용 Claude Agent에서는 AI가 무엇을 할 수 있는지보다 무엇을 하면 안 되는지를 정의하는 것도 중요합니다.

예를 들어 금융 업무 Agent라면

조회 → 자동 실행 가능

수정 → 사용자 확인

삭제 → 사용자 확인 필수

결제 → 사용자 확인 필수

송금 → 별도 인증 필수

같은 정책을 둘 수 있습니다.

이렇게 하면 Claude가 Tool을 선택하더라도 실제 실행 계층에서 다시 권한을 확인할 수 있습니다.

즉,

Claude의 판단을 최종 권한으로 사용하지 않는 것이 중요합니다.


14. 모니터링과 로그를 구축한다

여러 Tool을 사용하는 Agent라면 Tool 호출 기록을 남기는 것이 좋습니다.

예를 들어:

request_id
user_id
selected_tool
tool_input
tool_result
execution_time
error

등을 기록할 수 있습니다.

이를 통해 나중에

“왜 Claude가 이 Tool을 선택했는가?”

“어떤 Tool에서 오류가 발생했는가?”

“특정 Tool을 잘못 선택하는 경우가 반복되는가?”

등을 분석할 수 있습니다.

특히 Tool 선택 정확도를 별도의 평가 항목으로 관리하면 Agent 품질을 지속적으로 개선할 수 있습니다.


마무리

Claude가 여러 도구를 사용하는 Agent를 만들기 위해서는 단순히 API를 여러 개 연결하는 것만으로는 부족합니다.

핵심은 다음과 같이 정리할 수 있습니다.

명확한 Tool 이름
       ↓
구체적인 Tool Description
       ↓
엄격한 Input Schema
       ↓
구조화된 Tool Output
       ↓
읽기/쓰기 권한 분리
       ↓
위험한 작업은 사용자 확인
       ↓
Tool 호출 Logging
       ↓
선택 정확도 평가

특히 Tool Description과 Input Schema 설계가 Claude의 도구 선택 품질에 직접적인 영향을 줄 수 있기 때문에, 실제 Agent를 구축할 때 가장 먼저 설계해야 하는 부분입니다.

결국 좋은 Claude Agent는 많은 도구를 가진 Agent가 아니라, 주어진 상황에서 필요한 도구를 정확하게 선택하고 불필요한 작업은 실행하지 않는 Agent라고 볼 수 있습니다.

다음 단계에서는 **「Claude + MCP로 외부 도구 연결하기」**를 이어서 작성하면 Tool Use에서 MCP로 자연스럽게 확장되는 전문 콘텐츠 시리즈를 만들 수 있습니다.

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

위로 스크롤