Када се разговори о јединственим предностима креирања 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 агенте укључује систематски процес управљања меморијом, који обухвата генерисање, складиштење, преузимање, интеграцију, ажурирање и чак „заборављање“ (или бришу) информација. Преузимање (retrieval) је посебно кључан аспект.
Један начин складиштења и управљања меморијом агента је коришћење специјализованих алата као што је Mem0. Mem0 функционише као трајни слој меморије, омогућавајући агентима да се присете релевантних интеракција, чувају корисничке преференције и фактички контекст и уче из успеха и неуспеха током времена. Идеја је да бездржавни агенти постану агент са државом.
Ради кроз двофазну меморијску цевовод: екстракцију и ажурирање. Прво, поруке додате у нит агента шаљу се ка служби Mem0, која користи велики језички модел (LLM) да сумира историју разговора и издвоји нове меморије. Након тога, LLM покреће фазу ажурирања која одлучује да ли ће меморије бити додате, измењене или избрисане, складиштећи их у хибридном складишту података које може укључивати векторске, графске и key-value базе. Систем подржава различите типове меморија и може инкорпорирати граф меморију за управљање односима између ентитета.
Други моћан приступ представља Cognee, open-source семантичка меморија за AI агенте која претвара структуриране и неструктуриране податке у граф знања упитних кроз embeddings. Cognee обезбеђује двоструку архитектуру складишта која комбинује претрагу по сличности вектора са графским односима, омогућавајући агентима да разумеју не само шта је слично већ и како су концепти повезани.
Одличан је у хибридном преузимању које спаја сличност вектора, структуру графа и LLM закључивање – од обичног претраживања делова до паметног одговарања са свесношћу о графу. Систем одржава живу меморију која еволуира и расте док остаје упитна као један повезани граф, подржавајући и краткорочни контекст сесије и дугорочну трајну меморију.
Tutorski primer Cognee бележнице (13-agent-memory-cognee.ipynb) демонстрира изградњу овог јединственог слоја меморије, са практичним примерима уношења различитих извора података, визуелизације графа знања и упита са различитим стратегијама претраге прилагођеним потребама агената.
Поред специјализованих алата за меморију као што је mem0, можете користити робусне услуге претраге као што је Azure AI Search као backend за складиштење и преузимање меморија, посебно за структурисани RAG.
Ово омогућава да оснажите одговоре вашег агента са сопственим подацима, обезбеђујући релевантније и прецизније одговоре. Azure AI Search може да се користи за чување корисничких успомена о путовањима, каталозима производа или било којем другом домену знања.
Azure AI Search подржава могућности попут структурисаног RAG-а, који одлично извлачи и претражује густа, структурисана знања из великих скупова података као што су историје разговора, имејлови или чак слике. Ово пружа „суперљудску прецизност и доноса“ у односу на традиционалне приступе базиране на деловима текста и embedding-има.
Чест облик самопобољшавајућих агената укључује увођење „агента знања“. Овај посебни агент посматра главни разговор између корисника и примарног агента. Његова улога је да:
Идентификује вредне информације: Одреди да ли је неки део разговора вредан чувања као опште знање или специфична корисничка преференца.
Извући и сумирати: Дистилује суштинске лекције или преференце из разговора.
Сачувати у базу знања: Перзистира ове извучене информације, често у векторској бази података, како би се касније могле преузети.
Подржати будуће упите: Када корисник иницира нови упит, агент знања преузима релевантне сачуване информације и додаје их корисничком упиту, пружајући важан контекст примарном агенту (слично као RAG).
• Управљање латенцијом: Да се избегне успоравање корисничких интеракција, може се користити јефтинији, бржи модел који брзо проверава да ли је информација вредна чувања или преузимања, уз покретање сложенијег процеса само кад је потребно.
• Одржавање базе знања: За растућу базу знања, ређе коришћене информације могу се преместити у „хладно складиште“ ради смањења трошкова.
Придружите се Microsoft Foundry Discord-у да упознате друге ученике, учествујете у радним сати и добијете одговоре на ваша питања о AI агентима.
Изјава о одрицању одговорности: Овај документ је преведен коришћењем услуге за аутоматски превод Co-op Translator. Иако тежимо тачности, имајте у виду да аутоматски преводи могу садржати грешке или нетачности. Оригинални документ на његовом изворном језику треба сматрати ауторитативним извором. За критичне информације препоручује се професионални људски превод. Нисмо одговорни за било каква неспоразума или погрешна тумачења која произилазе из коришћења овог превода.