LLM도 도구(Tool)를 활용한다.
지난 시간에는 AI 에이전트의 두뇌와도 같은 LLM이 갖추어야 할 조건들에 대해 배워보았습니다. LLM 성능의 발전과 함께 범용적이고 자율화된 AI 에이전트의 실현이 가시화되고 있습니다. SF 영화 속에서나 등장하던 '자비스(Jarvis)'가 현실이 되어 나타날지도 모른다는 기대감이 점점 더 고조되고 있는 것입니다.
그러나 LLM은 생각보다 유연하지 못해서 사람처럼 실시간으로 정보를 업데이트할 수 없습니다. 모든 LLM은 사전학습(pre-trained)된 데이터에 크게 의존한다는 한계점을 가지고 있습니다. 하지만 지식은 유동적이고 지금 이 순간에도 새로운 데이터들이 쌓이고 있으며, 사용자들이 원하는 답변을 위해서는 일일이 데이터를 업데이트해주는 작업이 필요합니다.
예를 들면 2021년도까지의 데이터만으로 사전학습 된 챗GPT는 그 이후에 발생한 사건들에 대해 아직까지도 잘 대답하지 못합니다. 그리고 2021년 이후에 벌어진 사건중 챗GPT가 잘 모르는 내용을 질문했을 때 그것이 흔히 있을법한 내용이라면 아무 말이나 그럴듯하게 지어내는 환각현상으로 둘러대고, 그것이 확률상 낮거나 불가능해 보이는 내용이라면 모른다거나 그런 일은 발생한 적이 없다고 잡아땝니다.
오픈 AI 측은 대대적으로 GPT 시리즈 모델들의 훈련 데이터를 업데이트하여 2021년 이후 지식이 끊기는 현상을 해결했다고 주장하지만, 이러한 지식 끊김은 GPT-4o가 개발된 이후에도 여전히 발생하고 있습니다. 현존하는 최고 수준의 SoTA(State-of-The-Art) 모델 중 하나로 여겨지는 GPT-4o이지만, 여전히 LLM의 한계점을 고스란히 노출하고 있는 것입니다.
이번 시간에 배워볼 도구(Tool)는 AI 에이전트가 외부 세계와 상호작용하고 데이터를 처리할 수 있도록 하는 필수적인 기능을 합니다. 앞서 살펴본 것처럼 LLM이 기본적으로 사전학습된 데이터에 기반한 작업만 수행할 수 있기 때문에 실시간 정보 접근이나 구체적인 작업 실행이 불가능합니다.
Google이 제시한 Agent 백서에 따르면 인지 아키텍처(Cognitive Architecture) 상의 LLM은 확장(Extension), 함수(Functions), 데이터베이스(Data Store) 등 다양한 도구들 활용하여 API 호출과 DB 접근 및 데이터 변환 그리고 코드 실행 등의 작업을 수행합니다. 이처럼 도구를 활용하는 덕분에 AI 에이전트는 LLM을 단독으로 사용할 때 보다 유연하고 지능적으로 작동할 수 있게 됩니다. 그럼 각각의 도구들에 대해서 보다 자세히 배워보도록 하겠습니다.
1) 확장(Extensions)
확장 도구는 에이전트가 API를 쉽게 호출하고 실행할 수 있도록 표준화된 인터페이스를 제공하는 역할을 합니다. 예를 들어 항공편 예약 에이전트가 Google Flights API를 호출하여 사용자가 원하는 것과 유사한 항공편 정보를 검색해 오는 경우를 가정해 봅시다. 확장 도구는 에이전트가 각 API의 매개변수 및 동작 방식을 이해하도록 설계됩니다. 덕분에 에이전트는 사용자의 요청에 따라 적절한 API를 선택하고 호출할 수 있는 것이지요.
2) 함수(Functions)
함수 도구는 클라이언트 측에서 실행되는 독립적인 코드 조각이라고 볼 수 있습니다. AI 에이전트는 적절한 함수와 매개변수를 선택하여 데이터를 생성하거나 작업을 실행할 수 있습니다. 특히 함수 기능은 보안 제약이 있거나 API 호출을 실시간으로 처리할 수 없는 경우 유용합니다.
이해를 돕기 위해 앞서 살펴본 항공편 예약 에이전트와 함께 활용되는 여행 계획 에이전트에 대해 살펴봅시다. 여행 계획 에이전트는 사용자의 요구에 따라 JSON 형식으로 도시 목록을 생성하고 이를 프런트엔드 애플리케이션으로 전달하는 역할을 합니다.
3) 데이터베이스(Data Stores)
데이터베이스는 구조화된 데이터(PDF, 스프레드시트 등)나 비구조화된 데이터(HTML, TXT 등)를 에이전트가 활용할 수 있도록 하는 시스템을 말합니다. 앞서 배웠던 증강검색생성(RAG, Retrieval Augmented Generation) 파이프라인에 등장하는 벡터 DB가 바로 여기에 해당합니다. 여러 번 강조했듯이 벡터 DB는 LLM의 지식베이스로서 빼놓을 수 없는 매우 중요한 도구입니다.
데이터베이스는 에이전트가 외부 세계와 상호작용할 수 있는 핵심 매개체이며, 각 도구는 특정 작업을 수행하기 위해 설계되었습니다. 데이터베이스 덕분에 에이전트는 정적인(static) 언어 모델의 한계를 넘어 실시간 데이터와 상호작용하며 동적(dynamic)으로 작업이 가능해집니다. 이번 시간에는 LLM의 손과 발이 되어주는 유용한 도구들이 어떻게 작동하는지 배워보았습니다. 다음시간에는 사람뿐만 아니라 LLM 간의 상호작용을 가능하게 해주는 오케스트레이션(Orchestration)에 대해 소개하겠습니다.