При обговоренні унікальних переваг створення AI-агентів головною є можливість виклику інструментів для виконання завдань і здатність покращуватися з часом. Пам’ять є основою для створення самовдосконалюваного агента, який може створювати кращий досвід для наших користувачів.
У цьому уроці ми розглянемо, що таке пам’ять для AI-агентів і як ми можемо керувати нею та використовувати її на користь наших застосунків.
У цьому уроці буде розглянуто:
• Розуміння пам’яті AI-агентів: що таке пам’ять і чому вона важлива для агентів.
• Імплементація та збереження пам’яті: практичні методи додавання можливостей пам’яті до ваших AI-агентів із фокусом на короткочасну та довготривалу пам’ять.
• Створення самовдосконалюваних AI-агентів: як пам’ять дозволяє агентам навчатися з минулих взаємодій і покращуватися з часом.
Цей урок включає два детальних ноутбуки з навчанням:
• 13-agent-memory.ipynb: реалізує пам’ять за допомогою Mem0 та Azure AI Search з Microsoft Agent Framework
• 13-agent-memory-cognee.ipynb: реалізує структуровану пам’ять за допомогою Cognee, автоматично побудовуючи граф знань на основі embeddings, візуалізуючи граф і забезпечуючи інтелектуальний пошук
Після завершення цього уроку ви знатимете, як:
• Розрізняти різні типи пам’яті AI-агентів, включаючи робочу, короткочасну та довготривалу пам’ять, а також спеціалізовані форми, такі як персональна і епізодична пам’ять.
• Імплементувати та керувати короткочасною і довготривалою пам’яттю для AI-агентів, використовуючи Microsoft Agent Framework, застосовуючи інструменти як Mem0, Cognee, Whiteboard пам’ять та інтегруючи з Azure AI Search.
• Розуміти принципи роботи самовдосконалюваних AI-агентів і як надійні системи керування пам’яттю сприяють безперервному навчанню та адаптації.
У своїй основі пам’ять для AI-агентів — це механізми, які дозволяють їм зберігати та пригадувати інформацію. Ця інформація може містити конкретні деталі розмови, вподобання користувача, минулі дії або навіть вивчені шаблони.
Без пам’яті AI-застосунки часто є безстанковими (stateless), тобто кожна взаємодія починається з нуля. Це призводить до повторюваного й розчаровуючого досвіду користувача, де агент “забуває” попередній контекст або уподобання.
Інтелект агента глибоко пов’язаний із його здатністю пригадувати і використовувати минулу інформацію. Пам’ять дозволяє агентам бути:
• Рефлексивними: навчаючись на минулих діях і результатах.
• Інтерактивними: підтримуючи контекст протягом продовженої розмови.
• Проактивними та реактивними: передбачаючи потреби або відповідаючи відповідно на основі історичних даних.
• Автономними: діючи більш незалежно, спираючись на збережені знання.
Метою впровадження пам’яті є зробити агентів більш надійними та здібними.
Представте це як листок для записів, який агент використовує під час одного поточного завдання або мисленнєвого процесу. Він тримає негайну інформацію, необхідну для обчислення наступного кроку.
Для 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 працює як персистентний шар пам’яті, дозволяючи агентам пригадувати релевантні взаємодії, зберігати вподобання користувачів та фактичний контекст, а також навчатися на успіхах і невдачах з часом. Ідея полягає в тому, що безстанкові агенти стають станковими.
Це працює через двофазову пам’яттєву конвеєрну систему: вилучення та оновлення. Спочатку повідомлення, додані до потоку агента, надсилаються в сервіс Mem0, який використовує Велику Модель Мови (LLM) для підсумовування історії розмови та вилучення нових спогадів. Потім LLM-орієнтована фаза оновлення визначає, чи додавати, змінювати або видаляти ці спогади, зберігаючи їх у гібридному сховищі даних, яке може включати векторну, графову і базу “ключ-значення”. Система також підтримує різні типи пам’яті і може включати графову пам’ять для керування зв’язками між сутностями.
Інший потужний підхід — використання Cognee, відкритої семантичної пам’яті для AI-агентів, яка перетворює структуровані та неструктуровані дані у графи знань, що підтримуються embeddings. Cognee має подвійну архітектуру зберігання, яка поєднує пошук векторної схожості з графовими зв’язками, дозволяючи агентам розуміти не лише що є схожим, а й як концепції взаємопов’язані.
Вона чудово підходить для гібридного пошуку, що поєднує векторну схожість, структуру графа та LLM-мислення — від пошуку безпосередніх фрагментів до відповідання на питання з урахуванням графа. Система підтримує живу пам’ять, що розвивається і зростає, залишаючись для запитів як єдиний пов’язаний граф, підтримуючи як контекст короткочасної сесії, так і довготривалу персистентну пам’ять.
Навчальний ноутбук Cognee (13-agent-memory-cognee.ipynb) демонструє побудову цього уніфікованого шару пам’яті з практичними прикладами задання різних джерел даних, візуалізації графа знань і запитів із різними стратегіями пошуку, налаштованими на конкретні потреби агента.
Окрім спеціалізованих інструментів пам’яті, таких як Mem0, ви можете використовувати потужні сервіси пошуку, як-от Azure AI Search як бекенд для збереження та вилучення спогадів, особливо для структурованого RAG.
Це дозволяє вам підкріплювати відповіді вашого агента власними даними, забезпечуючи більш релевантні й точні відповіді. Azure AI Search може бути використаний для зберігання пам’яті про подорожі користувача, каталогів продукції чи будь-яких інших специфічних знань.
Azure AI Search підтримує можливості, як-от Структурований RAG, який відмінно підходить для вилучення і пошуку щільної структурованої інформації з великих наборів даних, таких як історії розмов, електронні листи чи навіть зображення. Це забезпечує “суперлюдську точність і повноту” у порівнянні з традиційним розчленуванням тексту та embeddings.
Загальноприйнятий підхід для самовдосконалюваних агентів полягає у введенні “агента знань”. Цей окремий агент спостерігає за основною розмовою між користувачем і основним агентом. Його роль полягає у:
Визначенні цінної інформації: чи варто зберігати будь-яку частину розмови як загальні знання або конкретні вподобання користувача.
Вилученні та підсумовуванні: виділенні суті знань або вподобань з розмови.
Збереженні у базі знань: персистуванні вилученої інформації, часто у векторній базі даних, щоб її можна було пізніше вилучити.
Розширенні майбутніх запитів: коли користувач ініціює новий запит, агент знань вилучає релевантну збережену інформацію і додає її до підказки користувача, забезпечуючи ключовий контекст для основного агента (аналогічно RAG).
• Керування затримкою: щоб уникнути уповільнення взаємодій користувача, спочатку можна використовувати дешевшу й швидшу модель для швидкої перевірки, чи варто зберігати або вилучати інформацію, викликаючи складніший процес вилучення/пошуку лише за потреби.
• Підтримка бази знань: для зростаючої бази знань менш часто використовувану інформацію можна переміщувати у “холодне сховище” для зниження витрат.
Приєднайтесь до Microsoft Foundry Discord, щоб зустрітися з іншими учнями, відвідати години консультацій і отримати відповіді на свої питання щодо AI-агентів.
Контекстне проектування для AI-агентів
Огляд Microsoft Agent Framework
Відмова від відповідальності: Цей документ було перекладено за допомогою сервісу штучного інтелекту для перекладу Co-op Translator. Хоча ми прагнемо до точності, будь ласка, майте на увазі, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ рідною мовою слід вважати авторитетним джерелом. Для критично важливої інформації рекомендується професійний людський переклад. Ми не несемо відповідальності за будь-які непорозуміння або неправильні тлумачення, що виникли внаслідок використання цього перекладу.