▶️25

[영상] OpenAI Function Calling 사용법

Day 2: Tool 정의 & Function Calling

학습 목표

OpenAI Function Calling의 JSON Schema 정의 방식을 작성한다 함수 호출 결과를 messages에 삽입하는 멀티턴 흐름을 구현한다 제조 도메인 Tool(설비 조회·불량 DB·정비 예약)을 Function으로 정의한다 parallel_tool_calls로 여러 Tool을 동시 호출해 속도를 최적화한다

영상 핵심 정리 — Function Calling으로 Agent에 손발 달기

Function Calling은 LLM이 '이 함수를 호출해 달라'는 요청을 JSON으로 출력하고, 개발자가 실제 실행 후 결과를 돌려주는 프로토콜이다.


1. Function 스키마 정의

tools = [{
    'type': 'function',
    'function': {
        'name': 'get_equipment_status',
        'description': '특정 설비 ID의 현재 상태·온도·진동 데이터를 조회한다',
        'parameters': {
            'type': 'object',
            'properties': {
                'equipment_id': {
                    'type': 'string',
                    'description': '설비 고유 ID (예: CNC-042, ROBOT-07)'
                },
                'metrics': {
                    'type': 'array',
                    'items': {'type': 'string',
                             'enum': ['temperature', 'vibration', 'rpm']}
                }
            },
            'required': ['equipment_id']
        }
    }
}]

2. 멀티턴 Function Calling 흐름

1. user 메시지 → LLM 호출
2. LLM → tool_calls JSON 반환
3. 개발자 코드 → 실제 함수 실행
4. 결과를 role='tool'로 messages 추가
5. LLM 재호출 → 최종 자연어 답변

3. description 작성 품질의 중요성

나쁜 description좋은 description
'설비 조회''설비 ID로 실시간 센서 데이터를 조회. 온도·진동·RPM 선택 가능. 데이터 없으면 null 반환'

description이 모호하면 LLM이 잘못된 함수를 선택하거나 필요한 함수를 호출하지 않는 오류가 발생한다.

함정 주의: required 배열에 없는 파라미터는 LLM이 생략할 수 있다. 항상 필요한 파라미터는 반드시 required에 명시해야 하며, 선택 파라미터에는 default 값 설명을 description에 추가한다.


다음 task와의 연결

'Function Calling 스키마 설계 원칙' 읽기 자료에서 스키마 설계의 안티패턴과 프로덕션 수준의 검증 전략을 학습한다.

AI로 학습하기 — 꿀팁
🤖Function Calling 스키마 설계 요청AI 학습 팁

AI 에이전트에게 제조 설비 조회용 Function Calling 스키마를 설계하게 하고, description 품질이 LLM의 함수 선택률에 미치는 영향을 직접 비교해보세요.

제조 현장 설비 상태 조회를 위한 OpenAI Function Calling 스키마를 두 버전으로 설계해줘. 첫 번째는 description이 모호한 나쁜 예시, 두 번째는 구체적이고 명확한 좋은 예시로. 각 버전에서 LLM이 tool_choice='auto' 조건에서 어떤 상황에 함수를 선택하고 하지 않을지 예측해줘.
이 팁이 도움이 됐나요?
핵심 포인트
  • Function Calling은 LLM이 구조화된 JSON으로 도구 호출 의도를 표현하는 메커니즘이다
  • 함수 스키마의 description 품질이 LLM의 올바른 함수 선택률을 결정한다
  • tool_choice='auto'는 필요 시에만 함수 호출, 'required'는 항상 함수 호출을 강제한다
  • 함수 실행 결과는 role='tool'로 messages에 추가해 다음 LLM 호출에 전달한다