도구 사용은 함수 호출이라고도 하며, 대규모 언어 모델이 응답 생성의 일부로 외부 함수, API 또는 프로그램을 구조화된 방식으로 호출할 수 있게 하는 기능입니다. 도구 사용이 가능한 모델은 자연어 텍스트만 생성하는 대신, 일반적으로 명명된 인수를 가진 함수 호출과 유사한 형식의 구조화된 요청을 출력할 수 있으며, 이를 둘러싼 애플리케이션이 모델을 대신하여 실행합니다. 그 결과는 모델에게 반환되어 종종 컨텍스트 창에 다시 삽입되며, 모델은 이 정보를 최종 답변에 통합하거나 추가 조치를 결정할 수 있습니다. 도구 사용은 AI 에이전트가 데이터베이스, 계산기, 검색 엔진, 코드 실행 환경 및 기타 소프트웨어를 포함하여 자체 텍스트 생성 외부의 모든 것과 상호 작용하는 기본 메커니즘입니다.
개발
초기 언어 모델은 일반 텍스트만 생성할 수 있었기 때문에 외부 시스템과의 상호 작용은 자유 형식 출력을 구문 분석하고 예상 패턴과 일치하기를 바라는 방식으로 처리해야 했으며, 이는 신뢰할 수 없는 접근 방식이었습니다. 구조화된 함수 호출은 2023년부터 주요 연구소에서 일급 모델 기능으로 도입되었으며, 제공업체는 프롬프트에 설명된 도구 집합에 대해 잘 구성된 호출을 생성하도록 모델을 특별히 훈련시키고, 호출에 포함될 수 있는 인수를 제한하는 일치하는 스키마도 함께 제공했습니다. 이로 인해 도구 사용은 극적으로 더 신뢰할 수 있게 되었고, 2024년까지 사실상 모든 최첨단 채팅 및 API 모델에서 표준 기능으로 자리 잡았으며, 2024년 11월에 도입된 앤트로픽의 모델 컨텍스트 프로토콜을 포함한 광범위한 노력과 함께 다양한 공급업체와 애플리케이션에서 도구를 설명하고 모델에 연결하는 방식을 표준화하는 데 기여했습니다.
실제 작동 방식
일반적인 도구 사용 교환은 세 부분으로 구성됩니다. 첫째, 호출 애플리케이션은 사용 가능한 도구를 모델에게 설명하며, 일반적으로 함수 이름, 설명 및 예상 인수 유형의 목록으로 프롬프트에 포함하거나 그 옆에 제공합니다. 둘째, 모델이 사용자 요청에 답변하려면 자체적으로 생성할 수 없는 정보나 작업, 예를 들어 최신 데이터 조회나 정밀한 계산 수행이 필요하다고 판단하면 자연어 답변 대신 관련 도구에 대한 구조화된 호출을 생성합니다. 셋째, 애플리케이션은 모델 외부에서 해당 호출을 실행하고, 결과는 대화에 다시 공급되며, 이후 모델은 이를 사용하여 최종 답변을 구성하거나 다른 호출을 발행할 수 있습니다. 이 루프는 단일 에이전트 작업 내에서 여러 번 반복될 수 있으며, 모델은 일반적으로 도구 호출이 필요한 시점과 자체 지식으로 직접 답변할 수 있는 시점을 독립적으로 결정하도록 훈련됩니다.
응용 분야
도구 사용은 광범위한 실용 시스템의 기반이 됩니다. 모델에는 최근 사건에 대한 질문에 답변하기 위한 웹 검색 함수, 계산이나 생성된 코드 조각을 실행하고 검증하기 위한 코드 실행 도구, 특정 레코드를 조회하기 위한 데이터베이스 쿼리 도구, 또는 메시지 전송이나 외부 시스템의 레코드 업데이트와 같은 작업을 수행하기 위한 API 호출이 제공될 수 있습니다. 또한 검색을 호출 가능한 도구로 노출하는 검색 증강 생성 파이프라인과 "도구"가 좁은 API가 아닌 마우스 및 키보드와 같은 그래픽 인터페이스 제어인 컴퓨터 사용 시스템의 기초이기도 합니다.
신뢰성 및 안전
도구 사용은 일반 텍스트 생성에는 없는 실패 모드를 도입합니다. 모델이 잘못된 도구를 호출하거나, 잘못된 형식 또는 환각된 인수를 제공하거나, 루프에서 비정상적으로 많은 횟수로 도구를 호출할 수 있기 때문입니다. 도구 호출은 이메일 전송에서 임의 코드 실행에 이르기까지 실제 세계의 부작용을 가질 수 있으므로, 도구 사용은 적대적 콘텐츠에 의해 모델이 조작되어 사용 가능한 도구를 오용하는 것을 방지하는 방법을 포함한 뚜렷한 안전 문제도 제기하며, 이는 프롬프트 주입과 밀접하게 연관된 공격 패턴입니다. 프로덕션 시스템은 일반적으로 권한 범위 지정, 중대한 작업에 대한 인간 확인 단계, 코드를 실행하거나 민감한 데이터에 접근하는 모든 도구의 샌드박싱을 통해 이를 해결합니다.