При обсуждении уникальных преимуществ создания 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 агентов рабочая память часто захватывает наиболее релевантную информацию из разговора, даже если вся история чата длинная или усечена. Она фокусируется на извлечении ключевых элементов, таких как требования, предложения, решения и действия.
Пример рабочей памяти
В агенте бронирования путешествий рабочая память может содержать текущий запрос пользователя, например “Я хочу забронировать поездку в Париж”. Это конкретное требование удерживается в непосредственном контексте агента для направления текущего взаимодействия.
Этот тип памяти сохраняет информацию на протяжении одной сессии или разговора. Это контекст текущего чата, позволяющий агенту ссылаться на предыдущие реплики.
В примерах Python SDK Microsoft Agent Framework это соответствует AgentSession, создаваемой через agent.create_session(). Сессия — это встроенная в фреймворк краткосрочная память: она хранит контекст разговора, пока сессия используется, но этот контекст не сохраняется после окончания сессии или перезапуска приложения. Используйте долгосрочную память для фактов и предпочтений, которые должны сохраняться между сессиями, обычно через базу данных, векторный индекс или другое постоянное хранилище.
Пример краткосрочной памяти
Если пользователь спрашивает, “Сколько стоит билет на рейс в Париж?” и затем добавляет “А как насчёт жилья там?”, краткосрочная память позволяет агенту понять, что “там” относится к “Парижу” в рамках одного и того же разговора.
Эта информация сохраняется между несколькими разговорами или сессиями. Она позволяет агентам помнить предпочтения пользователя, исторические взаимодействия или общие знания на протяжении длительного времени. Это важно для персонализации.
Пример долгосрочной памяти
Долгосрочная память может хранить информацию вроде “Бен любит лыжи и активный отдых на природе, предпочитает кофе с видом на горы и избегает сложных лыжных трасс из-за прошлой травмы”. Эти данные, полученные из предыдущих взаимодействий, влияют на рекомендации в будущих сессиях планирования путешествий, делая их высоко персонализированными.
Этот специализированный тип памяти помогает агенту формировать последовательную “личность” или “персону”. Он позволяет агенту запоминать детали о себе или своей роли, делая взаимодействия более плавными и сфокусированными.
Пример памяти персонажа Если туристический агент задуман как “эксперт по планированию лыжных поездок”, память персонажа может подкреплять эту роль, влияя на ответы, чтобы они соответствовали тону и знаниям эксперта.
Эта память хранит последовательность шагов, которые агент предпринимает при выполнении сложной задачи, включая успехи и неудачи. Это похоже на запоминание конкретных “эпизодов” или прошлых опытов для обучения на них.
Пример эпизодической памяти
Если агент пытался забронировать конкретный рейс, но неудачно из-за отсутствия места, эпизодическая память может зафиксировать этот неуспех, позволяя агенту попытаться подобрать другие рейсы или информировать пользователя о проблеме более информированным образом при следующей попытке.
Включает извлечение и запоминание конкретных сущностей (например, людей, мест или предметов) и событий из бесед. Это позволяет агенту строить структурированное понимание ключевых обсуждаемых элементов.
Пример памяти сущностей
Из разговора о прошлой поездке агент может извлечь сущности “Париж”, “Эйфелева башня” и “ужин в ресторане Le Chat Noir”. В будущем взаимодействии агент сможет вспомнить “Le Chat Noir” и предложить сделать новое бронирование там.
Хотя RAG — это более широкая техника, “Структурированный RAG” выделяется как мощная технология памяти. Она извлекает плотную, структурированную информацию из различных источников (разговоров, писем, изображений) и использует её для повышения точности, полноты и скорости ответов. В отличие от классического RAG, основанного только на семантическом сходстве, Структурированный RAG работает с врожденной структурой информации.
Пример структурированного RAG
Вместо простого сопоставления ключевых слов Структурированный RAG может обработать детали рейса (место назначения, дата, время, авиакомпания) из письма и сохранить их в структурированном виде. Это позволяет точно отвечать на запросы вроде “Какой рейс я забронировал в Париж во вторник?”
Реализация памяти для AI агентов включает систематический процесс управления памятью, который охватывает генерацию, хранение, извлечение, интеграцию, обновление и даже “забывание” (или удаление) информации. Извлечение — особенно важный аспект.
Один из способов хранения и управления памятью агента — использование специализированных инструментов, таких как Mem0. Mem0 функционирует как слой постоянной памяти, позволяя агентам вспоминать релевантные взаимодействия, хранить предпочтения пользователя и фактический контекст, а также учиться на успехах и неудачах со временем. Идея в том, чтобы статeless агенты стали stateful.
Он работает через двухфазовый конвейер памяти: извлечение и обновление. Сначала сообщения, добавленные в поток агента, отправляются в сервис Mem0, который использует Большую Языковую Модель (LLM) для суммирования истории разговора и извлечения новых воспоминаний. Затем фаза обновления под управлением LLM решает, добавлять, изменять или удалять эти воспоминания, сохраняя их в гибридном хранилище данных, которое может включать векторные, графовые и базы данных ключ-значение. Эта система также поддерживает различные типы памяти и может включать графовую память для управления отношениями между сущностями.
Другой мощный подход — использование Cognee, открытой семантической памяти для AI агентов, которая преобразует структурированные и неструктурированные данные в запрашиваемые графы знаний с поддержкой встраиваний. Cognee предоставляет двуххранилищную архитектуру, комбинирующую поиск по векторному сходству с графовыми отношениями, позволяя агентам понимать не только что схоже, но и как концепции связаны между собой.
Он превосходен в гибридном извлечении, совмещая векторное сходство, структуру графа и рассуждения LLM — от простого поиска по фрагментам до ответов с учетом структуры графа. Система поддерживает живую память, которая развивается и растет, оставаясь доступной для запросов как единый связанный граф, поддерживая как краткосрочный сессионный контекст, так и долгосрочную постоянную память.
Учебный ноутбук Cognee (13-agent-memory-cognee.ipynb) демонстрирует создание этого единого слоя памяти с практическими примерами поглощения разных источников данных, визуализации графа знаний и запросов с различными стратегиями поиска, адаптированными под конкретные потребности агента.
Помимо специализированных инструментов памяти, таких как Mem0, вы можете использовать надежные сервисы поиска, такие как Azure AI Search в качестве бэкенда для хранения и извлечения воспоминаний, особенно для структурированного RAG.
Это позволяет обеспечить основу для ответов агента с использованием ваших собственных данных, гарантируя более релевантные и точные ответы. Azure AI Search можно использовать для хранения воспоминаний о путешествиях пользователя, каталогов продукции или любых других отраслевых знаний.
Azure AI Search поддерживает возможности, такие как Структурированный RAG, который преуспевает в извлечении и поиске плотной, структурированной информации из больших наборов данных, таких как истории разговоров, письма или даже изображения. Это обеспечивает “сверхчеловеческую точность и полноту” по сравнению с традиционным нарезанием текста на фрагменты и подходами с встраиваниями.
Общей схемой для самоулучшающихся агентов является введение «агента знаний». Этот отдельный агент наблюдает за основным разговором между пользователем и главным агентом. Его задача:
Определить ценную информацию: выяснить, стоит ли сохранить какую-то часть разговора как общие знания или конкретные предпочтения пользователя.
Извлечь и суммировать: выделить ключевые уроки или предпочтения из разговора.
Сохранить в базе знаний: надежно хранить эту информацию, часто в векторной базе данных, чтобы её можно было извлечь позже.
Расширять будущие запросы: при новом запросе пользователя агент знаний извлекает релевантную сохранённую информацию и добавляет её в подсказку пользователя, обеспечивая важный контекст главному агенту (аналогично RAG).
• Управление задержками: чтобы не замедлять взаимодействия с пользователем, можно использовать более дешевую, быструю модель на начальном этапе, чтобы быстро проверить, важна ли информация для сохранения или извлечения, и только при необходимости задействовать более сложный процесс извлечения/поиска.
• Обслуживание базы знаний: для растущей базы знаний менее часто используемая информация может перемещаться в “холодное хранилище” для оптимизации затрат.
Присоединяйтесь к Microsoft Foundry Discord, чтобы встретиться с другими учениками, посетить офисные часы и получить ответы на ваши вопросы по AI Агентам.
Инженерия контекста для AI Агентов
Изучение Microsoft Agent Framework
Отказ от ответственности: Этот документ был переведен с использованием сервиса машинного перевода Co-op Translator. Несмотря на наши усилия по обеспечению точности, имейте в виду, что автоматический перевод может содержать ошибки или неточности. Оригинальный документ на его исходном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется обратиться к профессиональному человеческому переводу. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникшие в результате использования этого перевода.