GEO

함수 호출

함수 호출(Function Calling, 일명 Tool Use)은 LLM이 사용자 요청을 분석해 필요한 외부 함수·API를 구조화된 JSON 형식으로 호출하게 하는 기능입니다. 2023년 6월 OpenAI가 처음 공식 지원을 시작한 이후, Claude·Gemini·Llama 등 주요 모델이 모두 지원하는 표준 기능이 되었고, AI 에이전트 구현의 기본 단위가 되었습니다.

함수 호출(Function Calling, 일명 Tool Use)은 LLM이 사용자 요청을 분석해 필요한 외부 함수·API를 구조화된 JSON 형식으로 호출하게 하는 기능입니다. 2023년 6월 OpenAI가 처음 공식 지원을 시작한 이후, Claude·Gemini·Llama 등 주요 모델이 모두 지원하는 표준 기능이 되었고, AI 에이전트 구현의 기본 단위가 되었습니다.

왜 중요한가

LLM은 원래 '텍스트 생성'밖에 할 수 없는 모델입니다. 함수 호출이 없으면 "오늘 서울 날씨를 알려줘"라는 질문에도 학습 시점의 지식만 뱉을 수 있습니다. 함수 호출이 붙으면 모델이 get_weather(location: "Seoul")를 JSON으로 출력하고, 호스트 앱이 실제 API를 실행한 뒤 결과를 모델에 다시 주입해 최종 답을 생성합니다. 이 단순한 구조가 AI 에이전트·AI 검색·MCP 생태계 전체의 기반입니다.

작동 원리

  1. 도구 정의: 앱이 사용 가능한 함수 목록(이름, 설명, 파라미터 스키마)을 LLM에 전달합니다.
  2. 사용자 요청: 사용자가 자연어 질문을 입력합니다.
  3. 호출 결정: LLM이 요청을 분석해 어떤 함수를 호출할지 결정하고, 필요한 인자를 JSON으로 생성합니다.
  4. 실제 실행: 호스트 앱이 모델의 JSON 응답을 파싱해 실제 함수를 실행합니다(모델 자체는 코드를 실행하지 않습니다).
  5. 결과 주입: 함수 결과를 다시 LLM 컨텍스트에 주입합니다.
  6. 최종 응답: LLM이 결과를 바탕으로 자연어 답변을 생성합니다.

예시

도구 정의:

{
  "name": "search_blog_posts",
  "description": "Search blog posts by keyword",
  "parameters": {
    "type": "object",
    "properties": {
      "keyword": { "type": "string", "description": "search keyword" },
      "limit": { "type": "integer", "default": 5 }
    },
    "required": ["keyword"]
  }
}

사용자: "GEO에 관한 포스트 3개만 찾아줘"

모델 응답:

{
  "tool_call": "search_blog_posts",
  "arguments": { "keyword": "GEO", "limit": 3 }
}

앱 실행 후 주입: [{title: "...", url: "..."}, ...]

최종 응답: "GEO에 관한 포스트 3개를 찾았습니다..."

함수 호출 vs MCP vs ReAct

항목Function CallingMCPReAct
레벨API 호출 프로토콜도구 연결 프로토콜 표준프롬프트 패턴
역할모델이 JSON으로 도구 호출 지시서로 다른 호스트·서버의 도구 공유단계별 추론 + 행동 루프
관계MCP의 기반Function Calling을 표준화해 여러 앱에서 공유Function Calling을 루프 형태로 활용

Function Calling은 '한 번의 도구 호출'이라면 MCP는 '여러 앱이 같은 도구를 공유하는 방법', ReAct는 '호출을 반복해 추론하는 패턴'입니다.

함수 호출의 한계와 주의사항

할루시네이션 위험: 모델이 존재하지 않는 함수를 호출하거나 잘못된 인자를 생성할 수 있습니다. 엄격한 스키마 검증이 필수입니다.

병렬 호출: 최신 모델(GPT-4o, Claude Opus 4.6)은 여러 함수를 한 번에 병렬 호출할 수 있습니다. 이 경우 의존성 관리가 필요합니다.

비용: 각 호출마다 컨텍스트가 커져 토큰 비용이 증가합니다. 불필요한 도구 노출을 줄이는 것이 성능·비용 모두에 유리합니다.

보안: 프롬프트 인젝션이 함수 호출과 결합되면 피해가 커집니다. 위험한 작업(결제·삭제)은 반드시 사용자 확인 단계를 두어야 합니다.

GEO 관점의 시사점

AI 검색이 블로그에서 정보를 추출할 때, 내부적으로 fetch_web_content, search_knowledge, cite_source 같은 함수를 호출합니다. 블로그가 구조화 데이터와 깨끗한 HTML을 제공하면 이 함수 호출의 결과 품질이 올라가고, 최종 응답에 인용될 확률도 상승합니다. 즉 '함수가 읽기 쉬운 블로그'가 GEO 친화적인 블로그입니다.

Sources:

관련 인블로그 게시물

inblog에서 활용하기

inblog가 제공하는 구조화된 Markdown과 깨끗한 메타데이터는 AI 검색 엔진이 블로그 콘텐츠를 함수 호출 결과로 파싱할 때 최적의 입력 형태입니다. 향후 MCP 서버가 블로그 콘텐츠를 리소스로 노출할 때도 동일한 구조가 그대로 활용되므로, inblog 기반 블로그는 함수 호출 파이프라인에 자연스럽게 편입됩니다.