ai-agents-for-beginners

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

Agent Memory

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

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

Введение

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

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

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

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

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

Этот урок включает два комплексных учебных ноутбука:

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

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

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

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

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

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

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

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

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

Без памяти ИИ-приложения часто работают в состоянии без сохранения контекста, то есть каждое взаимодействие начинается с нуля. Это приводит к повторяющемуся и раздражающему опыту, когда агент “забывает” предыдущий контекст или предпочтения.

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

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

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

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

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

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

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

Типы памяти

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

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

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

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

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

Кратковременная память

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

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

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

Долговременная память

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

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

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

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

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

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

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

Рабочий процесс / Эпизодическая память

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

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

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

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

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

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

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

Структурированный RAG (Retrieval Augmented Generation — генерация с расширенным поиском)

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

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

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

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

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

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

Mem0

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

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

Cognee

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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