ai-agents-for-beginners

Память для AI-агентов

Agent Memory

При обсуждении уникальных преимуществ создания AI-агентов обычно выделяют два аспекта: возможность использовать инструменты для выполнения задач и способность к улучшению со временем. Память лежит в основе создания самоулучшающегося агента, который может создавать лучшие впечатления для наших пользователей.

В этом уроке мы рассмотрим, что такое память для AI-агентов и как мы можем управлять ею и использовать её для пользы наших приложений.

Введение

В этом уроке будет рассмотрено:

Понимание памяти AI-агента: что такое память и почему она важна для агентов.

Реализация и хранение памяти: практические методы добавления возможностей памяти в ваши AI-агенты с акцентом на краткосрочную и долгосрочную память.

Создание самоулучшающихся AI-агентов: как память позволяет агентам учиться на прошлых взаимодействиях и улучшаться со временем.

Доступные реализации

В урок включены два подробных обучающих ноутбука:

13-agent-memory.ipynb: реализует память с использованием Mem0 и Azure AI Search в Microsoft Agent Framework

13-agent-memory-cognee.ipynb: реализует структурированную память с помощью Cognee, автоматически строит граф знаний на основе эмбеддингов, визуализирует граф и обеспечивает интеллектуальный поиск

Цели обучения

После прохождения этого урока вы сможете:

Различать различные типы памяти AI-агента, включая рабочую, краткосрочную и долгосрочную память, а также специализированные формы, такие как персональная и эпизодическая память.

Реализовывать и управлять краткосрочной и долгосрочной памятью AI-агентов с использованием Microsoft Agent Framework, применяя инструменты вроде Mem0, Cognee, памяти Whiteboard и интеграции с Azure AI Search.

Понимать принципы работы самоулучшающихся AI-агентов и как надежные системы управления памятью способствуют непрерывному обучению и адаптации.

Понимание памяти AI-агента

В своей основе память AI-агентов — это механизмы, позволяющие им сохранять и вспоминать информацию. Эта информация может включать конкретные детали разговора, предпочтения пользователя, прошлые действия или даже выученные шаблоны.

Без памяти AI-приложения часто являются статeless, то есть каждое взаимодействие начинается с нуля. Это приводит к повторяющемуся и раздражающему пользовательскому опыту, где агент «забывает» предыдущий контекст или предпочтения.

Почему память важна?

Интеллект агента тесно связан с его способностью вспоминать и использовать прошлую информацию. Память позволяет агентам быть:

Рефлексивными: учиться на прошлых действиях и результатах.

Интерактивными: поддерживать контекст в ходе текущего разговора.

Проактивными и реактивными: предвидеть потребности или адекватно реагировать на основе исторических данных.

Автономными: работать более независимо, опираясь на сохранённые знания.

Цель реализации памяти — сделать агентов более надежными и способными.

Типы памяти

Рабочая память

Представьте это как листок для заметок, который агент использует во время одной текущей задачи или процесса мышления. Она хранит немедленную информацию, нужную для вычисления следующего шага.

Для AI-агентов рабочая память часто захватывает наиболее релевантную информацию из разговора, даже если вся история чата длинная или усечённая. Она фокусируется на извлечении ключевых элементов, таких как требования, предложения, решения и действия.

Пример рабочей памяти

В агенте для бронирования путешествий рабочая память может содержать текущий запрос пользователя, например «Я хочу забронировать поездку в Париж». Это конкретное требование хранится в непосредственном контексте агента, чтобы направлять текущее взаимодействие.

Краткосрочная память

Этот тип памяти сохраняет информацию на время одного разговора или сессии. Это контекст текущего чата, позволяющий агенту ссылаться на предыдущие реплики в диалоге.

В примерах Python SDK Microsoft Agent Framework это соответствует AgentSession, создаваемому через agent.create_session(). Сессия — это встроенная краткосрочная память фреймворка: она сохраняет контекст разговора, пока сессия активна, но этот контекст не сохраняется после окончания сессии или перезапуска приложения. Для фактов и предпочтений, которые должны сохраняться между сессиями, используйте долгосрочную память, обычно через базу данных, векторный индекс или другой постоянный хранилище.

Пример краткосрочной памяти

Если пользователь спросит: «Сколько стоит билет в Париж?» и затем уточнит: «А как насчет проживания там?», краткосрочная память позволяет агенту понять, что «там» относится к «Парижу» в рамках одного разговора.

Долгосрочная память

Это информация, которая сохраняется между несколькими разговорами или сессиями. Она позволяет агентам запоминать предпочтения пользователей, исторические взаимодействия или общие знания на длительный срок. Это важно для персонализации.

Пример долгосрочной памяти

Долгосрочная память может содержать, что «Бен любит катание на лыжах и активный отдых, предпочитает кофе с видом на горы и избегает сложных лыжных трасс из-за прошлой травмы». Эта информация, полученная из прошлых взаимодействий, влияет на рекомендации в будущих сессиях планирования путешествий, делая их очень персонализированными.

Персональная память

Этот специализированный тип памяти помогает агенту развить последовательную «личность» или «персону». Она позволяет агенту запоминать детали о себе или своей роли, делая взаимодействия более плавными и целенаправленными.

Пример персональной памяти

Если туристический агент создан как «эксперт по лыжным поездкам», персональная память может укреплять эту роль, влияя на ответы агента, чтобы они соответствовали тону и знаниям эксперта.

Память рабочего процесса / эпизодическая память

Эта память сохраняет последовательность шагов, которые агент выполняет во время сложной задачи, включая успехи и неудачи. Это похоже на запоминание конкретных «эпизодов» или прошлых опытов для обучения.

Пример эпизодической памяти

Если агент пытался забронировать конкретный рейс, но это не удалось из-за отсутствия мест, эпизодическая память может зафиксировать эту неудачу, позволяя агенту попробовать альтернативные рейсы или сообщить пользователю об проблеме более осознанно при последующей попытке.

Память сущностей

Это извлечение и запоминание конкретных сущностей (например, людей, мест или объектов) и событий из разговоров. Позволяет агенту строить структурированное понимание ключевых элементов обсуждения.

Пример памяти сущностей

Из разговора о прошлом путешествии агент может извлечь сущности «Париж», «Эйфелева башня» и «ужин в ресторане Le Chat Noir». В будущем взаимодействии агент может вспомнить «Le Chat Noir» и предложить сделать новый заказ там.

Структурированный RAG (Retrieval Augmented Generation)

Хотя RAG — это более широкий метод, «структурированный RAG» выделяется как мощная технология памяти. Она извлекает плотную, структурированную информацию из различных источников (разговоры, электронные письма, изображения) и использует её для повышения точности, полноты и скорости ответов. В отличие от классического RAG, который основывается только на семантическом соответствии, структурированный RAG работает с внутренней структурой информации.

Пример структурированного RAG

Вместо простого сопоставления ключевых слов структурированный RAG может разобрать детали рейса (пункт назначения, дату, время, авиакомпанию) из письма и сохранить их структурировано. Это позволяет выполнять точные запросы типа «Какой рейс я забронировал в Париж на вторник?»

Реализация и хранение памяти

Реализация памяти для AI-агентов включает систематический процесс управления памятью, включающий создание, хранение, извлечение, интеграцию, обновление и даже «забывание» (удаление) информации. Особенно важен процесс извлечения.

Специализированные инструменты памяти

Mem0

Один из способов хранения и управления памятью агента — использование специализированных инструментов, таких как Mem0. Mem0 выступает как слой постоянной памяти, позволяющий агентам вспоминать релевантные взаимодействия, хранить предпочтения пользователей и фактический контекст, а также учиться на успехах и ошибках со временем. Идея здесь в том, что статeless агенты превращаются в стейтфул.

Mem0 работает через двухфазный процесс памяти: извлечение и обновление. Сначала сообщения, добавленные в ветку агента, отправляются в сервис Mem0, который с помощью большой языковой модели (LLM) подытоживает историю разговора и извлекает новые воспоминания. Затем фаза обновления, управляемая LLM, решает, добавлять, изменять или удалять эти воспоминания, сохраняя их в гибридной базе данных, которая может включать векторные, графовые и ключ-значение хранилища. Система поддерживает разные типы памяти и может интегрировать графовую память для управления связями между сущностями.

Cognee

Еще один мощный подход — использование Cognee, открытой семантической памяти для AI-агентов, которая превращает структурированные и неструктурированные данные в опрашиваемые графы знаний, основанные на эмбеддингах. Cognee предоставляет двойную архитектуру хранилища, объединяющую поиск по векторному сходству и графовые отношения, позволяя агентам понимать не только схожесть информации, но и взаимосвязь понятий.

Cognee отлично справляется с гибридным извлечением, сочетающим векторное сходство, структуру графа и логическое рассуждение LLM — от простого поиска фрагментов до вопросов с учетом структуры графа. Система поддерживает живую память, которая развивается и растет, оставаясь доступной для запросов как единый связный граф, поддерживая как краткосрочный контекст сессии, так и долгосрочную постоянную память.

Учебник по Cognee (13-agent-memory-cognee.ipynb) демонстрирует построение этого единого слоя памяти с практическими примерами загрузки различных источников данных, визуализации графа знаний и выполнения запросов с разными стратегиями поиска, адаптированными под нужды агента.

Хранение памяти с RAG

Помимо специализированных инструментов памяти, таких как Mem0, можно использовать мощные сервисы поиска, например Azure AI Search, в качестве бэкенда для хранения и извлечения воспоминаний, особенно для структурированного RAG.

Это позволяет «привязывать» ответы агента к вашим собственным данным, обеспечивая более релевантные и точные ответы. Azure AI Search можно использовать для хранения воспоминаний о путешествиях пользователя, каталогов продуктов или любой другой предметной области.

Azure AI Search поддерживает возможности, такие как структурированный RAG, который превосходно извлекает и восстанавливает плотную, структурированную информацию из больших наборов данных, таких как история разговоров, электронные письма или даже изображения. Это обеспечивает «сверхчеловеческую точность и полноту» по сравнению с традиционными методами разбиения текста и эмбеддингов.

Создание самоулучшающихся AI-агентов

Распространенный шаблон для самоулучшающихся агентов — введение «агента знаний». Этот отдельный агент наблюдает за основным разговором между пользователем и главным агентом. Его задача:

  1. Выявлять ценную информацию: определять, есть ли в разговоре что-то, что стоит сохранить как общие знания или конкретные предпочтения пользователя.

  2. Извлекать и резюмировать: выделять главное обучение или предпочтение из разговора.

  3. Хранить в базе знаний: сохранять извлеченную информацию, часто в векторной базе данных, чтобы её можно было извлечь позже.

  4. Расширять будущие запросы: когда пользователь инициирует новый запрос, агент знаний извлекает релевантную сохранённую информацию и добавляет её в запрос пользователя, предоставляя ключевой контекст основному агенту (аналогично RAG).

Оптимизации для памяти

Управление задержкой: чтобы не замедлять взаимодействие с пользователем, сначала можно использовать более простой и быстрый модель для быстрого определения ценности информации для сохранения или извлечения, вызывая более сложные этапы извлечения/поиска только при необходимости.

Обслуживание базы знаний: для растущей базы знаний менее часто используемая информация может перемещаться в «холодное хранилище» для оптимизации затрат.

Есть вопросы о памяти агента?

Присоединяйтесь к Microsoft Foundry Discord, чтобы встретиться с другими учащимися, посещать офисные часы и получить ответы на ваши вопросы по AI-агентам.


Отказ от ответственности: Этот документ был переведен с использованием сервиса машинного перевода Co-op Translator. Несмотря на наши усилия по обеспечению точности, имейте в виду, что автоматический перевод может содержать ошибки или неточности. Оригинальный документ на его исходном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется обратиться к профессиональному человеческому переводу. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникшие в результате использования этого перевода.