Function Calling (Tools)
Function Calling (Tools)과 MCP(Model Context Protocol)의 관계에 대해서 알아본다.
Function Calling (도구 호출) 이란?
LLM이 단순히 텍스트만 생성하는 게 아니라, 외부 함수(Function)나 API를 직접 호출할 수 있도록 하는 기능이다.
예를 들어, OpenAI API에서 제공하는 function_call
기능이 대표적이다.
동작 원리
- 사용자 입력: “오늘 서울 날씨 알려줘”
- LLM 판단: “이건 날씨 API를 호출해야 하는구나”
- 도구 호출: 미리 정의된 함수(예:
getWeather(location: string)
) 실행 - 결과 수신:
{ "location": "Seoul", "temp": 28, "condition": "Sunny" }
- 최종 응답 생성: “오늘 서울은 맑고 28도입니다 ☀️”
즉, LLM은 자연어 → 함수 입력 변환 역할을 하고, 실제 계산·검색은 외부 함수/도구가 맡는다.
장점
- 실시간 데이터 활용
- LLM 자체는 훈련 시점 이후 지식을 모름. Function Call로 최신 API 연결 가능.
- 정확한 계산
- LLM은 수학 연산에 약함. 대신 계산기 API를 호출하면 정확한 결과 반환.
- 업무 자동화
- “메일 보내줘” → 이메일 API 호출
- “DB에서 고객 목록 가져와” → DB 쿼리 실행
MCP와 Function Calling의 차이
-
Function Calling
- 개별 도구를 LLM이 직접 호출하는 방식
- API나 함수 단위의 호출 정의 필요
- 예:
getWeather()
,searchStockPrice()
-
MCP (Model Context Protocol)
- 여러 도구(Function/Resource)를 표준화된 방식으로 연결하는 프로토콜
- 각 도구를 “Provider"로 추상화하여, LLM이 일관된 방법으로 접근 가능
- Function Call을 포함해서 “도구 호출"을 체계적으로 관리하는 상위 개념
실제 예시
1. Function Calling 단독 사용
-
OpenAI Function Call 예제:
{ "name": "getWeather", "description": "현재 날씨 조회", "parameters": { "type": "object", "properties": { "location": { "type": "string" } }, "required": ["location"] } }
👉 모델이
"서울"
을 location에 매핑해 API 실행
2. MCP 기반 Function Calling
- MCP는 Function들을 Resource Registry로 묶어 관리
- LLM이 “날씨 API"를 직접 알 필요 없이, MCP가 추상화된
tools.weather
같은 인터페이스 제공 - 여러 도구를 표준 프로토콜로 연결 → Function Call 혼란/중복 줄여줌
비유로 정리
- Function Calling = 개별 “도구 사용법” (드라이버: 가위, 망치, 드라이버 같은 단일 도구)
- MCP = “공구함/작업대” (도구를 표준화된 방식으로 정리해 둔 시스템)
정리
Function Calling은 개별 API를 호출하는 기술이고, MCP는 여러 Function(도구)들을 표준화된 방식으로 관리하고 연결해주는 상위 레이어라고 이해하면 된다.