함수 호출 API — 스키마 정의와 멀티 툴 처리
함수 호출 API
함수 호출 API를 제대로 다루려면 도구 스키마 정의와 여러 도구 중 선택을 이해해야 해요. API 문서는 이 부분을 공식적으로 설명해요.
도구 정의 구조
각 도구는 type: "function"과 function 객체(이름·설명·매개변수 스키마)로 이뤄져요. 설명이 명확할수록 모델이 올바른 도구를 고를 확률이 높아져요.
{
"type": "function",
"function": {
"name": "search_products",
"description": "Search products by keyword",
"parameters": {
"type": "object",
"properties": {"q": {"type": "string"}},
"required": ["q"],
"additionalProperties": false
}
}
}
실행 루프
- 모델이
tool_calls로 함수·인자를 반환. - 앱이 함수를 실행.
role: "tool"메시지로 결과 반환.- 모델이 최종 답변을 생성.
모범 사례
- 도구 수는 필요한 만큼만 (과다하면 선택 혼란).
- 스키마의
additionalProperties: false로 예측 가능한 인자 강제. - structured outputs와 결합하면 인자가 스키마에 정확히 맞도록 보장 가능.