ToolNavs 유용한 AI 도구 찾기
도구 제출 로그인
돌아가기 AI 백과사전
Function Calling이란? MCP·플러그인 호출과의 실질적인 차이

Function Calling이란? MCP·플러그인 호출과의 실질적인 차이

AI 백과사전 Admin 2 회 조회

Function Calling은 대규모 언어 모델이 외부 기능을 활용하는 가장 일반적인 방식입니다. 개발자는 먼저 JSON Schema로 "어떤 함수가 있고 매개변수는 어떤 형태인지"를 정의해 두고, 모델은 대화 중 데이터 조회나 작업이 필요해지면 구조화된 호출 요청을 출력합니다. 프로그램이 실제 함수를 실행하고 그 결과를 모델에 되돌려 주면 답변이 이어집니다. 핵심은 한 문장으로 정리됩니다. 모델이 정하는 것은 "무엇을 호출할지, 매개변수에 무엇을 넣을지"뿐이며, 코드를 실제로 실행하는 것은 언제나 여러분의 프로그램입니다.

어떤 문제를 해결하는가

모델은 원래 텍스트를 출력하는 것밖에 못 합니다. 날씨 확인, 데이터베이스 읽기, 주문 같은 "손으로 하는" 일은 못 합니다. Function Calling은 그 사이에 다리를 놓습니다. 모델은 자연어로 요청을 이해하고, "어떤 함수를 어떤 매개변수로 호출하고 싶은지"를 구조화된 형식으로 표현하며, 실행은 프로그램에 맡깁니다. 이것이 바로 도구 호출이 성립하는 토대입니다.

함수 호출의 전체 흐름

  1. 정의: 요청에 tools 배열을 포함해 각 함수의 이름, 설명, 매개변수 구조(JSON Schema)를 적습니다.
  2. 판단: 모델은 외부 기능이 필요하다고 판단하면 직접 답하지 않고 tool_calls(함수 이름 + 매개변수 JSON)를 반환합니다.
  3. 실행: 여러분의 프로그램이 tool_calls를 해석해 실제 함수를 호출합니다. API 호출, 데이터베이스 읽기, 스크립트 실행 등입니다.
  4. 반환: 실행 결과를 tool 메시지로 대화에 되돌리면, 모델은 이를 바탕으로 최종 답변을 만듭니다.

핵심 구성 요소

  • tools 정의: 모델을 위한 "함수 설명서"입니다. 설명이 명확할수록 매개변수 정확도가 올라갑니다. description은 사람이 아니라 모델을 위해 쓰는 것입니다.
  • tool_choice: 모델이 특정 함수를 "반드시 호출 / 호출해도 됨 / 호출하지 않음" 중 어떻게 다룰지 제어합니다. auto, none, 함수 이름 지정이 일반적입니다.
  • 병렬 호출: 한 번에 여러 tool_calls를 반환해, 한 바퀴에 서로 무관한 여러 일을 처리할 수 있습니다.
  • 구조적 제약: 매개변수는 유효한 JSON이어야 하며, 타입이 틀리면 프로그램 측에서 에러가 납니다. Schema 제약은 엄격합니다.

도구 호출·MCP·플러그인 호출과의 실질적인 차이

구분Function Calling도구 호출MCP플러그인 호출
본질호출 메커니즘총칭연결 프로토콜기능 배포 형태
도구 정의 주체요청 안에서 개발자가 정의경우에 따라 다름MCP server가 공개플랫폼이 패키징
해결하는 문제모델이 호출을 어떻게 시작하는가모델이 외부 기능을 어떻게 쓰는가도구를 어떻게 찾고 통일적으로 연결하는가기능을 사용자에게 어떻게 전달하는가

Function Calling은 2023년 OpenAI가 확산시켰고, 지금은 주류 모델 대부분이 호환 구현을 갖추고 있습니다. 도구 호출은 더 큰 틀이며, Function Calling과 코드 실행, MCP 도구 등을 모두 담습니다. 한 문장으로 기억하세요. MCP는 "어떻게 연결하는가", 플러그인은 "어떻게 배포하는가", Function Calling은 "어떻게 호출을 시작하는가"를 맡습니다. 셋은 사슬의 관계이지 서로를 대체하지 않습니다. 플러그인 호출과의 경계도 같은 논리로 정리됩니다.

경계와 제한

  • 매개변수 환각: 모델은 없는 매개변수 이름을 지어내거나 타입을 틀릴 수 있습니다. 프로그램 측 검증은 필수입니다.
  • 토큰과 지연: 호출마다 대화가 한 바퀴 늘고, tools 정의 자체도 컨텍스트를 차지합니다. 도구가 많아질수록 비싸고 느려집니다.
  • 안전 레드라인: 데이터베이스 삭제, 송금, 대량 메일 발송 같은 되돌릴 수 없는 작업을 모델에 직접 시키면 안 됩니다. 중요한 작업에는 사람의 확인을 넣습니다.
  • 지원 수준 차이: Function Calling 지원 수준의 성숙도는 모델마다 다르며, 작은 모델은 "말만 하고 호출하지 않는" 경우나 형식을 틀리는 경우가 잦습니다.

흔한 오해

  • "모델이 실제로 코드를 실행한다"——아닙니다. 모델이 출력하는 것은 호출 요청뿐이며, 실행은 여러분의 프로그램 안에서 일어납니다.
  • "Function Calling은 MCP와 같다"——아닙니다. MCP는 프로토콜 계층이며, MCP가 공개한 도구도 Function Calling 같은 메커니즘을 거쳐 모델이 사용할 수 있습니다.
  • "Function Calling이 있으면 플러그인은 불필요하다"——플러그인은 사용자용 배포 형태, Function Calling은 개발자용 메커니즘으로 층이 다릅니다.
  • "정의만 하면 모델이 반드시 호출한다"——기본값은 auto이며, 모델이 필요 없다고 판단하면 호출하지 않습니다. 강제하려면 함수 이름을 명시합니다.

FAQ

Q: Function Calling은 각 회사 API의 도구 매개변수와 같은 것인가요?

A: 같은 계열입니다. "모델이 구조화된 호출을 출력하고 프로그램이 실행한다"는 발상은 공통이며, 다른 것은 필드 이름과 패키징입니다. 이전할 때는 주로 정의를 고치게 됩니다.

Q: 이미 MCP를 쓰고 있는데 Function Calling도 신경 써야 하나요?

A: 필요합니다. MCP는 도구를 어떻게 연결하는가를 해결하고, Function Calling은 모델이 호출을 어떻게 시작하는가를 해결합니다. 상류와 하류의 관계이지 둘 중 하나를 고르는 문제가 아닙니다.

Q: Function Calling으로 로컬 스크립트를 호출할 수 있나요?

A: 가능합니다. 함수는 여러분 프로그램의 입구에 불과하고, 뒤가 API 호출이든 스크립트 실행이든 데이터베이스 조회든 모델은 관여하지 않습니다. 모델이 말하는 것은 "무엇을, 어떤 매개변수로"뿐입니다.

추천 도구

더보기