▶️25분
[영상] OpenAI Function Calling 사용법
Day 2: Tool 정의 & Function Calling
[영상] OpenAI Function Calling 사용법
AI Agent 기초 > 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 호출에 전달한다
