Function Calling (Tools)

Function Calling (Tools)과 MCP(Model Context Protocol)의 관계에 대해서 알아본다.

Function Calling (도구 호출) 이란?

LLM이 단순히 텍스트만 생성하는 게 아니라, 외부 함수(Function)나 API를 직접 호출할 수 있도록 하는 기능이다.
예를 들어, OpenAI API에서 제공하는 function_call 기능이 대표적이다.

동작 원리

  1. 사용자 입력: “오늘 서울 날씨 알려줘”
  2. LLM 판단: “이건 날씨 API를 호출해야 하는구나”
  3. 도구 호출: 미리 정의된 함수(예: getWeather(location: string)) 실행
  4. 결과 수신: { "location": "Seoul", "temp": 28, "condition": "Sunny" }
  5. 최종 응답 생성: “오늘 서울은 맑고 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(도구)들을 표준화된 방식으로 관리하고 연결해주는 상위 레이어라고 이해하면 된다.