대규모 언어 모델(LLM)은 고급 자연어 처리 기술을 활용해 복잡한 작업을 수행함으로써 우리가 기술과 상호작용하는 방식을 혁신하고 있습니다. 최근 몇 년간 최첨단 LLM 모델들은 다양한 혁신적 응용 프로그램을 가능하게 했습니다. 작년에는 RAG(Retrieval Augmented Generation)가 주목받았는데, 이를 통해 사용자들은 벡터 임베딩을 이용해 조직의 데이터를 LLM에 제공하여 대화형 AI 챗봇을 만들 수 있었습니다.
하지만 이는 시작에 불과합니다. "정보 검색 기반 생성(RAG)"는 강력하지만 정적 지식 검색에만 국한되는 한계가 있습니다. 이제 우리는 한 걸음 더 나아가, 내부 데이터를 기반으로 질문에 답변할 뿐만 아니라 최소한의 인간 개입으로 실제 조치를 취할 수 있는 고객 서비스 에이전트를 상상해볼 수 있습니다.
LLM의 의미 이해와 언어적 능력을 활용하면, 단순히 사용자 쿼리에 응답하는 것을 넘어 실제로 '행동'할 수 있는 완전 자율 의사결정 애플리케이션을 만들 수 있습니다.
Databricks Mosaic AI 에이전트 프레임워크:
Databricks가 새롭게 선보인 Mosaic AI 에이전트 프레임워크는 개발자들이 다양한 대규모 언어 모델(LLM)을 활용해 실제 서비스에 적용 가능한 에이전트 시스템을 구축할 수 있도록 지원합니다. 이 프레임워크의 핵심 기능은 RAG 애플리케이션을 포함한 고품질 AI 에이전트의 개발, 배포, 평가를 위한 종합적인 도구 세트를 제공하는 것입니다.
개발자들은 다양한 라이브러리를 활용해 에이전트를 생성하고 로그를 기록할 수 있으며, MLFlow와도 쉽게 연동할 수 있습니다. 에이전트의 매개변수 조정을 통해 빠른 실험과 반복 개발이 가능하며, 에이전트 추적 기능을 통해 로그를 기록하고 분석하여 에이전트의 응답 과정을 자세히 디버깅하고 이해할 수 있습니다.
이 블로그 시리즈의 첫 부분에서는 에이전트의 기본 개념과 핵심 구성 요소를 살펴보고, Databricks에서 제공하는 최고 성능의 오픈소스 기본 모델을 사용하여 온라인 소매업체를 위한 자율적인 다중 대화형 고객 서비스 AI 에이전트를 구축하는 과정 을 소개합니다. 후속 시리즈에서는 다중 에이전트 프레임워크를 탐구하고, 같은 비즈니스 애플리케이션을 위한 고급 다단계 추론 기반의 다중 에이전트 시스템 구축 방법을 다룰 예정입니다.
LLM 에이전트는 복잡한 작업을 수행하기 위해 설계된 차세대 고급 AI 시스템입니다. 이들은 미래를 예측하고, 과거 대화를 기억하며, 상황과 필요에 따라 적절한 방식으로 응답을 조정할 수 있는 다양한 도구를 활용합니다.
LLM 에이전트는 RAG 기술의 자연스러운 진화 형태로 볼 수 있습니다. 이는 최신 대규모 언어 모델에 외부 시스템이나 도구, 기능을 추가하여 자율적인 의사결정을 가능하게 하는 접근 방식입니다. 복합 AI 시스템에서 에이전트는 메모리, 자기 성찰 능력, 도구 사용 등으로 강화된 의사결정 엔진으로 볼 수 있습니다. 쉽게 말해, 이들은 독립적으로 학습하고, 추론하며, 행동할 수 있는 매우 지능적인 의사결정 엔진이라고 생각하면 됩니다. 이러한 기술의 궁극적인 목표는 진정으로 자율적인 AI 애플리케이션을 만드는 것입니다.
에이전트 애플리케이션은 다음과 같은 주요 구성 요소로 이루어집니다:
에이전트 프레임워크의 핵심은 데이터를 처리하고 이해할 수 있는 사전 학습된 범용 대규모 언어 모델입니다. 이러한 모델들은 대개 고성능의 사전 학습 모델로, 이들과 상호작용하기 위해서는 특정한 프롬프트를 작성해야 합니다. 이 프롬프트를 통해 필수적인 맥락을 제공하고, 응답 방식, 사용할 도구, 그리고 상호작용 중 달성해야 할 목표 등을 안내합니다.
에이전트 프레임워크의 장점 중 하나는 사용자 정의가 가능하다는 점입니다. 이를 통해 모델에 고유한 정체성을 부여할 수 있으며, 특정 작업이나 상호작용의 요구사항에 맞춰 모델의 특성과 전문성을 조정할 수 있습니다. 결과적으로, LLM 에이전트는 고급 데이터 처리 능력과 맞춤형 기능을 완벽하게 결합하여, 다양한 작업을 정밀하고 유연하게 처리할 수 있는 강력한 도구로 자리잡게 됩니다.
메모리는 에이전트 아키텍처의 핵심 구성 요소입니다. 이는 에이전트가 대화 내용을 저장하는 공간으로, 크게 두 가지 유형으로 나눌 수 있습니다. 첫째, 단기 작업 메모리입니다. 이는 LLM 에이전트가 현재 정보를 즉각적인 맥락으로 유지하고, 작업이 완료되면 내용을 지우는 임시 저장소입니다. 둘째, 장기 메모리(또는 에피소드 메모리)입니다. 이는 장기간의 대화를 저장하여 에이전트가 패턴을 이해하고, 과거 경험에서 학습하며, 미래 상호작용에서 더 나은 결정을 내리는 데 도움을 줍니다. 이러한 대화 내용은 주로 벡터 데이터베이스와 같은 외부 저장소에 보관됩니다.
이 두 가지 메모리를 효과적으로 활용함으로써, 에이전트는 시간이 지남에 따라 사용자의 선호도를 반영한 맞춤형 응답을 제공하고 더욱 효율적으로 작동하게 됩니다. 단, 에이전트의 메모리와 LLM의 대화 메모리(conversational memory)는 서로 다른 목적을 가지고 있으므로 혼동하지 않도록 주의해야 합니다.
LLM 에이전트의 중요한 구성 요소 중 하나는 복잡한 작업을 관리 가능한 단위로 나누고 각 단위를 실행하는 데 도움을 주는 계획 수립 기능입니다. 계획을 세우는 과정에서 플래너는 연쇄적 사고 추론(chain-of-thought)이나 의사결정트리와 같은 계층적 추론 등 다양한 추론 기법을 활용하여 최적의 경로를 선택합니다.
계획이 수립되면, 에이전트들은 여러 내부 피드백 메커니즘을 통해 그 효과성을 검토하고 평가합니다. 대표적인 방법으로는 ReAct와 Reflexion 등이 있습니다. 이러한 방법들을 통해 LLM은 일련의 사고 과정을 거치며 결과를 관찰함으로써 복잡한 작업을 해결해 나갑니다. 이 과정을 반복하면서 점진적으로 성능을 개선해 나가게 됩니다.
일반적인 다중 대화 챗봇에서는 단일 LLM 에이전트가 계획과 조정을 담당하지만, 다중 에이전트 프레임워크에서는 라우팅이나 계획 등 특정 작업을 수행하는 별도의 에이전트가 존재할 수 있습니다. 이에 대해서는 다음 블로그 시리즈에서 다중 에이전트 프레임워크를 다 룰 때 더 자세히 설명하도록 하겠습니다.
도구는 에이전트의 중요한 구성 요소로, 중앙 핵심 에이전트의 지시에 따라 다양한 작업을 수행합니다. 이는 API 호출, 파이썬 또는 SQL 함수, 웹 검색, 코딩, Databricks Genie space 등 다양한 형태의 작업 실행자가 될 수 있습니다. 이러한 도구들을 통합함으로써 LLM 에이전트는 워크플로우를 따라 특정 작업을 수행하고, 관찰 결과(observation)를 수집하며, 하위 작업 완료에 필요한 정보를 얻을 수 있습니다.
이런 애플리케이션을 구축할 때 주의해야 할 점은 상호작용의 지속 시간입니다. 장기간 이어지는 상호작용에서는 오래된 대화를 잊을 가능성이 있어 LLM의 컨텍스트 한계를 쉽게 초과할 수 있습니다. 사용자와의 긴 대화 중 결정 흐름의 제어는 단일 스레드, 병렬 멀티 스레드, 또는 루프 형태로 이루어질 수 있으며, 결정 체인이 복잡해질수록 그 구현도 복잡해집니다.
그림 1에서 볼 수 있듯이, 단일 고성능 LLM이 의사결정의 중심 역할을 합니다. 사용자의 질문을 바탕으로 어떤 경로로 의사결정 흐름을 라우팅할지 판단합니다. 이 과정에서 여러 도구를 활용하여 특정 작업을 수행하고, 중간 결과를 메모리에 저장한 뒤, 계획을 수립하고 최종적으로 결과를 사용자에게 전달할 수 있습니다.

