AI Agents · 강의

실행 중 도구 선택

모델이 호출할 도구를 결정하게 하거나, 특정 도구를 강제하거나, 현재 상태에 필요한 도구만 노출해보세요.

레슨 3/413개 단계

실행 중 도구 선택은(는) CoddyKit의 무료 AI Agents 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 AI Agents 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. AI Agents 강의에는 총 4개의 강의가 포함되어 있습니다.

모델이 선택하게 하기

기본적으로 모델에 도구 목록을 제공하면 모델이 호출할 도구를 선택하거나 아무것도 호출하지 않습니다. 다음과 같은 경우 표준 모드가 잘 작동합니다:

  • 도구가 5~15개일 때
  • 도구의 설명이 명확하고 서로 구별될 때
  • 적절한 도구가 사용자 입력에 따라 달라질 때

tool_choice: auto

기본값으로, 모델이 결정합니다:

response = client.chat.completions.create(
    model='gpt-4o-mini',
    messages=messages,
    tools=tools,
    tool_choice='auto',  # default; can be omitted
)

tool_choice: required

모델이 SOME 도구를 호출하도록 강제합니다(어떤 도구든 가능):

response = client.chat.completions.create(
    model='gpt-4o-mini',
    messages=messages,
    tools=tools,
    tool_choice='required',
)
# Model must return a tool_call, never a free-form answer

특정 도구 강제하기

하나의 특정 도구를 강제하려면 도구 이름을 지정합니다:

response = client.chat.completions.create(
    model='gpt-4o-mini',
    messages=messages,
    tools=tools,
    tool_choice={'type': 'function', 'function': {'name': 'extract_entities'}},
)

tool_choice: none

한 차례 동안 도구를 비활성화합니다:

# After a tool result, you might want a pure text response:
response = client.chat.completions.create(
    model='gpt-4o-mini',
    messages=messages,
    tools=tools,
    tool_choice='none',
)

문맥에 따라 도구 목록 줄이기

도구 집합이 크면 모델의 선택 품질이 떨어집니다. 현재 상태와 관련된 도구만 노출하세요:

def relevant_tools(state):
    if state == 'authenticated':
        return [search_orders, refund_order, escalate]
    elif state == 'guest':
        return [search_products, contact_support]
    return []

2단계 도구 선택

도구가 50개 이상이면 계층 구조를 사용합니다:

  1. 외부 에이전트가 도메인을 선택합니다(주문 / 결제 / 배송)
  2. 내부 에이전트가 해당 도메인 안에서 구체적인 도구를 선택합니다

각 호출에는 약 10개의 도구만 표시됩니다.

도구에 대한 벡터 검색

각 도구 설명을 임베딩하고, 실행 시 사용자 질의를 임베딩한 다음 상위 K개의 도구를 검색해 노출합니다:

from openai import OpenAI
import numpy as np

query_emb = embed(user_query)
sims = [cosine(query_emb, tool.emb) for tool in all_tools]
top = [t for _, t in sorted(zip(sims, all_tools), reverse=True)[:10]]
# Send only these 10 to the model

Anthropic의 tool_choice

Anthropic도 같은 개념을 다른 형태로 사용합니다:

tool_choice = {'type': 'auto'}
print("auto:", tool_choice)
tool_choice = {'type': 'any'}                              # required
print("any (required):", tool_choice)
tool_choice = {'type': 'tool', 'name': 'get_weather'}      # specific
print("specific tool:", tool_choice)
tool_choice = {'type': 'none'}
print("none:", tool_choice)

특정 도구를 강제하는 이유

다음과 같은 경우에 유용합니다:

  • 검증 — 특정 구조화 필드 하나 추출
  • 라우팅 — 사용자가 "환불"을 클릭했으므로 refund_order 호출
  • 구조화된 출력 — JSON을 얻기 위해 도구 호출을 활용

빈 도구 목록

tools=[]와 tool_choice="required"를 함께 전달하면 오류가 발생합니다. 전송하기 전에 항상 도구 목록을 검증하세요.

JSON 출력 강제하기

특정 도구 호출을 강제해야 하는 이유는 무엇일까요?

복습

대부분의 경우 auto를 사용하세요. 라우팅과 구조화된 추출에는 도구를 강제하세요. 각 상태에 맞게 도구 목록을 줄여 선택의 정확도를 유지하세요.

무료로 시작

AI 튜터와 함께 AI Agents을(를) 배우세요 — 무료

브라우저에서 실제 코드를 작성하고 실행하며, 24/7 AI 튜터로부터 즉각적인 도움을 받고, 웹이나 앱에서 중단한 부분부터 계속 학습하세요.

코스
60
레슨
239

자주 묻는 질문

“실행 중 도구 선택” 강의는 무료인가요?

네 — “실행 중 도구 선택” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 AI Agents 강의 전체를 잠금 해제할 수 있습니다. AI Agents 강의에는 총 4개의 강의가 포함되어 있습니다.

“실행 중 도구 선택”에서 뭘 배우나요?

모델이 호출할 도구를 결정하게 하거나, 특정 도구를 강제하거나, 현재 상태에 필요한 도구만 노출해보세요. 브라우저에서 직접 실행하는 실습 코드로 AI Agents을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

AI Agents을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 AI Agents은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.

“실행 중 도구 선택” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 AI Agents 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 AI Agents 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 함수 호출 작동 방식
  2. 도구 스키마 정의(JSON Schema)
  3. 실행 중 도구 선택
  4. 모델에 결과 반환
← AI Agents(으)로 돌아가기