🔧
Function Calling (Tool Use)
LLM이 외부 도구를 호출하여 실제 작업 수행
Function Calling은 LLM이 단순히 텍스트를 생성하는 것을 넘어, 외부 도구를 호출할 수 있게 하는 기능입니다. 개발자가 사용 가능한 함수의 이름, 설명, 파라미터 스키마(JSON Schema)를 모델에 제공하면, 모델이 사용자의 요청을 분석하여 적절한 함수와 인자를 JSON으로 출력합니다. 이 JSON을 파싱하여 실제 함수를 실행하고, 결과를 다시 모델에 전달하면 최종 응답을 생성합니다. 날씨 조회, 주문 처리, DB 쿼리, 코드 실행 등 "LLM이 할 수 없는 일"을 가능하게 만들어 AI Agent의 기반이 됩니다.
핵심 개념
1
개발자가 사용 가능한 함수 목록과 JSON Schema를 모델에 제공
2
사용자가 자연어로 요청 ("서울 날씨 알려줘")
3
LLM이 요청을 분석하고 적절한 함수와 인자를 JSON으로 출력 ({"name": "get_weather", "arguments": {"city": "seoul"}})
4
애플리케이션이 JSON을 파싱하여 실제 함수/API 실행
5
실행 결과를 대화 컨텍스트에 추가하여 모델에 전달
6
LLM이 결과를 해석하여 사용자에게 자연어 응답 생성
장점
- ✓ LLM의 한계(실시간 데이터, 계산 등)를 도구로 보완
- ✓ 구조화된 출력으로 파싱 용이
- ✓ 기존 API/시스템과 통합 가능
- ✓ Agent 워크플로우의 기반
단점
- ✗ 함수 스키마 설계 필요
- ✗ 잘못된 함수 호출/인자 가능
- ✗ 보안 — 민감한 함수의 무단 호출 방지 필요
- ✗ Multi-turn 도구 호출 시 복잡도 증가
사용 사례
ChatGPT Plugins / GPT Actions
Claude Tool Use
AI 챗봇의 DB 조회/주문 처리
AI 코딩 어시스턴트의 파일 읽기/쓰기
Multi-tool Agent (여러 도구 연쇄 호출)