Persistent Agent Memory with Azure AI Foundry: A Complete Developer Guide
개요
Azure AI Foundry Memory Service는 AI 에이전트가 대화 세션 전반에 걸쳐 사용자 정보와 대화 요약을 기억할 수 있도록 하는 관리형 서비스입니다.
주요 내용
* 스테이트리스 에이전트 문제 해결: 기존 AI 에이전트는 각 대화가 새로운 상태에서 시작되어 사용자 경험이 반복적이고 비개인적으로 느껴지는 한계가 있었습니다. Azure AI Foundry Memory는 이러한 문제를 해결하여 에이전트가 장기적으로 정보를 기억하고 활용하도록 합니다.
* Azure AI Foundry Memory의 역할: LLM의 단기적인 컨텍스트 창을 보완하여, 추출된 사실과 대화 요약을 영구적으로 저장하는 Memory Store를 제공합니다. 이를 통해 에이전트는 과거 대화에서 학습한 내용을 현재 대화에 통합할 수 있습니다.
* 3단계 메모리 파이프라인:
1. 추출(Extraction): 대화 내용을 분석하여 기억할 만한 사실(사용자 이름, 선호도 등)을 LLM을 통해 추출합니다.
2. 통합(Consolidation): 추출된 새로운 사실을 기존 메모리와 병합하고, 중복을 제거하며, 상충되는 정보를 해결하여 메모리 데이터베이스를 정제합니다.
3. 검색(Retrieval): 새로운 대화 세션 시작 시, 사용자의 범위 내에서 저장된 메모리를 의미론적으로 검색하여 가장 관련성이 높은 정보를 에이전트의 시스템 컨텍스트에 주입합니다.
* 두 가지 메모리 유형:
* 사용자 프로필 메모리 (User Profile Memory): 이름, 식단 제한, 언어 선호도 등 변경이 적고 일관되게 적용되는 개인 정보를 저장합니다. 세션 시작 시 한 번 전체가 검색되어 시스템 컨텍스트에 주입됩니다. user_profile_details 매개변수로 설정하며, 민감 정보 제외 등의 거버넌스 지침을 포함할 수 있습니다.
* 채팅 요약 메모리 (Chat Summary Memory): 대화 내용을 주제별로 요약하여 저장합니다. 개별 사실이 아닌 대화의 맥락과 결정을 압축하여 기록하며, 의미론적 검색을 통해 필요한 시점에 맥락에 맞게 검색됩니다. chat_summary_enabled=True로 설정하여 활성화할 수 있습니다.
* 메모리 아키텍처:
* Memory Store: 모든 메모리를 저장하는 최상위 리소스이며, 한 번 생성 후 변경되지 않습니다. 추출 및 통합을 위한 채팅 모델과 의미론적 검색을 위한 임베딩 모델이 필요합니다.
* 범위 (Scopes) 및 격리: 단일 Memory Store 내에서 메모리는 범위별로 구성되며, 각 사용자는 고유한 범위를 가져 다른 사용자의 메모리에 접근할 수 없습니다.
* LLM 기반 통합: 새로운 정보와 기존 메모리 간의 병합, 중복 제거, 충돌 해결 과정을 LLM이 수행하여 메모리 저장소가 일관되고 정확하게 유지됩니다.
* 접근 패턴:
* 메모리 검색 도구 (Memory Search Tool): 에이전트에 도구로 연결되어 읽기/쓰기 수명 주기를 자동으로 관리하는 고수준 접근 방식입니다. Foundry Agent Framework에서 FoundryMemoryProvider를 통해 구현됩니다.
* 저수준 메모리 스토어 API (Low-Level Memory Store APIs): 사용자 지정 추출 로직, 특정 메모리 쓰기, 범위 간 쿼리 등 세밀한 제어가 필요한 경우 사용됩니다. project.beta.memory_stores 클라이언트를 통해 접근 가능합니다.
* 범위 이해: 에이전트 코드에서 {{$userId}} 템플릿을 사용하여 동적으로 사용자별 범위를 설정합니다. x-memory-user-id 헤더 또는 Entra ID의 TID+OID 조합으로 사용자 ID가 결정됩니다. 사용자별로 필요하지 않은 공유 지식 등에는 정적 범위를 사용할 수 있습니다.
* 프로비저닝 및 에이전트 구축: Python 스크립트를 통해 Memory Store를 프로비저닝하고, Foundry Agent Framework를 사용하여 메모리 기능을 통합한 호스팅 에이전트를 구축할 수 있습니다. azd CLI, VS Code Foundry Toolkit 확장 등을 통해 로컬 테스트 및 배포가 가능합니다.
* 보안 모범 사례: 프롬프트 인젝션 및 메모리 오염 공격에 대한 위험이 있으며, user_profile_details에 명시적이고 제약된 추출 지침을 사용하여 완화해야 합니다.
시사점
Azure AI Foundry Memory Service를 활용하면 개발자는 복잡한 메모리 시스템을 직접 구축하고 유지보수할 필요 없이, 사용자 대화 경험을 풍부하게 하고 에이전트의 지능을 향상시킬 수 있습니다.
댓글
GitHub Discussions