
한 줄 요약
LLM은 문장을 이해하고, 추론하고, 판단하는 데 강하다. 하지만 최신 정보를 조회하거나, 정확한 계산을 수행하거나, 외부 시스템에서 실제 작업을 실행하는 일은 LLM 혼자 안정적으로 처리하기 어렵다. 그래서 AI 에이전트에는 "도구 사용 패턴"이 필요하다. LLM은 무엇을 해야 할지 판단하고, 실제 데이터 조회나 계산, 실행은 API, 데이터베이스, 코드, 검색 시스템 같은 외부 도구가 맡는 구조다.
학습 목표
AI 에이전트의 도구 사용 패턴은 LLM이 판단과 계획을 맡고, 최신 정보 조회·정확한 계산·외부 시스템 실행은 API나 데이터베이스 같은 외부 도구가 수행하게 하는 구조다.
이 강의에서 이해해야 할 첫 번째 목표는 도구 사용 디자인 패턴의 의미와 목적이다. 도구 사용 패턴은 단순히 LLM에 기능을 더하는 방식이 아니라, LLM이 실제 세계의 시스템과 연결되어 업무를 수행하게 만드는 구조다.
두 번째 목표는 실무에서 이 패턴이 어디에 쓰이는지 파악하는 것이다. 여행 예약, 실시간 정보 조회, 고객 지원, 워크플로우 자동화처럼 실제 비즈니스에서 자주 등장하는 문제들은 대부분 외부 시스템과의 연결이 필요하다.
세 번째 목표는 구현에 필요한 구성 요소와 작동 원리를 이해하는 것이다. 함수 호출을 지원하는 모델, 도구 정의, JSON 스키마, 실제 실행 코드, 메시지 처리 로직이 함께 맞물려야 한다.
마지막 목표는 보안과 신뢰성 문제를 이해하는 것이다. 특히 외부 데이터베이스와 연결되는 경우 SQL 인젝션 같은 공격에 노출될 수 있으므로, 도구 호출을 무조건 신뢰해서는 안 된다.
LLM만으로 해결하기 어려운 한계
LLM은 학습된 데이터를 바탕으로 답변한다. 그래서 학습 시점 이후에 생긴 최신 정보나 지금 이 순간의 실시간 상황은 알 수 없다. 항공편 운항 상태, 환율, 주가, 날씨, 배송 상태처럼 계속 바뀌는 정보는 모델 내부 지식만으로 답하기 어렵다.
또한 LLM은 복잡한 수학 계산에서 실수할 수 있다. 문맥을 이해하고 계산 과정을 흉내 낼 수는 있지만, 계산기처럼 항상 정확한 결과를 보장하는 도구는 아니다.
더 중요한 한계는 외부 시스템을 직접 실행할 수 없다는 점이다. LLM 자체는 데이터베이스를 수정하거나, 결제를 처리하거나, 예약을 확정하거나, CRM에 고객 정보를 업데이트할 수 없다. 이런 작업은 실제 시스템 권한과 실행 코드가 있어야 가능하다.
이 한계를 무시하고 LLM의 텍스트 생성만으로 문제를 해결하려 하면 할루시네이션 위험이 커진다. 없는 항공편을 있다고 말하거나, 실제와 다른 가격을 제시하거나, 존재하지 않는 고객 정보를 만들어낼 수 있다. 도구 사용 패턴은 이런 위험을 줄이기 위한 현실적인 설계다.
도구 사용 패턴의 정의
도구 사용 패턴은 LLM이 특정 목표를 달성하기 위해 외부 도구와 상호작용하는 아키텍처 패턴이다. 여기서 도구는 실행 가능한 코드, API, 데이터베이스, 검색 시스템, 계산기, 업무 시스템 등 다양한 형태가 될 수 있다.
쉽게 말하면 LLM은 "머리" 역할을 한다. 사용자의 요청을 이해하고, 어떤 정보를 확인해야 하는지 판단하고, 어떤 순서로 작업해야 할지 계획한다. 반면 도구는 "팔다리" 역할을 한다. 실제로 데이터를 조회하고, 계산하고, 외부 시스템에 명령을 실행한다.
이 패턴의 핵심 원칙은 역할 분리다. LLM은 추론과 판단에 집중하고, 정확한 데이터 처리와 실행은 해당 작업에 맞게 설계된 전문 도구에 맡긴다. 이 구조를 통해 에이전트는 단순한 대화형 챗봇을 넘어 실제 업무를 처리하는 시스템에 가까워진다.
함수 호출의 기본 흐름
함수 호출은 도구 사용 패턴을 구현하는 대표적인 방식이다. 먼저 애플리케이션은 모델에게 사용할 수 있는 도구 목록과 각 도구의 입력 형식을 알려준다. 보통 도구 이름, 설명, 필요한 인자, 인자의 타입을 JSON 스키마 형태로 정의한다.
그다음 모델은 사용자 요청을 분석한다. 예를 들어 사용자가 "내일 서울에서 도쿄로 가는 항공편을 찾아줘"라고 요청하면, 모델은 일반 답변을 생성하는 대신 항공편 조회 도구가 필요하다고 판단한다.
모델은 직접 항공편을 조회하지 않는다. 대신 어떤 도구를 어떤 인자로 호출해야 하는지 명령 형태로 반환한다. 이후 애플리케이션이 실제 함수를 실행해 API를 호출하거나 데이터베이스를 조회한다.
도구 실행 결과는 다시 모델에게 전달된다. 모델은 이 결과를 바탕으로 사용자가 이해하기 쉬운 최종 답변을 만든다. 즉, 모델은 도구를 "선택"하고 "결과를 해석"하지만, 실제 실행은 애플리케이션 계층에서 이루어진다.
구현에 필요한 핵심 요소
도구 사용 패턴을 구현하려면 먼저 함수 호출을 지원하는 모델이 필요하다. 모델이 단순히 텍스트만 생성하는 것이 아니라, 어떤 도구를 호출해야 하는지 구조화된 형태로 표현할 수 있어야 한다.
다음으로 도구 정의가 필요하다. 각 도구에는 이름, 설명, 입력값 형식이 있어야 한다. JSON 스키마는 모델이 어떤 인자를 넣어야 하는지 이해하게 해주는 약속이다.
실제 실행 코드도 필수다. 모델이 "항공편 조회 함수를 호출하라"고 지시하더라도, 그 함수를 실행해 외부 API나 데이터베이스와 통신하는 코드는 애플리케이션 쪽에 있어야 한다.
메시지 처리 로직도 중요하다. 사용자 메시지, 모델의 도구 호출 요청, 도구 실행 결과, 최종 답변이 올바른 순서로 오가야 한다. 이 흐름이 꼬이면 모델이 잘못된 맥락에서 답하거나, 이미 실행한 도구를 반복 호출할 수 있다.
실무에서는 프레임워크나 오케스트레이션 구조도 필요하다. 여러 도구를 조합하거나, 단계가 긴 작업을 처리하거나, 상태를 유지해야 하기 때문이다. 여기에 예외 처리와 상태 관리가 더해져야 안정적인 에이전트가 된다.
실무 활용 사례
여행 예약 비서는 도구 사용 패턴을 이해하기 좋은 예다. 사용자는 자연어로 "다음 주 금요일에 부산에서 제주로 가는 항공편을 찾아줘"라고 말한다. LLM은 요청을 해석하고 필요한 조건을 정리한다. 실제 항공편 조회는 항공 API가 담당한다. 이후 모델은 조회 결과를 비교해 사용자가 선택하기 쉽게 설명한다.
실시간 정보 조회에도 적합하다. 환율, 주가, 날씨, 교통 상황, 배송 상태처럼 계속 바뀌는 데이터는 모델 기억에 의존하면 안 된다. 최신 데이터를 제공하는 API나 검색 시스템을 호출해야 한다.
고객 지원에서도 활용도가 높다. 고객의 주문 내역을 조회하고, 티켓 상태를 확인하고, 환불 가능 여부를 판단하는 과정은 내부 시스템과 연결되어야 한다. LLM은 고객의 질문을 이해하고 응대 문장을 만들 수 있지만, 실제 고객 정보는 도구를 통해 확인해야 한다.
워크플로우 자동화에서도 도구 사용 패턴이 중요하다. 이메일 초안을 작성하고, 회의 일정을 등록하고, CRM을 업데이트하는 작업은 각각 외부 시스템 실행을 필요로 한다. 에이전트는 여러 도구를 순서대로 사용해 하나의 업무 흐름을 완성할 수 있다.
콘텐츠 편집과 운영에도 적용할 수 있다. 문서를 요약하고, 외부 자료를 검색하고, 데이터 기반 보고서를 생성하는 과정에서 LLM은 글의 구조와 표현을 담당하고, 도구는 검색과 데이터 조회를 담당한다.
보안과 신뢰성 고려사항
도구 사용 에이전트는 외부 시스템과 연결되기 때문에 보안 설계가 필수다. 단순 챗봇은 잘못된 답을 하더라도 피해가 제한적일 수 있지만, 도구를 가진 에이전트는 실제 데이터 조회, 수정, 실행을 할 수 있다. 따라서 권한과 검증이 중요하다.
특히 SQL 인젝션에 주의해야 한다. 사용자의 입력을 그대로 SQL 쿼리에 넣으면 공격자가 쿼리 구조를 조작할 수 있다. 자연어 요청을 모델이 해석해 쿼리로 바꾸는 구조에서는 이 위험이 더 커질 수 있다.
이를 줄이려면 사용자 입력을 직접 쿼리에 삽입하지 않아야 한다. 가능한 한 파라미터화된 쿼리나 안전한 데이터 접근 계층을 사용해야 한다. 또한 처음부터 읽기 전용 권한을 우선 적용하는 것이 좋다. 조회만 필요한 에이전트에게 쓰기 권한까지 줄 필요는 없다.
운영 데이터와 분리된 전용 데이터 환경을 사용하는 것도 좋은 방법이다. 에이전트가 실수하거나 공격을 받더라도 실제 운영 시스템에 직접적인 피해가 가지 않도록 완충 지대를 두는 것이다.
도구별 권한은 최소화해야 한다. 항공편 조회 도구에는 조회 권한만, 일정 등록 도구에는 일정 관련 권한만 주는 식이다. 모든 도구가 모든 시스템에 접근할 수 있게 만들면 문제가 생겼을 때 피해 범위가 커진다.
또한 모델이 생성한 도구 호출을 무조건 믿으면 안 된다. 애플리케이션 계층에서 인자 형식, 권한, 실행 조건을 다시 검증해야 한다. 실행 전 검증, 로깅, 감사 추적, 예외 처리가 있어야 실제 서비스에서 신뢰할 수 있는 에이전트가 된다.
핵심 정리
도구 사용 패턴은 AI 에이전트가 단순한 대화형 모델을 넘어 실제 업무를 수행하게 만드는 핵심 기술이다.
LLM은 판단과 계획에 강하지만, 최신 데이터 조회, 정확한 계산, 외부 시스템 실행은 전문 도구에 맡기는 편이 안정적이다.
함수 호출은 이 패턴을 구현하는 대표적인 방식이다. 모델은 적절한 도구와 인자를 선택하고, 애플리케이션은 실제 함수를 실행하며, 모델은 그 결과를 바탕으로 최종 답변을 만든다.
실무 적용에서는 기능 구현만큼 보안이 중요하다. 권한 최소화, 입력 검증, 읽기 전용 접근, 전용 데이터 환경, 로깅과 예외 처리를 함께 설계해야 안전한 도구 사용 에이전트를 만들 수 있다.
참고
이 노트는 보도·비평·교육·연구 목적으로 작성되었습니다. 저작권 문의가 있으시면 에서 알려주세요.
