함수 호출 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
    }
  }
}

실행 루프

  1. 모델이 tool_calls로 함수·인자를 반환.
  2. 앱이 함수를 실행.
  3. role: "tool" 메시지로 결과 반환.
  4. 모델이 최종 답변을 생성.

모범 사례

  • 도구 수는 필요한 만큼만 (과다하면 선택 혼란).
  • 스키마의 additionalProperties: false로 예측 가능한 인자 강제.
  • structured outputs와 결합하면 인자가 스키마에 정확히 맞도록 보장 가능.

더 알아보기