---
tags: [AI-Agent, 패턴]
---

# Tool Calling

> 에이전트가 외부 도구(API·검색·코드 실행 등)를 호출해 자신의 능력을 확장하는 패턴.

## 핵심 개념

Tool Calling은 LLM이 자체 지식만으로 풀 수 없는 작업을, 외부 도구를 선택·호출해 해결하는 패턴이다. 도구는 함수, REST API, 데이터베이스 쿼리, 코드 인터프리터, 검색 엔진 등 무엇이든 될 수 있다.

- LLM은 어떤 도구를, 어떤 인자로 호출할지 **결정**하고, 실제 실행은 런타임/오케스트레이터가 수행한다.
- 도구 결과는 다시 컨텍스트로 들어와 다음 추론에 쓰인다. 이 교차 루프가 [[ReAct]]의 핵심이다.
- 도구 스키마(이름·설명·인자 타입)를 명확히 정의해야 모델이 올바르게 선택한다.

> Tool Calling은 "도구를 활용한다"는 넓은 설계 패턴이고, [[Function Calling]]은 이를 구현하는 LLM API 수준의 메커니즘(구조화된 함수 호출 출력)이다.

## 동작 방식

1. **도구 등록** — 사용 가능한 도구의 스키마를 모델에 제공한다.
2. **선택** — 모델이 현재 상황에 맞는 도구와 인자를 결정한다. (보통 JSON 형태로 출력)
3. **실행** — 오케스트레이터가 실제 도구를 실행하고 결과를 받는다.
4. **반영** — 결과를 컨텍스트에 추가하고, 필요하면 추가 호출을 반복한다.

## 예시

```
사용자: "이번 주 환율로 100달러는 몇 원?"
→ tool: get_exchange_rate(base="USD", quote="KRW")
→ result: 1380
→ 답변: "약 138,000원입니다."
```

도구 계층화(읽기/쓰기 분리, 위험 도구 승인 게이트)는 가드레일 설계의 핵심이다.

## 관련 노트

- [[Function Calling]]
- [[ReAct]]
- [[Tool]]
- [[Agent Architecture]]
- [[Human In the Loop]]
