Доўгатэрміновая памяць з пошукам для агентаў інжынерыі даных
Як шматагентная сістэма інжынерыі даных перастала зноў і зноў адладжваць тыя самыя збоі: аўтаматычны запіс, абмежаваныя дзённікі, курыраваны ўзровень і ўзгадванне на ўзроўні кантэксту.
Крыніцы: Learning from Experience: Searchable Long-Term Memory for Data Engineering Agents
Агенты без стану добра ў рашэнні проблем. Але ў яных паслабае памяць пра тое, што яны іх вучылі.
Проблема амнэзіі
Уявіце агента, які практычна гадзіну працуе над кэшэм NoClassDefFoundError у свежа створанай зошыцы Databricks. Ён аналізуе логі кэшэ, знаходзіць бібліятэку, якой не хватае ў кластэрэ, застосоўвае патэчку і паўтарае запуск без проблем. Гэта справжняя автонамная дэбаггінгавая праця.
Чырвоце пазней іншы пайплайн сталкнуўся з тым самым кэшэм, але агент нават не памятае, што вучыўся з яго раней. Усё працэс дэбаггінгу пачынаецца зноў, з усіма затратамі, і ёсць рэальная верагатыба, што цім разам будзе застосована іншая патэчка.
Гэта не абвалка модэлю. Так працуюць агенты за замовчаннем, і яны забываюць трыма спосабамі:
- Калі сесія завершаецца, усё, што было выучана ў яй, знікае.
- Дзейні сесіі з часам стаюць сумарызаванымі або складзенымі, што захоўвае загальную сюжэтную лінію, але часта выкарыстоўваецца без дэтаўнасцяў адбывання падзеяў, якія былі важлівыя.
- У сістэмах з калькамі агенты зазвычай пачынаюць з чыстага кантэксту, не спадчыцуюць нічога ад пакульшых агентаў і не захоўваюць нічога пасля завершэння свайго завадзя.
Команда, якая адрабатвала сістэму з калькамі, якая стварае пайплайны Databricks lakehouse, платыла гэты «падатак на амнезію» па ўсіх троха пунктах. Іхнім рашэннем быў шар дзейневай памяці, які можна было шукаць.
Што значыць «памяць, якую можна шукаць»
У сістэмах агентаў памяцью называюць два разныя рэшчы, таму тэрміны трэба чытка адзначыць.
Вікна кантэксту функцыонуе як рабочая памяць агента. Усё, што знаходзіцца ў ям, момантальна доступна для модэлю, але толькі пры трыванні сесіі. Калі інфармацыя знікае, для агента яна ўжо недоступна.
Даўгастраўная памяць — гэта стойкі сховішч, якое перазіхае сесіі, задачы і агенты. Аднак сама толькі зберагчы інфармацыю недастатньа. Зберажаная інфармацыя становіць корыстную памяць толькі тады, калі яна автаматычна фіксуецца, можа быць эфектыва шукацца і выводзіцца ў вікно кантэксту, калі гэта неабходна. Самэй важлівы ўжо заключны крок. Ідэальны урок, які ніколі не будзе выкарыстоўваны, практычна не існуе, а выкарыстоўваны урок ўтрачае значэнне, калі яго не досягае агент, які прыме рашэнне.
Кагнітывая наука прысвячае таксанамію, якая добра паслужыць для аналізу агентных сістэм:
- Эпізодычная памяць зберагчыць даны пра конкрэтныя паўзледнія джэрыкты: архіваваныя транскрыпціі сесій, пакульнія неудачы з способамі ўсунення іх, рашэнні, прынятыя ў пакульных версіях.
Два рэвэні памяці
Адна рашэнне падрыхтавала большую частку складнасці: раздзелэнне памяці на два рэвэні.
Рэвэн 1, куратаваная памяць. Маленькі, ручна падтрымваны набор правілаў, які завантажаецца ў кожнай сесіі. Гэта можна прыроўняць да архітэктурных стандатаў, трэбаванняў да безпекі, правіл атрыбутавання імён і абмежэнняў у кераванні. Месца для запытаў ёсць дарогім, таму гэты рэвэн прызначаны для таго, што павінна быць завжды доступна.
Узел 2: памяць для пошуку. Большы рэхібар з досвяду, які фіксуецца аўтаматычна і выкарыстоўваецца толькі тады, калі гэта неабходна: параболеныя рашэнні, нарадкі па адлучэнню прычын бягаў, урокі з розгортання і патэрны частых абыектаў. Па значэнню ён не прадстаўляецца ў запытку.
Елементарная правіла:
Факт, які трэба дазваляць ў кожны раз, належыць у структураваны узел. Факт, які ўжыткавы, калі з’яўляецца падобная сітуацыя, належыць у узел для пошуку.
Такое раздзеленне захоўвае знанні, не пераплываючы вікна кантэксту.
Сістэма з калькольнікамі, якой гэта было неабходна
Даная сістэма керуе всім жыццёвым цыклам інжынерыі дадзеных, ператвараючы бізнес-трэбаванні на готовыя до выкарыстоўвання пайплайны і панелі аналізу. Оркестратор коордынуе спецыялізаваных працоўнікаў, кожны з якіх мае адну задачу і толькі тыя інструменты, якія яму трэбаець:
- Функцыянальная спецыфікацыя — гэта прачытанне заявкі на задачу, стварэнне спецыфікацыі і атрыманне схвалення ад чалавека, які яе запрашае.
- Тэхнічныя праекты — гэта ператворэнне затверджанай спецыфікацыі у план дадзейнаўых контрактов і супарабоцавання дадзэнняў з выхіднага на канечны фармат.
- Прыем, трансформацыя і інтэграцыя — гэта стварэнне самога коду для апаратнага ланцоўка. Гэта значыць, што „бронзавыя“ нотбукі запоўнююцься дадзэннямі з Kafka, SAP, REST або файлаў, „серабраныя“ нотбукі пераформатаваюць дадзэнні, а „золатыя“ вімэрнальныя модэлі — усе гэта рэалізуецца за дапамогою спецыяльнага плану.
- Атрыбутаванне — гэта ўзел, які мае права працаваць поблізу жывага кластэра. Ён запускае кожны створаны нотбук на тэмпарарныя табелі для тэставання і пераканальваецца ў правільнасці рэзультатаў.
- Хранілішча — гэта аб’ект, які карыстуецца галузямі, збераганнем змян і запросамі на ўзятыя змяны.
- Манітарынг — гэта назіранне за працэсамі CI/CD пасля таго, як змяна была адключыта да основнага коду.
Архітэктура ўмышлена ізаляцыоністычная. Рабочыя працэсы працуюць паралельна з аддзельным выкарыстоўваннем файлоў, не можуць вяськаваць межы між сабою і пачынаюць кожны заданне з абсалютна чыстага кантэкста. Оркестратор піша самастатковы запрос да задання, рабочы выпрацоўвае адмежаваную працу, вяртае рэзультат і знікае.
Ізоляцыя робіць сістэму безпечной і парадыгнальной. Яна таксама паглыбляе проблему амнэзіі паўтараючыся, калі кожны рабочы працэс начынаецца з нуля ў кожны раз. Кожная ролі стварае свой сабэт досвяду, які варта зберагчы, і нічога з гэтага не застаецца пасля завершэння задання, як толькі што-небудзь за межамі кантэкстаў агентаў яго не зберагчыць.
Праектаванне памяці для многах агентаў
Чатыры механізмы рашаюцыя гэту проблему.
1. Аўтаматычны захват
Хукі пад час выканання агента запускаюцца два разы: калі заканчываецца сесія і непразьдзе да таго, як кантэкст будзе скompактаваны. Кожны з іх чытае транскрыпцію і выкарыстоўвае корыстныя урокі, якія можна паўтарна выкарыстоўваць, у базе памяці. Нікому не трэба памяцаць пра неабходнасць стварэння дакументацыі чы апдэйтування базы знанняў.
Операцыі з памяцю таксама не ўскладнююць працу. Калі інфраструктура памяці зупініцца, хукі проста нічога не робяць. Слой памяці падмогае, але ніколі не павінен стаць тым, без чаго немагчыма продаваць рэальную работу.
2. Аксес з адмежаваннем
Оркестратор контролюе весь набор інструментаў для работы з памяцю. Рабоцыя елементы маюць толькі тры можлівасці: чытаць свой дзеннік, пісаць свой дзеннік і шукаць у базе. Гэта рэгулюецца інструментамі, а не запітамі, што дапамагае чыста прадзеліць адпаведальнасці і не дазволяе рабоцым элементам мяніць памяць па-свойму.
3. Дзеннікі, спецыязаваныя для паведамленняў
Кожны работнік апрэбоўвае сабе прыватную прастору імен для памяці. Адказы пад час выканання і паўнастаўленыя спасабы рашэння накапліваюцца ў дзяўніку агента па верыфікацыі, тады калі манітар CI/CD сабірае паслявіскі адказоў і способы, якія працавалі. Іншыя агенты таксама трываюць у схожах, адмежаваных базах дадзеных.
Дзяўнікі не ўжо каналы камунікацыі. Работнікі не перадаюць сообшчэнні праз памяць, а коордынацыя застаецца у оркестратора, які падтрымвае кожны дзяўнік у цэлесообразным і рэлевантным стане.
4. Адзыяванне на рэвэле кантэкста
Гэта выявілася найважнейшай рашэннем. Работнікі пачынаюць з порожньага кантэкста, таму апрэбоўаная памяць можа быць корыстная толькі тады, калі яе будзе ввестыць у гэты кантэкст. Рабочая правіла:
Памяць, якая апрэбоўвана, але не падключана да кантэкста, для работніка не існуе.
Калі знаходзяцься актуальныя урокі, організатор запісвае іх безпосерэдзя ў кантэкст задання пры падзеўдзенні працы. Лячэнне сама по сабе недастатнія. Ён мусіць быць відным, каб яго можна было застаўляць.
Стварэнне на MemPalace
Этот слой створаны на MemPalace — апэн-сорсовай праметры для прыметкавання, якая прыорытэтавае локальную працу. Хранэнне, эмбеддынгі і індэкс пошуку працуюць локальна, таму ніякія даныя не выходзяць за межы асяроддзя, што мае значэнне, калі агенты працуюць з корпаратыўнымі данымі і сістэмамі вырабніцтва.
MemPalace зберагае прыметкі у вачох тэксту, адзначаных метаданымі, такімі як агент, які яе стварыў, катэгорыя і час стварэння, і распаковвае іх у адзінаковыя просторы імен. Гэта дазволяе працаваць з ўрачыстымі дневнікамі для разных ролей: кожны агент пішчыць у свой простор і з часам накаплівае экспертызу.
Збір дадзейна адбываецца праз выкорыстоўванне вышэўказаных хукіў жыцёвага цыклу. Па завершэнні сесіі, або перад складчаўкай, транскрыпцыя праканчваецца, ператвараецца ў урокі, якія можна выкарыстоўваць знову, включаецца ў местны мадэль ONNX і індэксуецца для пазнейшага выкарыстоўвання. Усё гэта адбываецца на фоне, таму агенты ніколі не чакаюць на операцыі з памяцю.
Выкарыстоўванне дадзейна адбываецца гібрыдным спосабам, спалучаючы схожасць вектараў і падпаданне пад ключоўыя словы. Гэта дапамагае ў інжынерыі дадзейна, дзе якіясь сігналы ёсць семантычнымі, а іншыя — точнымі рэчамі. Назва памылкі, такая як NoClassDefFoundError, або точная версія рантайму Databricks павінна падходзіць буквальна, пры тым тая ж самая проблема, сформульаваная інакш, таксама павінна быць выявлена.
Агенты прабіваюць да памяці праз MCP. Оркестратор бачыць весь набор інструментаў, тады як працоўнікі бачаць толькі diary_read, diary_write і search; межы контролююцца інструментамі, а не запітамі.
MemPalace быў выбраны таму, што ён спачатку орыентаваны на локальныя рашэнні, ёсць безкоштовным і лёгкім у інтэграцыі, але архітэктура не залежыць ад яго. Mem0, Zep чыя Letta могу выпаловаць тую ж роль. Важны не фрэймворк, а цікл зворачнай свярзанасці: фіксавацыя досвядчэння, яго зберагчыце і выкорыстанне, калі з’явіцца тая ж проблема.
Што змянілася на практыцы
Першыя помітныя выгоды — гэта сортаванне неудач. Основна правіла для агента верыфікацыі проста: праз кожную неудачу спачатку трэба шукаты рашэнні, а ўжо потым дэбагаваць.
mempalace_search(query="NoClassDefFoundError DBR 14.3")
Калі раштрынак вяртаецца, агенттар получаюць урок, выведзены з ранейшага успешнага рашынавання:
Бронзавы ўказнік для замовэнняў зламаўся на DBR 14.3 з спісвам
NoClassDefFoundError, які быў связаны з канвертарам Avro. Што гэта вылечыла: явна адзначыць бібліятэку канвертара ў настройках кластэра заданняў.
Разлік вялікі. Уместо таго, каб занова шукаць рашэнне з асновных прынцыпаў, агенттары выйшлі з доказаў таго, што ўжо працавало. І цяньва не толькі ў шыроце. Гэта і ў стабільнасці. Без памяці два агенттары, якія сталкнуліся з тым самым проблемам, могу кожны выбраць разны, але правільна выглядаючы спосаб рашэнавання. З памяцю сістэма выбірае той спосаб, які вядома працуе, і продовжае яго вядомаць.
Падобныя практычныя наследкі былі зафіксаваны і ў іншых аспектах. Монітар CI/CD цяпер уключае ў своія дыягнастычныя справаздачы історычныя даны пра прыклады абыякіснае працы, хукі пачатку сесіі вярнююць актуальны недавні кантэкст, а спецыялізаваныя агенты з часам набіраюць неабяжлівыя навыкі, замест таго каб сталкватыся з патрэбай іх постаўкі занова.
Не трэба перапрацоўкі. Цыкл навчання знаходзіцца за межамі модэлі: адчуткі, урокі, зберагчык, выкарыстоўванне, прымененне.
Урокі з практычнай експлуатацыі
Будзьце абераглівы ў падключэнні історычных дадзеных. Першая спроба імпортавала вялікія об’ёмы старых транскрыпцый. Рэзультаты былі незадовольныя, адтыму што старыя матэрыялы часта зацьмарвалі новыя, лепшыя урокі і спрычынілі плямаванне падчас выкарыстоўвання дадзеных. Команда абмовілася ад масовага імпорту і пачала з нуля з моменту, калі пачалася рээксплуатацыя. Недавнасць і якосць маюць большое значэнне, чым колькасць.
Запісвайце спогады простым языкам. Гэтая структура прымеяе компактныя фарматы запісі, і каманда іх адразу выкарыстоўвала. Адзысканне інфармацыі ўскладнюецца, калі зберажаная інформацыя не містыць тых сабе слоў, якія будуць выкарыстоўваны праз час у пошуку: назвы продуктав, назвы ентытав, паведамленні пра адказы і класы адказоў. У зберажанні спогадоў важлівейша ўзнікнучысць інфармацыі, чым яе малы размер.
Аккуратна выбірайце, што запісваць. Не кожнае пазірэнне заслуговае на стойкое зберагачэнне. Варта зберагаць падтверджаныя рашэнні, перакананыя нараджэнні і інформацыю, якая можа быць выкарыстоўвана знову. Варта праігнораваць рутынныя журналы, тымчасовыя спазырэнні, павтаральныя апошнія абнаўленні і чутлівую інформацыю. Некалігантныя спогады быстра накапліваюцца і можу нарабіць больш шкоды, чым ўсёўсёды ўжо нямаць такіх спогадоў.
Выводы
Калі агенты разам зноў і зноў выкананяюць рэальную работу, яная стварае дазнаўанні, якія варта зберагаць. Што прадкладвае гэта падходжэнне:
- Раздзеліце памяць на рэгулы, створаны рукамі, і можлівасць пошуку інформацыі.
- Автаматычна фіксацыя урокав, у тым часе, як што раней, перш чым адмашына сконцентруецца на кантэксце.
- Надаце працавальнікам вузкія, залежныя ад ролі правы.
- Адзёвваліце інформацыю перад выконаннем расчынэння, калі адпоўнаймае проблема можа ўжо быць рашаная.
- Уключыце адзёвваную памяць безпосерэдна ў запіт.
- Спрыяйце розгляду памяці як доказа, а не як беззаперэчной правды.
- Прыорытэтаваце якасць памяці над ўжоўмом памяці.
Найглыбэйшы урок — гэта архітэктура. Большая частка зусілляў направлена на тое, каб агенты сталі розумнейшымі, але на практыцы давялівы эфект даеяцца ад таго, каб сістэмы моглі памяцаць.
Спадневаная літэратура
- З модэляў да агентаў: перапрацоўка трох ліній абароны — Як правілы керавання MLOps паўтараюцца ў агентных сістэмах: што павінны дадаць кожныя з трох ліній, дзе знаходзяцца прасочыны, і што сігналізуюць рэгуляторы ЕС, FDA і фінансовай сферы.
- Стварэнне памяці агента, якая вытрымлівае размову без зберагання зайвых дадзеных — Дзяржава памяці агента у трох рэвэлях: дазвольце стану сесіі знікнуць, трывожце давялеглія нотаткі малымі і змогамі для рэдагавання, а таксама запрашайце свежыя жывыя дадзеныя. Таксама розглядаецца прычына неудачы перадачы задач между калькамі агентаў.