Function calling(함수 호출)은 「LLM이 자유 텍스트가 아니라 정해진 함수와 그 인자를 출력하도록 만든」 기능입니다.
2023년 OpenAI가 처음 도입했고, 지금은 모든 주요 LLM이 지원하는 표준 기능이 되었습니다.
예를 들어 「내일 서울 날씨 알려 줘」라는 사용자 질문에 LLM이 자유 텍스트로 답하는 대신 「get_weather(city="Seoul", date="tomorrow")」라는 함수 호출을 생성합니다.
시스템이 그 함수를 실제로 실행해 결과(예: 「맑음, 22도」)를 받아 LLM에 다시 보내면, LLM이 사용자 친화적 답을 만들어 줍니다.
이 방식의 장점은 「구조화된 출력」입니다.
자유 텍스트는 파싱하기 어렵지만 함수 호출은 항상 정해진 형식이므로 시스템이 안정적으로 다음 동작을 결정할 수 있습니다.
또 LLM에게 사용 가능한 함수 목록과 각 함수의 설명·인자를 미리 알려 줘 「어떤 함수가 적합한지」 자동으로 선택합니다.
비유하자면 function calling은 「식당에서 손님이 "맛있는 거 주세요"라 말하는 대신 미리 정해진 메뉴판에서 "비빔밥 + 김치찌개"를 주문하는 일」과 같습니다.
주방이 즉시 어떤 음식을 만들지 정확히 알 수 있습니다.
function calling은 RAG, 데이터베이스 조회, API 호출, 스마트홈 제어 등 거의 모든 LLM 응용의 기본 부품입니다.
JSON 형식의 깨끗한 출력을 보장하므로 신뢰성 있는 시스템 구축에 결정적이며, MCP(Model Context Protocol) 같은 더 큰 프로토콜의 토대가 됐습니다.
한 줄 요약
Function calling은 LLM이 자유 텍스트 대신 정해진 함수와 인자를 JSON 형식으로 출력하게 한 기능으로, 구조화된 출력을 보장해 안정적인 시스템 구축의 토대가 됩니다.
더 알아볼 것
- JSON Schema로 함수 인자 정의
- Tool use — Anthropic의 같은 개념
- Structured Output — 더 일반화된 형태