Skip to main content
Summary

Tool Calling은 답변과 실행 사이의 다리다

챗봇은 보통 문장을 만들어 답합니다. 반면 도구를 쓰는 AI는 필요한 순간에 외부 기능을 호출합니다. 예를 들어 사용자가 '이번 달 매출 합계를 계산해줘'라고 말했을 때, 모델이 머릿속으로 숫자를 추측하면 위험합니다. 대신 계산 도구, 데이터 조회 도구, 문서 검색 도구를 선택해 실행하고 그 결과를 바탕으로 답해야 합니다.

Tool Calling은 이 과정을 구조화합니다. 기본 흐름은 단순합니다. 먼저 개발자가 사용할 수 있는 도구 목록을 모델에게 알려줍니다. 모델은 사용자의 요청을 보고 어떤 도구가 필요한지 판단합니다. 필요하다고 판단하면 함수 이름과 파라미터를 정해 호출 요청을 만듭니다. 애플리케이션은 실제 함수를 실행하고, 실행 결과를 다시 모델에게 전달합니다. 마지막으로 모델은 결과를 사람이 이해할 수 있는 문장으로 정리합니다.

중요한 점은 모델이 직접 시스템을 조작하는 것이 아니라는 사실입니다. 모델은 '이 도구를 이런 값으로 호출하라'고 제안합니다. 실제 실행, 권한 확인, 오류 처리는 애플리케이션의 책임입니다.

AI가 도구를 사용한다는 것

좋은 도구 명세가 호출 품질을 결정한다

도구는 모델이 이해할 수 있는 방식으로 설명되어야 합니다. 보통 명세에는 함수 이름, 설명, 파라미터, 반환값이 포함됩니다.

함수 이름은 짧고 구체적이어야 합니다. calculate보다 calculate_total_price가 낫습니다. 설명에는 언제 이 도구를 써야 하는지와 언제 쓰면 안 되는지를 함께 적습니다. 파라미터는 가능한 한 명확한 타입과 제약을 가져야 합니다. 예를 들어 amount가 숫자인지, 통화 단위가 포함되는지, 음수를 허용하는지 정해야 합니다.

반환값도 중요합니다. 도구가 단순히 success만 반환하면 모델은 다음 답변을 만들 근거가 부족합니다. 계산 도구라면 계산 결과, 사용한 입력값, 오류 여부를 함께 돌려주는 편이 좋습니다.

모호한 도구는 잘못 호출된다

도구 설명이 모호하면 모델은 비슷해 보이는 도구를 잘못 고를 수 있습니다. send_message라는 도구가 이메일을 보내는지, 채팅 메시지를 보내는지, 문자 메시지를 보내는지 분명하지 않다면 위험합니다.

이를 줄이려면 세 가지를 지켜야 합니다. 첫째, 도구 하나가 너무 많은 일을 하지 않게 합니다. 둘째, 파라미터 스키마로 입력 범위를 제한합니다. 셋째, 시스템 지시문에 호출 규칙을 적습니다. 예를 들어 '사용자가 명시적으로 요청하지 않으면 쓰기 작업을 실행하지 말 것'처럼 경계를 정해야 합니다.

또한 모델의 도구 호출 결과를 그대로 믿으면 안 됩니다. 날짜 형식, 필수 값 누락, 허용되지 않은 옵션은 실행 전에 검증해야 합니다. Tool Calling은 자동 실행 장치가 아니라, 구조화된 요청을 받는 인터페이스에 가깝습니다.

읽기 도구와 쓰기 도구를 분리한다

도구는 위험도에 따라 나누어야 합니다. 읽기 전용 도구는 검색, 조회, 요약처럼 외부 상태를 바꾸지 않습니다. 쓰기 도구는 이메일 발송, 결제, 파일 삭제, 게시글 발행처럼 실제 변화를 만듭니다.

에이전트 설계에서는 읽기 도구를 먼저 허용하고, 쓰기 도구에는 추가 조건을 둡니다. 예를 들어 문서 검색은 바로 실행할 수 있지만, 문서 삭제는 사용자 승인을 받아야 합니다. 같은 이메일 기능도 read_email과 send_email을 분리하는 편이 안전합니다.

이 구분은 권한 관리의 출발점입니다. 모든 도구를 하나의 만능 API로 열어두면 모델이 실수했을 때 피해 범위가 커집니다. 도구는 작게 만들고, 권한은 좁게 주고, 위험한 실행 전에는 멈춰서 확인해야 합니다.

실습: 간단한 계산 도구 만들기

가장 작은 예제로 계산 도구를 생각해봅시다.

도구 이름: add_numbers
설명: 두 숫자의 합이 필요할 때만 사용한다.
파라미터:
- a: number, 첫 번째 숫자
- b: number, 두 번째 숫자
반환값:
- result: number, a와 b를 더한 값

사용자가 '128과 372를 더하면 얼마야?'라고 묻는다면 모델은 자연어로 바로 답하지 않고 add_numbers(a=128, b=372) 호출을 요청할 수 있습니다. 애플리케이션은 이 값을 검증한 뒤 실제 함수를 실행합니다. 결과가 500으로 돌아오면 모델은 '128과 372를 더하면 500입니다'라고 답합니다.

간단한 예지만 핵심은 모두 들어 있습니다. 모델은 도구를 선택하고, 애플리케이션은 실행을 통제하며, 최종 답변은 실행 결과를 바탕으로 만들어집니다. 에이전트의 출발점은 거창한 자율성이 아닙니다. 필요한 도구를 정확한 순간에, 제한된 방식으로 호출하게 만드는 설계입니다.

책 목록

처음 만나는 AI 에이전트: 도구를 쓰고 일을 끝내는 통제형 AI 설계

전체 목차 보기

이 노트는 보도·비평·교육·연구 목적으로 작성되었습니다. 저작권 문의가 있으시면 에서 알려주세요.

틸노트는 사용자가 AI를 활용해 노트를 쉽게 작성하거나 편집할 수 있는 서비스입니다.

AI 스퀘어 단톡방에 함께해요

AI 활용과 틸노트 사용 팁을 나누는 오픈채팅방입니다. 입장 비밀번호는 tilnote입니다.

참여하기