텍스트만 만드는 AI 모델이 호출할 함수와 인자를 골라 요청하면, 개발자 코드가 그 함수를 실행해 결과를 돌려주는 방식이다(OpenAI에서는 Function Calling). 최신 정보 조회, DB 검색, 파일 수정처럼 모델 밖의 일을 맡길 때 쓰며, 에이전트에게 "손"을 달아 주는 기능이다.
| 구분 | 도구 없음 | 도구 사용 |
|---|---|---|
| 할 수 있는 일 | 글쓰기, 요약, 답변 | 조회, 계산, 파일 수정, 외부 서비스 호출 |
| 최신 정보 | 학습 시점까지만 | 실시간으로 가져옴 |
| 정확한 계산 | 틀릴 수 있음 | 코드로 실행해 정확함 |
함수를 실행하는 쪽은 모델이 아니다. 모델은 호출할 도구 이름과 인자를 JSON으로 돌려줄 뿐이고, 실제 실행과 결과 전달은 개발자 코드가 맡는다. Claude API에서는 아래 순서로 진행된다.
| 순서 | 누가 | 하는 일 |
|---|---|---|
| 1 | 개발자 | 요청과 함께 도구 목록(이름·설명·입력 스키마) 전달 |
| 2 | 모델 | 도구와 인자를 담은 tool_use 블록 반환 |
| 3 | 개발자 | 함수를 실행하고 결과를 tool_result로 전달 |
| 4 | 모델 | 결과를 보고 다음 도구를 부르거나 최종 답변 |
이 과정을 반복하면 "지난달 매출 추이를 분석해줘" 같은 요청도 모델이 DB 조회, 데이터 정리, 분석 코드 실행까지 스스로 이어서 처리한다. Claude Code도 파일 읽기·편집·셸 실행·검색을 모두 도구로 구현해 두었기 때문에 코드베이스를 스스로 다룰 수 있다.
| 방법 | 어떻게 | 이럴 때 |
|---|---|---|
| 직접 정의 | 코드에 함수와 스키마를 작성 | 내 서비스 전용 기능 |
| MCP 서버 연결 | 서버만 연결하면 기능이 도구로 자동 등록 | 이미 있는 서비스를 연동할 때 |
| 서버 도구 | 웹 검색처럼 제공사가 대신 실행 | 실행 코드를 직접 짜지 않을 때 |
모델은 도구 이름과 설명만 보고 언제 어떤 도구를 쓸지 정한다. 설명이 모호하면 엉뚱한 도구를 부르거나 인자를 잘못 채운다. 무엇을 하는 도구인지, 언제 써야 하는지, 인자마다 무슨 뜻인지를 사람에게 설명하듯 구체적으로 적는다.
도구가 많다고 좋은 것도 아니다. 비슷한 도구가 여럿 있으면 모델이 헷갈리고, 도구 정의는 요청할 때마다 입력 토큰을 차지한다. 늘 함께 쓰는 단계는 도구 하나로 묶고, 결과도 필요한 정보만 간결하게 돌려준다.
모델이 잘못된 인자를 넣거나 필요 없는 호출을 할 수 있다. 파일 삭제, 결제, 메일 발송처럼 되돌리기 어려운 도구는 실행 전에 사용자 확인을 받게 한다. 또 도구 결과에 섞여 들어온 외부 텍스트의 지시를 모델이 따를 수 있으므로 권한은 좁게 준다. 단순한 질문 답변이나 글쓰기에는 도구가 필요 없다. 외부 정보나 실행이 꼭 필요한 작업에만 붙인다.
가장 흔한 쓰임은 에이전트에게 실제 작업 수단을 쥐여 주는 것이다. 모델이 직접 할 수 없는 조회·실행을 도구로 열어 주고, 결과를 보며 다음 단계를 스스로 정하게 한다.
| 어디서 | 어떻게 쓰나 |
|---|---|
| 코딩 에이전트 | 파일 읽기·편집·셸 실행·검색을 도구로 두고 코드를 스스로 찾아 고치고 테스트까지 돌린다 |
| 사내 데이터·문서 챗봇 | DB 조회·문서 검색 도구를 붙여 "지난달 매출" 같은 질문에 실제 데이터로 답한다 |
| 최신 정보 답변 | 웹 검색 도구로 학습 이후의 정보를 가져와 출처와 함께 답한다 |
| 업무 자동화 | MCP 서버로 메일·일정·이슈 관리 같은 기존 서비스를 연결하고, 발송·삭제는 사람 확인 후 실행한다 |