📖

함수 호출란 무엇인가요?

함수 호출은 대규모 언어 모델이 자유 형식 텍스트를 생성하는 대신 구조화된 인자를 출력하여 외부 코드나 도구의 실행을 요청할 수 있게 해주는 기능입니다. 자연어 프롬프트와 결정론적 소프트웨어를 연결하여 LLM이 데이터베이스, API 또는 기타 서비스를 안정적으로 활용할 수 있도록

함수 호출(Function calling)은 대규모 언어 모델이 자유 형식 텍스트를 생성하는 대신 구조화된 인자를 출력하여 외부 코드나 도구의 실행을 요청할 수 있게 해주는 기능입니다. 자연어 프롬프트와 결정론적 소프트웨어를 연결하여 LLM이 데이터베이스, API 또는 기타 서비스를 안정적으로 활용할 수 있도록 합니다. 모델은 함수가 필요한 시점을 판단하고 기계가 읽을 수 있는 페이로드를 제공하며, 실제 함수를 실행하고 그 결과를 모델에 다시 전달하는 책임은 호출하는 애플리케이션에 있습니다.

함수 호출의 작동 원리

개발자는 각 함수의 이름, 목적, 매개변수를 설명하는 JSON 스키마 형태로 모델에 함수 정의를 등록합니다. 사용자가 "도쿄의 날씨는 어때?"와 같은 프롬프트를 보내면 모델은 직접 답하지 않습니다. 대신 구조화된 객체를 반환합니다. 예를 들어, {"name": "get_weather", "arguments": {"city": "Tokyo"}}와 같은 형태입니다. 호스트 애플리케이션은 해당 객체를 파싱하고, 실제 함수를 실행하며(종종 타사 API를 호출), 그 결과를 새로운 메시지로 대화에 추가합니다. 그러면 LLM은 그 결과를 사용자를 위한 자연어 응답으로 변환합니다.

대부분의 제공업체는 채팅 완성 API를 통해 동일한 흐름을 제공합니다. 모델은 직접 코드를 실행하지 않습니다. 함수 호출은 본질적으로 언어 모델이 "JSON으로 말하도록" 만들어 결정론적 소프트웨어가 안전하게 활용할 수 있도록 하는 체계적인 방식입니다.

함수 호출이 중요한 이유

LLM은 언어와 추론에는 뛰어나지만, 연산, 실시간 데이터, 부수 효과(side effect)에는 약합니다. 함수 호출은 채팅 모델을 에이전트 시스템의 추론 계층으로 전환시킵니다. 모델이 계획을 세우고, 도구가 실행합니다. 이 패턴은 AI 어시스턴트가 캘린더 예약, CRM 조회, SQL 실행, 내부 마이크로서비스 호출, 로봇 동작 트리거 등을 수행할 수 있게 해주며, 동시에 개발자는 실제로 실행되는 코드를 엄격하게 통제할 수 있습니다. 또한 사실 기반 질의에서 환각 현상을 크게 줄여주는데, 그 이유는 답변이 모델의 매개변수 기억에 의존하는 것이 아니라 실제 도구 출력에 근거하기 때문입니다.

함수 호출 패턴의 주요 유형

  • 단일 호출 도구 사용(Single-shot tool use): 모델이 한 번의 턴에서 계산기나 웹 검색과 같은 하나의 함수를 호출합니다.
  • 병렬 호출(Parallel calls): 모델이 한 번의 응답에서 여러 독립적인 함수를 요청하며, 여러 소스에서 동시에 데이터를 가져올 때 유용합니다.
  • 다단계 / 에이전트 루프(Multi-step / agentic loops): 애플리케이션이 더 이상의 호출이 필요 없다고 모델이 판단할 때까지 도구 결과를 반복적으로 피드백하여 일련의 동작 체인을 가능하게 합니다.
  • 제약된 디코딩(Constrained decoding): 모델의 토큰 단위 출력을 JSON 스키마에 강제로 맞추는 기법으로, 엄격한 API에 대한 신뢰성을 높여줍니다.

함수 호출은 이제 주요 모델 제공업체 전반에 걸친 표준 기능이며, 대부분의 현대 AI 에이전트, 코파일럿, 검색 파이프라인이 구축되는 기반입니다.

자주 묻는 질문

Is function calling the same as an AI agent?
No, but it is a building block. Function calling is the mechanism that lets a model request tools; an agent is the surrounding system that plans, loops, and decides which tools to call and when to stop. Most agents rely on function calling under the hood.</</a>
Does the language model actually execute the function?
No. The model only proposes a function name and arguments. Your application receives the structured request, runs the real code in a controlled environment, and sends the output back to the model for the next turn. This separation is what makes function calling safe.
How is function calling different from standard prompt-based tool use?
Earlier approaches asked the model to "write a function call" as plain text, which required fragile regex parsing. Modern function calling is a first-class API feature where the model emits a schema-conformant JSON object, dramatically improving reliability and reducing parsing errors.
What are common pitfalls when using function calling?
Common issues include ambiguous function descriptions that make the model pick the wrong tool, missing or weakly typed parameters in the schema, and failing to validate arguments before execution. Clear, well-scoped function definitions and schema-constrained decoding help avoid most of these problems.