실행 중 도구 선택
모델이 호출할 도구를 결정하게 하거나, 특정 도구를 강제하거나, 현재 상태에 필요한 도구만 노출해보세요.
실행 중 도구 선택은(는) 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개 이상이면 계층 구조를 사용합니다:
- 외부 에이전트가 도메인을 선택합니다(주문 / 결제 / 배송)
- 내부 에이전트가 해당 도메인 안에서 구체적인 도구를 선택합니다
각 호출에는 약 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 modelAnthropic의 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 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.