Skip to content

함수 호출 (Function Calling)

LLM은 기본적으로 말만 할 뿐, 실제 세계의 데이터나 행동에 접근하지 못합니다. 함수 호출(Function Calling, tool calling) 은 그 연결고리입니다. 모델이 "여기서는 이 함수를 불러야겠다"고 판단하면, 실행할 함수와 인자를 우리 코드에 전달하고, 우리가 그 결과를 다시 모델에게 돌려줍니다. 이 페이지는 소스 문서 OpenAI Function Calling 을 바탕으로 함수 호출의 개념과 흐름을 설명합니다.


개요

모델은 훈련 시점까지의 데이터만 알고, 실시간 날씨나 계정 정보 같은 것은 모릅니다. 함수 호출은 그 외부 시스템을 모델이 쓸 수 있게 하는 방법이에요. 핵심은 모델이 함수를 직접 실행하지 않는다는 것입니다. 모델은 "어떤 함수를, 어떤 인자로 호출할지" 결정해서 반환하고, 실제 실행은 우리 코드가 담당한 뒤 결과를 모델에 돌려줍니다. 모델은 그 결과를 보고 응답을 이어갑니다. 즉, 모델이 결정하고 우리 코드가 실행하는 분업 구조예요.


핵심 개념

도구(Tools) — 모델에게 준 기능

모델이 응답을 만들다가 필요한 데이터나 기능이 있으면, 우리가 "사용할 수 있는 도구"로 등록해둔 것 중에서 고릅니다. 예를 들어 위치의 날씨를 알려주는 get_weather 도구에 location 인자를 주는 식이에요. API 요청에 도구 목록을 함께 넣으면, 모델은 그 목록을 보고 필요할 때 호출을 결정합니다.

도구 호출(Tool Call) — 모델의 결정

모델이 프롬프트를 보고 "이걸 해결하려면 이 도구가 필요하다"고 판단하면, 그 도구를 부르는 특별한 응답인 tool call을 돌려줍니다. 예를 들어 "파리 날씨 어때?"라는 질문에 모델은 get_weather 도구를 location: "파리"로 호출하겠다는 결과를 냅니다. 모델이 함수를 직접 실행하는 게 아니라, "이걸 실행해줘"라는 요청을 보내는 것뿐이에요.

도구 결과(Tool Output) — 우리가 돌려주는 값

우리 코드는 모델의 tool call을 받아 실제 함수를 실행하고, 그 결과를 tool output으로 돌려줍니다. 이 결과는 구조화된 JSON일 수도, 일반 텍스트일 수도 있어요. 예를 들어 {"temperature": "25", "unit": "C"} 같은 JSON이죠. 결과는 call_id로 어떤 tool call에 대한 응답인지 연결됩니다. 모델은 이 결과를 받아 최종 응답을 만듭니다.

함수 호출의 가치

함수 호출이 있으면 모델의 답이 추측이 아니라 실제 값에 근거할 수 있습니다. 또 모델이 "무엇을 실행할지"를 프롬프트 문장 대신 구조화된 도구 정의로 알려주므로, 말로 지시하는 것보다 실행 대상을 정확히 고릅니다. 이런 이유로 함수 호출은 에이전트가 말로 끝나지 않고 실제 행동으로 이어지는 핵심 장치예요.


실제 적용 (데이터스케쳐스)

  • 캔버스 다이어그램 요소 배치 — 사용자가 설명하면 모델이 "어떤 요소를 어디에 놓을지"를 도구 호출로 결정해서, 실제 캔버스에 반영합니다.
  • 뉴런 (자율 에이전트) 행동 — 상황을 판단한 뒤 다음 행동을 도구 호출로 실행합니다. Function Calling이 에이전트의 실제 행동 경로예요.
  • 데이터 조회·가공 — 필요한 데이터를 가져오거나 가공하는 함수를 호출해, 답변을 추측이 아니라 실제 값에 근거하게 합니다.
  • 멀티벤더 공통화 — AI SDK가 벤더별 함수 호출 문법을 숨겨, 같은 도구 정의를 Claude·GPT·Gemini에 재사용합니다.

더 알아보기