WIKI
도구 호출
도구 호출
언어모델이 외부 도구를 선택하고 호출하는 구조는 어떻게 작동하는가.
Scope
핵심 질문
LLM의 도구 호출(tool calling)은 어떤 방식으로 자연어 판단을 구조화된 외부 함수 실행으로 연결하는가?
포함 범위
- tool schema
- 도구 선택
- argument 생성
- 실행 결과의 재입력
- 오류와 권한
제외 범위
- 특정 API의 최신 문법
- 개별 벤더 SDK 사용법
Research
핵심 근거
- 모델은 일반적으로 도구 자체를 직접 실행하는 것이 아니라 어떤 도구를 어떤 인자로 호출해야 하는지 구조화된 요청을 생성한다.
- 실제 실행은 호스트 애플리케이션이 수행하고 결과를 다시 모델 컨텍스트에 제공한다.
- Toolformer와 ReAct 연구는 모델이 외부 도구와 상호작용하는 기본 아이디어를 보여준다.
참고 자료
- Schick et al., Toolformer: https://arxiv.org/abs/2302.04761
- Yao et al., ReAct: https://arxiv.org/abs/2210.03629
Draft
도구 호출(tool calling)은 언어 모델이 검색, 계산기, 데이터베이스, 파일 시스템, 외부 API 같은 기능을 사용할 수 있도록 연결하는 방식이다.
중요한 점은 모델이 보통 도구를 직접 실행하지 않는다는 것이다. 모델은 이 도구를 이런 인자로 호출하라는 구조화된 요청을 만들고, 실제 실행은 모델을 감싸는 애플리케이션이나 Agent Harness가 수행한다.
기본 흐름
일반적인 흐름은 다음과 같다.
- 애플리케이션이 모델에게 사용 가능한 도구의 이름, 설명, 입력 형식을 알려준다.
- 모델은 사용자 요청을 보고 일반 텍스트로 답할지 도구를 사용할지 결정한다.
- 도구가 필요하면 이름과 인자를 구조화된 형태로 출력한다.
- 호스트 애플리케이션이 실제 도구를 실행한다.
- 실행 결과를 다시 모델에게 전달한다.
- 모델이 결과를 해석해 답하거나 다음 도구를 호출한다.
Tool Schema가 중요한 이유
모델은 도구 설명을 읽고 어떤 상황에서 사용할지 판단한다. 도구 이름이 모호하거나 인자 설명이 부족하면 잘못된 도구를 고르거나 잘못된 값을 만들 가능성이 커진다.
따라서 좋은 도구 인터페이스는 사람을 위한 API 문서와 비슷하다. 입력 타입, 필수 필드, 부작용, 사용 조건이 명확해야 한다.
모델과 실행환경의 책임 분리
권한 검사는 모델에게 맡기면 안 된다.
예를 들어 모델이 파일 삭제 호출을 만들었다고 해서 애플리케이션이 무조건 실행해서는 안 된다. 실제 실행환경에서 해당 경로에 대한 권한, 사용자 승인 여부, 작업의 위험도를 확인해야 한다.
모델은 판단을 제안하고, 실행환경은 정책을 강제하는 구조가 안전하다.
오류 처리
도구는 실패할 수 있다. 잘못된 인자, 네트워크 오류, 인증 만료, 존재하지 않는 리소스 등 다양한 오류가 발생한다.
오류 메시지를 모델에게 다시 전달하면 모델이 인자를 수정해 재시도할 수 있지만, 무한 반복을 막기 위해 최대 재시도 횟수와 종료조건이 필요하다.
왜 도구를 쓰는가
LLM 자체는 계산, 최신 데이터 조회, 실제 파일 변경 같은 작업을 안정적으로 수행하기 어렵다. 도구 호출을 사용하면 언어적 판단과 결정론적 시스템을 결합할 수 있다.
계산은 계산기에 맡기고, 최신 정보는 검색이나 데이터베이스에서 가져오며, 쓰기 작업은 실제 API가 수행한다. 이 분업이 Agent 시스템의 핵심이다.
핵심
도구 호출은 LLM의 자연어 추론을 외부 시스템의 구조화된 함수 실행으로 연결하는 인터페이스다. 모델의 선택 능력만큼 도구 스키마, 권한검사, 오류처리와 실행환경 설계가 중요하다.