함수 호출 — 모델을 외부 시스템에 연결

함수 호출 — 모델을 외부 시스템에 연결

함수 호출(tool calling)은 OpenAI 모델이 외부 시스템과 상호작용하고 학습 데이터 밖의 데이터에도 접근하게 하는 강력한 방법이에요. JSON 스키마로 정의하는 함수 도구와 자유로운 텍스트 입·출력을 다루는 커스텀 도구 두 종류를 지원해요.

동작 흐름 (5단계)

  1. 모델이 호출할 수 있는 도구와 함께 요청을 보낸다
  2. 모델로부터 도구 호출을 받는다
  3. 애플리케이션 쪽에서 도구 입력으로 코드를 실행한다
  4. 도구 출력을 넣어 두 번째 요청을 보낸다
  5. 최종 응답(또는 추가 도구 호출)을 받는다
from openai import OpenAI
client = OpenAI()
response = client.responses.create(
    model="gpt-5.6",
    tools=[{
        "type": "function",
        "name": "get_horoscope",
        "description": "Get today's horoscope for an astrological sign.",
        "parameters": {
            "type": "object",
            "properties": {"sign": {"type": "string"}},
            "required": ["sign"],
        },
    }],
    input=[{"role": "user", "content": "What is my horoscope?"}],
)

좋은 함수 설계

  • 함수명·파라미터 설명을 명확하고 상세하게 써요.
  • 소프트웨어 공학 원칙(최소 놀람, enum으로 무효 상태 차단)을 적용해요.
  • 한 턴에 노출하는 함수는 20개 미만으로 유지하고, 자주 안 쓰는 도구는 tool_search로 지연 로딩해요.

요점

  • 함수 정의는 컨텍스트 한도에 포함돼 입력 토큰으로 과금돼요 → 노출 개수를 조절하세요.
  • 응답의 output 배열에서 type == "function_call"인 항목을 찾아 실행하고 function_call_output으로 되돌려 주면 흐름이 이어져요.

더 알아보기