음성 AI 에이전트, 똑똑하게 역할 분담하는 2-에이전트 아키텍처
음성 기반 AI 에이전트를 개발하며 레스토랑 예약, 고객 서비스 전화 등 실제 업무에 적용하려다 보면 예상치 못한 문제에 직면하게 됩니다. 초기에는 모든 기능을 하나의 에이전트에 통합하는 모놀리식 방식을 사용했지만, 복잡한 고객 요청 처리, 레스토랑 예약 가능 여부 확인, 실시간 통화 관리, 예상치 못한 응답 처리 등 모든 면에서 만족스럽지 못했습니다.
모놀리식 AI 에이전트의 한계
모든 기능을 하나의 에이전트에 담으려다 보니, 실시간 통화 중 맥락을 잃어버리는 문제가 발생했습니다. 예를 들어, 레스토랑 직원이 "알레르기가 있으신가요?"라고 질문했을 때, 에이전트는 사용자가 사전에 알레르기 정보를 제공하지 않았다면 대응하지 못했습니다. 또한, 사용자 선호도 분석, 맥락 파악, 정보 업데이트 등 다양한 작업을 동시에 수행해야 하므로 처리 속도가 느려 자연스러운 대화가 어려웠습니다.
2-에이전트 아키텍처의 등장
이러한 문제점을 해결하기 위해, 저는 '2-에이전트 아키텍처'라는 새로운 방식을 개발했습니다. 이 아키텍처는 '컨텍스트 에이전트'와 '실행 에이전트'라는 두 개의 특화된 에이전트를 협력 구조로 배치하여 역할을 분담합니다. 컨텍스트 에이전트는 상황을 충분히 이해하기 위해 시간을 들여 분석하는 역할을, 실행 에이전트는 실제 전화 통화를 담당하며 순간적인 결정을 내리는 역할을 수행합니다.
컨텍스트 에이전트: 전략 설계자
컨텍스트 에이전트는 마치 리서치 애널리스트처럼, 행동을 취하기 전에 상황을 충분히 이해하기 위해 시간을 들여 분석합니다. 사용자 요청을 수집하고, 선호도를 정제하며, 웹 검색이나 MCP 도구를 활용해 사용자의 조건에 맞는 레스토랑을 조사합니다. 예약 가능 여부, 메뉴, 식이 제한 등을 확인한 후 사용자에게 정보를 제공하고 의견을 묻습니다. 이러한 과정을 통해 에이전트는 상세한 실행 계획을 세워 실제 전화 예약에 대비합니다.
실행 에이전트: 실시간 수행자
컨텍스트 에이전트가 정보를 수집하고 분석하는 동안, 실행 에이전트는 실제 전화 통화를 담당합니다. 컨텍스트 에이전트가 정리한 정보를 바탕으로 전화를 걸고, 실시간으로 발생하는 상황에 따라 적절하게 대응합니다. 예를 들어, 레스토랑 직원이 예약이 꽉 찼다고 말하면 대체 시간을 제안하고, 전화번호를 요청하면 고객의 번호를 불러줍니다. 실행 에이전트는 빠르고 유연하게 대처하며 눈앞의 상호작용에 집중합니다.
구현 패턴: 순차적 처리 vs 지속적 협업
음성 AI 시스템을 구축하고 테스트하는 과정에서 두 가지 주요 구현 패턴을 확인할 수 있었습니다. 순차적 처리는 컨텍스트 에이전트가 모든 정보를 수집하고 실행 계획을 세운 후에 실행 에이전트가 전화를 거는 방식입니다. 맥락의 완성도를 높일 수 있지만 시간이 더 소요됩니다. 지속적 협업은 컨텍스트 에이전트가 계속 분석하고 실행 에이전트가 대화를 주도하면서 실시간 피드백을 주고받는 방식입니다. 장시간 이어지는 고객 서비스 통화에 적합합니다.
2-에이전트 아키텍처의 효과
2-에이전트 아키텍처는 시스템 성능을 뚜렷하게 개선했습니다. 컨텍스트 에이전트는 정확성에, 실행 에이전트는 대화에 최적화된 모델을 사용하여 맥락의 정확성과 대화의 자연스러움을 동시에 향상시켰습니다. 또한, 예약이 몰리는 시간대에는 실행 에이전트를 늘려 동시 통화를 처리하고, 조사 작업에는 소수의 컨텍스트 에이전트만 유지하는 등 독립적인 확장이 가능했습니다. 오류 발생 시에도 잘못된 컨텍스트 분석인지, 실행 단계 문제인지 쉽게 구분하여 디버깅 효율을 높일 수 있었습니다.
맺음말
2-에이전트 아키텍처는 복잡한 실제 업무를 위한 AI 시스템 설계 방식에 있어 패러다임 전환을 의미합니다. 컨텍스트 분석과 실행을 분리하는 접근 방식은 신뢰성, 확장성, 유지 관리 용이성을 높여줍니다. 이 아키텍처 패턴을 통해 신중한 분석과 민첩한 실행을 결합한 AI 시스템을 구축하고, 현실 세계의 복잡성을 효과적으로 해결할 수 있습니다.