[AI & IT 지식카드] 펑션 콜링과 도구 호출

KNOWLEDGE CARD

Function Calling & Tool Call 완전 정리

AI 모델이 외부 함수·도구를 구조적으로 호출하는 메커니즘 — 개념, 구조, 흐름, 활용까지

📋 목차

  1. Function Calling vs Tool Call — 핵심 개념
  2. 동작 흐름 6단계
  3. 코드 구조 예시 (Claude API)
  4. 플랫폼별 비교 (OpenAI vs Anthropic)
  5. 주요 개념 6가지
  6. 실전 활용 사례
  7. 설계할 때 주의할 점

① Function Calling vs Tool Call — 핵심 개념

FUNCTION CALLING

LLM이 함수 이름과 인자를 JSON으로 반환하는 기능

LLM이 응답 텍스트 대신 미리 정의된 함수의 이름과 인자를 JSON 형식으로 반환하도록 하는 기능입니다. 모델 자체는 함수를 실행하지 않고, 어떤 함수를 어떤 인자로 호출해야 하는지를 결정해 반환합니다. 실제 실행은 개발자의 코드(런타임)에서 이루어집니다.

OpenAI 원조 용어 JSON 출력 결정과 실행 분리

TOOL CALL / TOOL USE

Function Calling을 포괄하는 더 넓은 현대적 개념

Function Calling을 더 넓게 추상화한 개념입니다. 함수뿐 아니라 웹 검색, 코드 실행, API 호출, 파일 시스템 접근 등 다양한 "도구"를 AI가 주도적으로 선택하고 호출하는 행위 전반을 지칭합니다. Anthropic(Claude), Google(Gemini) 등이 채택한 현대적·포괄적 용어입니다.

Claude / Gemini 용어 더 넓은 범위 에이전트 패턴 기반

② 동작 흐름 6단계

1

👤 사용자 요청

"서울 날씨 알려줘"와 같은 자연어 프롬프트를 전달합니다.

2

🧠 도구 목록 + 메시지 전달

사용 가능한 도구의 JSON Schema와 함께 메시지를 모델에 전송합니다.

3

⚡ 모델 결정 → tool_use 반환 핵심 단계

모델이 어떤 도구를 어떤 인자로 호출할지 결정하고 tool_use 블록을 반환합니다. 이것이 Function Calling의 핵심입니다.

4

⚙️ 개발자 코드가 실제 실행

런타임에서 모델이 지정한 함수를 실제로 호출하고 결과를 받습니다.

5

📤 결과를 모델에 재전달

tool_result로 실행 결과를 다시 모델에 전달합니다.

6

💬 최종 자연어 응답 생성

모델이 도구 결과를 바탕으로 사용자에게 자연어 응답을 생성합니다.

③ 코드 구조 예시 (Claude API)

ANTHROPIC API · TOOL DEFINITION & RESPONSE

# 1. 도구 스키마 정의
tools = [{
  "name": "get_weather",
  "description": "주어진 도시의 현재 날씨를 반환",
  "input_schema": {
    "type": "object",
    "properties": {
      "city": { "type": "string" }
    },
    "required": ["city"]
  }
}]

# 2. 모델 응답 — tool_use 블록 반환
{
  "type": "tool_use",
  "name": "get_weather",
  "input": { "city": "Seoul" }
}

# 3. 실행 결과를 tool_result로 재전달
{ "role": "user", "content": [{
  "type": "tool_result",
  "content": "서울 현재 기온 22°C, 맑음"
}]}

④ 플랫폼별 비교

구분 OpenAI Anthropic (Claude)
용어 function_call / tools tool_use / tools
스키마 형식 JSON Schema (parameters) JSON Schema (input_schema)
멀티 툴 호출 parallel tool calls 지원 동시 다중 tool_use 블록 반환
결과 전달 role: tool 메시지 role: user + tool_result 블록
강제 호출 tool_choice: required tool_choice: {type:"tool"}

⑤ 주요 개념 6가지

SCHEMA

도구 스키마 정의

모델에게 어떤 도구가 있고 어떤 인자를 받는지 JSON Schema로 명세합니다. name, description, input_schema 세 필드가 핵심입니다.

DECISION

모델의 도구 선택

모델은 컨텍스트를 분석해 도구 호출 필요 여부를 판단합니다. 필요하면 tool_use 블록을, 불필요하면 text 블록을 반환합니다.

PARALLEL

병렬 도구 호출

한 번의 응답에서 여러 도구를 동시에 호출할 수 있습니다. 날씨 + 주가 + 뉴스를 한 턴에 처리해 성능을 최적화합니다.

AGENTIC

에이전트 루프

Tool Use 결과를 다시 모델에 피드백하며 목표 달성까지 반복 수행합니다. 자율적 작업 완수의 기반이 되는 패턴입니다.

SAFETY

실행 전 검증

모델이 결정하고 코드가 실행하는 분리 구조 덕분에, 실행 전 파라미터를 검증·필터링하는 안전 레이어를 삽입할 수 있습니다.

STREAMING

스트리밍 대응

input_json_delta 이벤트로 tool 인자가 스트리밍되어 실시간 UI 표시가 가능합니다. UX 응답성을 크게 향상시킵니다.

⑥ 실전 활용 사례

📊 데이터 조회 & 연동

  • 실시간 날씨·주가·환율 조회
  • DB 쿼리 실행 및 결과 해석
  • CRM / ERP 시스템 데이터 호출
  • REST API 연동 (Slack, Notion 등)

🤖 에이전트 & 자동화

  • 코드 작성 → 실행 → 디버깅 루프
  • 웹 검색 후 요약·정리
  • 파일 읽기/쓰기 자동화
  • 멀티스텝 업무 워크플로우

⑦ 설계할 때 주의할 점

🎯

description을 풍부하게 작성하라

모델은 도구 이름보다 description을 보고 어떤 도구를 쓸지 결정합니다. 언제 써야 하는지, 무엇을 반환하는지를 명확히 기술하면 정확도가 크게 오릅니다.

⚠️

모델은 실행자가 아니라 계획자다

Function Calling은 모델이 함수를 "실행"하는 것이 아닙니다. 어떤 함수를 어떻게 호출할지 "결정"해 JSON을 반환할 뿐입니다. 실제 실행과 결과 처리는 항상 개발자 코드에서 담당합니다.

🔄

에이전트 루프는 종료 조건을 명시하라

Tool Use를 반복하는 에이전트 패턴은 무한 루프에 빠질 수 있습니다. 최대 반복 횟수, 목표 달성 판단 기준, 오류 처리 로직을 반드시 설계에 포함하세요.

Function Calling = 모델의 결정 + 개발자의 실행

모델은 "어떤 도구를, 어떤 인자로"를 결정하고 JSON으로 반환합니다.
실제 실행·검증·결과 피드백은 개발자 코드의 몫입니다.

이 글을 공유하기

댓글

Designed by JB FACTORY