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 memory і інтегруючи з Azure AI Search.

Розуміти принципи створення AI агентів, що самовдосконалюються, і як надійні системи управління пам’яттю сприяють безперервному навчанню та адаптації.

Розуміння пам’яті AI агента

У своїй суті, пам’ять для AI агентів – це механізми, які дозволяють їм зберігати та згадувати інформацію. Ця інформація може бути конкретними деталями розмови, перевагами користувача, минулими діями або навіть вивченими шаблонами.

Без пам’яті AI застосунки часто є безстанними, тобто кожна взаємодія починається з нуля. Це призводить до повторюваного і розчаровувального користувацького досвіду, коли агент “забуває” попередній контекст або вподобання.

Чому пам’ять важлива?

Інтелект агента глибоко пов’язаний із його здатністю згадувати та використовувати минулу інформацію. Пам’ять дозволяє агентам бути:

Рефлексивними: навчатися на минулих діях і результатах.

Інтерактивними: підтримувати контекст під час поточної розмови.

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

Автономними: діяти більш незалежно, спираючись на збережені знання.

Мета впровадження пам’яті — зробити агентів більш надійними та здатними.

Типи пам’яті

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

Уявіть, що це листок паперу, на якому агент робить записи під час однієї поточної задачі або процесу мислення. Вона зберігає негайну інформацію, потрібну для обчислення наступного кроку.

Для 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 працює як шар постійної пам’яті, дозволяючи агентам згадувати релевантні взаємодії, зберігати вподобання користувача та фактичний контекст і навчатися на успіхах та помилках з часом. Ідея полягає у переході від безстанних агентів до станних.

Вона працює через двофазовий конвеєр пам’яті: вилучення і оновлення. Спочатку повідомлення, додані до нитки агента, надсилаються в службу Mem0, яка за допомогою великої мовної моделі (LLM) підсумовує історію розмов і вилучає нові спогади. Потім керована LLM фаза оновлення визначає, чи додавати, змінювати чи видаляти ці спогади, зберігаючи їх у гібридному сховищі даних, що може включати векторні, графові та бази даних ключ-значення. Система також підтримує різні типи пам’яті й може включати графову пам’ять для управління взаємозв’язками між сутностями.

Cognee

Ще один потужний підхід — використання Cognee, відкритої семантичної пам’яті для AI агентів, яка перетворює структуровані та неструктуровані дані в графи знань, керовані ембедингами. 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. Хоча ми прагнемо до точності, будь ласка, майте на увазі, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ рідною мовою слід вважати авторитетним джерелом. Для критично важливої інформації рекомендується професійний людський переклад. Ми не несемо відповідальності за будь-які непорозуміння або неправильні тлумачення, що виникли внаслідок використання цього перекладу.