Проектаванне агентаў AI для амбіэнтных сцэнарыяў: механізмы працеўкі агента, дарэмны стан спячкі і безпечныя способы ўвядзення агента ў робочы стан.
Як створыць агентаў AI, якія працуюць на падставе запускаў і можу дарэмна застацца нерухомымі: шаровая сортавання прайшлых запускаў пры кожным вызове модэлю, безпечная реканструкцыя стану агента, карыстаўчаснае рашэнне проблем і контроль выкарыстання ресурсаў.
Крыніцы: The Idle Agent: Designing Ambient, Event-Driven Systems That Wait Well
Большая частка матэрыяла пра агентаў AI пачынаецца з моменту, калі прыходзіць запит і пачынаецца цикл. Агент, які сам стежыць за папкамі з запитамі, чергамі і панелямі монітарынгу, практычна весь свой час працюе ў працоўным стане: нічога не выканана, і система павінна знову і знову вырашваць, чы не пачалося ўжо што-небудзь. Шырокія інструкцыі прызначаны для аналізу гэтага часу паставы. У канцы вы зможазіце спроекаваць механізм, які выбірае момент працявання агента, зменшыць вартасць стану паставы майже да нуля, забезпечыць безпеку кожнага працявання агента ад дуплікацый, застарэўшых дадзеных і зловжывання, а таксама вырахаваць, чы вся гэта структура дапамагае людзям, яых вона перарывае.
Сцэнарый, які павінен застерагаць: плата за кожна „не“
Уявіце команду, яка стварыла агента для стазіроўкі свайго ящыка з падтрымкай і каналу дзвянакаў. Мета простая: пазначыць все, што трэбуе увагі чалавека, прычаму ніхто іншы яшчо гэтага не пазначыў. Пратэтып выглядае вражаюча пад час дамаванняў. Але потым прыходзіць першы месячны рахунак, і ў яго сума перавышае суму адпаведных ліцэнзый IDE, часаў на теставанне і інструментаў для стазіроўкі, якія викорыстоввае каманда, для агента, які за трохці болей чым трыдзець днёў выканаў апошнія адзенаста корыстных дзеянняў.
Прычына — гэта архітектура, якую ніхто не запісаў. Чырабатыць "за наглядам" за папкай прыйшоў, заданы завод выконваліся кожныя два мінуты, скарыстоўваўся няўжоўнымі паведамленнямі і запытаў модель, чы не трэба якому-небудзь з іх увагі. За месяц такое выканвалося або бацько двадзець два тысячі разоў. Практычна кожны адказ быў рэшучым "нет". Адзенаста адказоў "так" былі выключна хорашымі, але большасцю былі негатыўныя. Найдорожэйшым дзеянням системы, у тры порядкі величыны, была паўтарная перакананасць у тым, што нічога не змянілася.
У іншай частцы той самай інфраструктуры знаходзіўся стары завод cron, які кожную мінуту пераглядаў прагу дыска. За весь свой час ён практычна нічога не коштаў. Разлік і є урокам усіяго гэтага тэмы: чаканне — гэта тое, што трэба спецыяльна запроектаваць, а не тое, што выканваліца сабеяк.
Ідея, якую трэба запам’ятаваць, такая: амбіентны агент больш за ўсё визначаецца тым, што яго актывае, чым тым, што ён робіць пасля актывацыі. Настоямы інжынерны аспект — цэх канал, які як магчыма дашчава выбирае, калькі з тыяў тысяч прыходзячых запускаў заслуговае на увагу модэлю, у поўнай зусімнасці з станам спячкі, які не купае нічога пакуль гэта не адбудзецца. Агенты для чату ніколі не сталкваняюцца з гэтым проблемай, таму што чалавек вже вырашыў, чы рэчыце варта адправіць, прытым як толькі ёё напісаў. Якщо выдаліць гэтага чалавека з шляху актывацыі, ваша задача становіцца сортаваннем. Якшо рашыць гэта за дапамогою самага большога модэлю, то фактычна запрацавіваецеся вашы найдорожэйшы спецыяліст для сортавання паведамленняў.
Гэта базуецца на калькі ідэй, якія заслуговаюць на адзінольны разгляд: дыяверна експанація (працэўніца, якая можа працаваць колькі дзён без выкарыстоўвання вычыльных ресурсаў), часовая аднаковасць (тае, што агент должен занова выучыць пра „тэпер“, калі ён прачынаецца), а таксама змяненне целі у дзейнароўных агентах. Яны праказаны нижэй там, дзе яны маюць значэнне.
Кожны запит вялікі ўжо быў падзеяй
Запрос на чат выглядае як нейтральная пункт запуску для агента, але ў яму крыюцца вельмі большыя зусиллі. Чалавек, які яго апрацоўвае, зрабіў тры рэшткі прычыну, перш чым быў оброблены хоць адзін токен. Ён выявіў, што ситуацыя вартая дзеяння, гэта ўжо є трыаж. Ён падсумаваў яе у калькі рэчэй, гэта є складанне контексту. А ён апрацоўвае яго у конкрэтны момант, гэта є таймінг. Чат-агент на самай працэ є агентам, які работае над шаром падзей, які керуецца дзеянням чалавека.
Агенты-сераўны, тэрмін, які папулярызаваў LangChain для агентаў, якія спрыёмляюць стрэм з адбываючыхся падзеяў і рэагуюць на яго, можа адразу обрабоўваючы калькі падзеяў, адступаюць на другой план. Усе тры безплатныя сервісы зникаюць. Што застаёцца, так это інжынерная проблема з пяцьма разнымі видамі вхідных дадзенняў, пры чым кожны з іх працуе аднародна:
- Паведамленні. Чалавек пішае агенту. Такія випадкі ўзніклі рэдка, яны вже фільтруюцца па рашынку чалавека і маюць чыстае намеранне. Гэта просты варіант.
- Расклады. Cron і все, што выйшла з яго. Расклад запускаецца незалежна ад таго, чыясьць якая-небудзь падзея адбылася чы ні. Гэта корыстна, таму што гэта ловіць тое, чаго не бачыць стрэмы падзеяў, але таксама марнацэльна, таму што большасць запускаў застаёцца без рэакціі.
Проектаванне агента, які выкарыстоўваецца у стане спакою, значыць прымэчваць, якім чынам воны складаюцца ў еднацелую структуру. Калькі з іх можа прызваць агента да актываціі? Чы ўсё, што знаходзіцца межы працоўным сигналам і модэлем? Чы ўсё, што агент перабудоввае пра свет, калі ён прыходзіць да сябе? Якшчо памыліцца ў однам напрамку, будзе атрыманы вышэўказанный сценарыю — модэль, які ў кожныя два хвіліні «ачытае» тышу. Якшчо памыліцца ў іншым — агент будзе спаць працоўна пад час інцидэту, які ёму трэба было зафіксаваць.
Фанель актываціі: трыаж як сходніцы
Ключовым эканамічным фактам ўсё тое, што выклік модэлю ёсць найдорожэйшым умовным аперацыям, якія толькі можна запрацаваць. Запыт да модэлю „Чы гэта мае значэнне?“ коштуе прыблізна у пяць-семь разоў больш, чым фільтрацыя базы дадзеных, якая адпаведае на тую ж запытку для структураваных дадзеных. Таму рабочая архітектура ніколі не ёсць простай лініяй ад зваротку до модэлю. Це фанелі: серыя стадзій, кожная з яых дешэвей наступнай, пры чым кожная з яых адкидае большую частку таго, што да яе прабівае.
Першая стадзія: структурныя правілы
Першыя ўрагі практычна не каштуюць нічога. Це просты код, які аналізуе формат запуску падзей: його тип, адправальніка, атрыбуты, а таксама хранілню чыста чергу, з якой ён прыйшоў. Новыя листы, автаматызаваныя паведамленні, каментары ботаў і падзеі для проектаў, якія не належаюць агенту, можна проста дадаць сюды без жадных перакананняў. У звычнай папцы вхідных паведамленняў значны частака необработаных дадзенняў ніколі не патрабуе подальшай обробкі. Якщо на гэтым этапе відкидаецца менш за палову вашых необработаных падзей, значыць вашы правілы, верагодна, занадта строгі.
Другі ўраг: зменшэнне частоты запуску і агрегацыя
Пады з’являюцца групамі, якія маюць адну прычыну: дзесяткі пісьмоў у аднай нитку, пакет з трыццацьімі змянамі, сотні апавешчэнняў з адного несправнага прыстрою. Правы элемент, на які трэба звернуць увагу агента, — не адзінлівы пад, а ситуацыя, якая за ўсім стоіць. Таму на гэтым этапе выкарыстоўваецца короткі прыметак часу, пады групуюцца за ключамі супараднення, такімі як нітка, запрошэнне да змяны чы інцыдент, і для кожной ситуацыі передаецца адзін з’еднаны сигнал.
У гэтым этапе таксама неабходна тэрпячасць. Дакумент, які зменіўся аднойчы, верагатна зменіцца ўсё больш разоў прыбліжна за калькі наступных хвілін. Якщо вы працюеце пасля певнага інтэрвалу пасля апошней змены, а не ведаючы пра першую змену, вы значна зменяеце колькість паўтарных пераглядоў, і кожны такі перагляд даходзіць да болей полнага абразу ситуацыі. Той самы прынцып дзейсні ўсякі раз, калі калькі автараў змінююць спяльны стан: серія з чацверохдзесят падзействаў зазвычай описвае адну рэальнасць.
Прымечанне пра механізмы стежэння: поль і diff, ніколи не поль і адгук
Механізмы стежэння выконваюць рашэнне пра витраты, якога няма у іншых трыгераў. Калі-небудзь трэба зафіксаваць змену, і для гэтага існуе роўна тры спосабы:
- Джэрела самыя падаюць данні. Webhook або падпіска паведамляюць вас, калі змініўся стан. Калі такое існуе, выкорыстоўваюце яго.
Сам процэдура запыткаў заслуговае на лепшую рэпутацыю, ніж падазроўвае тая сцэнарыя. Запыткі ёсць дашчавыя; дорогае — гэта адгукі. Задача, якая запрашвае стораніцу, гэнеруе её хеш і паўставляе яго з пярэднім хешам, коштае мізерную суму ў год. Большасць систем не апошнююцца вебхукамі, таму правіла „ніколі не робіць запыткаў“ няўярныя. Рэальнае правіла — гэта тое, што запыткі павінны заканчывацца выявленням разніцы, а не вызывам модэлю. Зробіце скрыншот, паўставьце яго ў порэванне і дазвольце толькі выявленым змянам праходзіць да подальшай обработкі як запіс, дзе яны падлягаюць тым жа правілам і класыфікатору, як і ўсе інша. Чы змянілася якаясь рэч, — гэта пытанне для функціі хеша. Чы гэтая змяна мае значэнне, — гэта пытанне, для якаго вы прызначаеце модэль.
Трэці этап: дашчавая класыфікацыя
Тое, што перазстоіць па правілах і процесе агрэгавання, пераходзіць у маленькую, быструю, недорогую модель з яшчэ болей скураным запитам, на кантэксте "адказаць адной словам: спяшнае, рэлевантнае чы ўзнікнуць." Гэта звычайная каскадна схема распрацоўкі модэляў, прыменяваная для паведамленняў: недорагі рывень працюе з неяснасцямі, якіх не маглі выразіць фіксаваныя правіла, і толькі рэзультаты "рэлевантныя" і "незначныя" праходзяць да далейшай обработкі. Маленькая модель, якая праваляе у 92% случаў, стоячы прымусова перед вялікай модэлью, якая коштуе у трыдцать разоў больш, — гэта весь сенс такога рывня. Чыбаць болей дакладнае разумеванне таго, звядзе кампеніюць витраты на агентаў, можна ў модэлі витакоў для агентных AI, заснованай на архітэктуры.
Чатверты ўрадок: агент
Толькі на гэтам этапе пачынаецца цэлы процес стварэння рашты, ў якім урахоўваецца рэальны контекст, неабходныя інструменты і бюджет. У здароўай «воронцовай» структуре толькі незначная частка первіснага трафіку дасягае гэтага этапу, а кожны з іх прыбывае вучора ўжо упакаваным як конкрэтная сітуацыя, а не проста як отдзельны запуск.
Пяты ўрад: чалавек
«Воронца» продовжаецца і пасля агента, таму што агент таксама являе сабою фільтр: ён выбирае, якія з його нараджэнняў вартыя часу чалавека. Саме на гэтым заканчальным ўрадзе завышаецца успех або неудача систем, і яму прыдзелена свая частка нижэй.
Арытметыкі перадзялу
Застосавайце гэта да команды з самага пачатку. Падазроўваюце, што яны зменяюць спосаб прыёму паведамленняў з polling на webhooks і дадаюць структурныя правілы, якія адключаюць прыблізна 70% первісных запісаў, таму што яны ўжо ў формате наведамленняў чы робіцца автаматызаванае пашто. Об’еднанне запісаў па тэмам адключае ўтрымкі прыблізна 60% таго, што застаўся. Потым невялікі класифікатор пазначае прыблізна 85% засталога як „ігнораваць“. Модэль тепер запускаецца прыблізна трыдцать разоў на месцы двадцяці двух тысяч, пры чым такі ж адэльныя адзінадцать дзеянняў яшчэ выканаюцца. Кост на адна корыстная дзеяння знижваецца болей чым у дзесяць разоў.
Спантажуючы гэта тое, што падвышаецца і точнасць. Кожная дзеяння тепер аналізуе цэлісную ситуацыю, а не які-небудзь даказваны фрагмент, який працягваецца ў межах двух хвілін, таму модэль мае кращыя даны для аналізу.
Хорашы сон: як бездзейны агент не купае нічога
Между станама актывацыі ідеальны агент для роботы ў фоне вообща не існуе. Ён не працюе тыха ў фоне; няма жадных процэсаў, контейнероў чы спецыяльных сэрвісаў. Усё, што яго абмежвае, — это запіс у базе дадзенаў: ідэнтыфікатор, настройкі, паказчык да його памяці і спіс падпісаў. Гэта ўособленне ідэі «чаканне — гэта проста стан» дагэтуль, да яе логічнага канца. Актывацыя, якая адбываецца пасля перыоду спакою, — гэта данні, якія знаходзяцца ў стане спакою, а зберагчыканне такіх данняў — адна з найдешавейшых послуг, якія прымушаюць прадаўцы хмарных сервісаў.
Это значыць, што актывацыя — гэта процес реканструювання. Усе, што стосуецца пачатку роботы перыявленага рабочага процэсу, тут прымае ўсё болей значныя меры, адтакуль ніхто не стаўіцься свідкам таго, калі гэта вядзецца.
Паўтарна настройка часу
Агент, які выйшаў зі сну пасля шысьця дзён, должен быць паведамлены пра тэчасовую гадзіну і павінен перысчытаць усе вялікія паказнікі, які ён мае. Запіс «Канец часу — пятница», напісаны ў вток, ўжо на наступны паўтак будзе проста некоректны. Неабходна падаць агенту тэчасовую гадзіну па часавому поясе його керавальніка і гадзіну яго пярэдняга прыходжання да свядомасці, ўпэўніўшыся такім чынам, сколькі часу ён перабываў у стане спячкі.
Спрыймайце памяць як можліва застарелую
Свет продаваліся ў рух, пакуль агент не быў прысутны. Факты, якія зберагліся ў памяці, должны маты пазначку пра час стварэння і перавергаться перад выкарыстоўваннем, а контекст прыходжання да свядомасці должен вялікай меры прабачаць новыя даны замест запамятаваных. Гэта тая ж самая практыка, якую вы застаўляеце, калі крок з апраўданнем чалавека паставляе на паузу рабочы процес: прыкрепіце рашэнні да моментальнага знятка, а потым перавергніце іх, калі выконанне будзе продаважанаць.
Праўерніцеся на цялевую мету
У агентах, які працуюць дзеўна, цяль эфектыва перабудовываецца на кожным кроку на адваротнае падставе контэксту, таму цялі змінююцца пра гады. «Wake» сабирае свой контэкст з нуля, што робіць гэты момент або самым рызыкавым для змін, або найлепшай можлівасцю для ўсунення такіх змін. Якщо все зроблена правільна, кожны «wake» перачытае ваказанне цялі. Якщо агент перабудовваецца дваста разоў у год, то ёсць дваста можлівасцей вернуць яго да пачатковага задання без дадатковых витатаў.
Гэтая прычына, чаму дизайны, якія пачынаюць новую сесію пасля кожнага працявання, зберагчычы цэласообразнасць у зовнішней памяці та файлах замест адчыненага ў часе запису, працуюць набліжна лепей, чым адна бессмертная сесія, якае накаплівае месцы застарэлых дадзенняў. Функцыі запланаваных агентаў у сучасных інструментах для кодавання, рутыны Claude Code якія ў момент напісання ўжо знаходзяцца пад большым ведама, у значныя частыні следуюць гэтой модэлі новай сесіі пасля кожнага запуску. Гэта разумны выбар для кожнага, хто бачыў, як контекст, які існуе калькі недзеў, вплывае на повадкі агента.
Што мае мяць хорашы контекст пасля працявання
„Реканструкцыя“ здаецца абстрактной, пакуль вы яе не напісае. Якша складзены прыказ для агента падобны на інструкцію, якую система складае частка за часткаю:
- Файл целі, незменены. Прычына існавання гэтага агента та меры, якія обмежваюць тое, што ён можа робіць.
Зверніце ўвагу на тое, чаго не хапае: транскрыпцыя пакульшых сеансаў. Їхнія выводы застаюцца, таму што кожны сеанс перакладае тое, чым научыўся, у памяць пры сваім завершэнні, але робочы залишак кожнага сеанса відкидаецца. Гэта спраўа дапамагае падтрымваць двацяты сэанс на такі ж роўні, як і другі. Це таксама дапамагае з бюджэтом, адколі кароткая інформацыя з калькуляцыяй у канікоў тысяч симвалаў заменяе транскрыпцыю, якая могла б складацца з сотняў тысяч симвалаў.
Гарантіі аддачы з элементамі LLM
Пачатак сеанса таксама означае успадкуванне класычных проблем распрацоўкі дадзенняў.
Дастынка адбываецца хоць раз, таму кожны запуск павінен быць ідэмпатным. Аблакі чысткі і службы webhook маюць права адправіць вам тую ж паведамленне два разы. Для аб’екта без стану дублікат — проста шумоўнае паведамленне. Для агента, які выкарыстоўвае інструменты, дублікат можа значыць выкарыстанне той самай незворачнай дзеяння два разы. Рашэнне — стандартнае: вырашыць ключ ідэмпатнасці з эвенту і пераканацца ў яго наяўнасці пры выконанні будзь-каго дзеяння, якое нельга анулюваць. Якщо вам трэба падтрымка ў ціх тэхнічных аспектах, перагляньце як працуюць ключы ідэмпатнасці у Node.js POST-канцах.
Агентам, які працуююць у амбіентным режыме, таксама патрэбна другая пераконтрацыя на рэгламентах ситуацыі. Агент, які быў прызваны через тое, што „PR #482 можа быць з’еднаны“, должен пераканацца, што запрошэнне да з’еднання яшчэ можа быць выконана, пры тым, як дзеяць. Час з’явлення агента могаў прыйсці ўжо колькі хвілін таму, і іншы учасник, будзь то чалавек або другі агент, можа ўжо займіцца гэтым пытаннем. Конкурэнція ў момент прызвання агента — це звычайная конкурэнція ў супяроўнаным стацыянарыі з большым часам межы між прычыной і наследкам.
Стрімы маюць «дзярожы», таму кожны прыстрой патрабуе періядычнага супрацоўкавання даных. Канцэнтры можу перыядычна не працаваць, падпісанні выгораюць, а прадастальеры інодзе прыпыняюць доставку даных без паведамлення. Прывод, які будуець рэагаваць толькі на змяны, зрэшты прастое перакрыць якую-небудзь змяну, пры чым ніхто гэтага не зазначыць. Ззовні агент, які мовчыць таму, што нічога не адбылася, выглядае так сама, як і агент, які мовчыць таму, што стаў недзеяльным. Рашэння ўжо старае і не такое вяліканскага характеру: павольная запланаваная перапрацоўка, якая параблікуе рэальны стан з тым, што адзвярнуў стрім падзей, прычым адбываецца гэта падобна да таго, як системы платаў супрацоўкаюць тое, што планавалася, што было знята і што фактычна аддаўана. Для змены затрымкі викорыстоўваецца метод push, а для павернення правды — метод перапрацоўкі.
Развітыя проблемы: супернікі, увага, канкурантнасць і «буры»
Трыгерам являецца паверхня атак
Парадоксальна пяць типоў дадзеных, якія трэба рассматраць з точка зоры безпекі. Кожны, хто можа адправіць паведамлення, фактычна можа запусканы агента. Контэнт Webhook, тэла электранічных паведамленняў і коментары, якія можуць спрычыніць актывацыю агента, ўсе яны ўважаюцца ненадзеянымі текстамі, і яны потрапляюць да моделі, якая мае доступ да інструментаў. На вядзменна з чатам, пад час актывацыі агента няма жоднай людзі, якая могла б зазначыць, што ўсё не так. Рэтельна сконструавана „адчынная“ электранічная паведамленне не толькі марнуе час агента; яна таксама вплывае на тое, што агент будзе думаць, і гэта є першым крокам у майже кожный ланцуг атак на агента па прымусе.
Усі стандартныя заходы абаранавання ўжо прыменяюцца. Спрабачваець кантэнт запускаючых падзей трэба розглядаць строго як даны. Сандкасін для агента, який працуе ў серавышчы, трэба налаштаваць жорсткіяй, чым для чат-агента. Трэба раздзеляць тры небяспечныя можлівасці: доступ да прыватных дадзэнняў, выключэнне ў вузел недазволенага кантэнту і можлівасць зв’язку з зовнішнім светам; агент, які стежыць за паштою і мае шырокі набор засобоў для адправкі паведамленняў, мае ўсе тры гэтыя можлівасці, а таксама ўможлівення кантролю. Дадзіце адну правілу, спецыяльнае для систем, якія працуюць у серавышчы: автонамія должна зменшвацца працоўна з тым, насколькі вы даверяеце фактору, який ўзначае запуск. Актывацыя, якая выйшла з-за вашага сабецкага календаря, можа дзейсніцца. Актывацыя, якая выйшла з-за кантэнту ад сторонньяго, больш за ўсё должна толькі паведамляць.
Чалавек — гэта самы рэдкі ресурс у гэтым цыкле
Большая частка таго, што стварае агент у амбіентным режыме, — це перакрыцця дзействаў людзей, а перакрыцця ёсць сваеўобразны «валюта», якая тыраць сваю цэннасць, калі яе выдаёцца занадта многа. Корыстны патэрн, які добра апісаны ў працях LangChain па тэме скрынькі для агентаў, — цэх трывальных крокаў, якія агент можа запытаць у людзі:
- Паведаміць. Толькі для інформацыі; няма патрэбы ў якіх-небудзь дзеяннях.
- Запытаць. Агенту патрэбна адна факт, прычым які ён можа продаваць далей.
- Пераглянуць. Агент падготавіў дзеянне і хочаць атрымаць санкцыю.
Ключовая інформацыя, спецыфічная для данай сферы, заключаецца ў тым, што гэта «лесвіця» служыць таксама показнікам якасці. Запішыце, як люди рэагуюць на кожна перарыв: чы прыймаюць дзеяння, чы ігнаруюць або не зважаюць. Гэта дае вам точны показнік для всего процесу. Агент, чыя спавешчанні ігнаруюцца 80% часу, не проста трацыць 80% можлівасцей — гэта таксама навучае людей ігнараваць ўсе спавешчанні, і калі яны так зрабяць, корыстныя 20% таксама знікнуць. Вяліка колькасць спавешчанняў ускладнювала контроль працы агентав пра гады ўсё раней, чым з’явіліся мовныя моделі, і выразны текст спавешчання нічога не можа змяніць у гэтым.
Канкурэнція: суперсіла з адпаведным рызыкам
Апрантак амбіентнага агента включае можлівасць дзействаў над калькама падзеяў адразу, і гэты момант лёгка працягнуць. Агент для чатавання керуе адной беседай. Амбіентны агент можа выконваць чатырнаццаць задач адразу, кожная з яных у самастоятнем чыстам контэксте, пры чым кожная мае частковы відблеск спяльнай рэальнасці. Вы атрымалі систему з калькама агентоў без якога-лібо намеру, а таксама і прыгонныя проблемы, якія ў яе існуюць. Два процесы, створаныя падэйнамі падзеямі, могу захапіць адной і той жа квитак, запісаць суперасунковыя адпаведзі ваўніку або оба можу взяць сабе тую ж задачу, пры чым ніхто не можа гэта з’ясавіць, адтолькі чыстыя контэксты нічога не дзелюць межу сабою.
Меры падборкі, прыбліжна за ступенем прывяленьня:
- Раздзеленыя процесы па ключу карэляціі, так што кожная ситуацыя мае свой стан. Групаванне, якое вы створылі на другай стадзіі, таксама служыць правилам прыналежнасці: кожная ситуацыя атрымлеў роўна адзін процес і не будзе маты паралельнага аналога.
Якщо «воронка» побудавана правільна, большая частка гэтага даўаецца безкоштовна, і гэта не випадак. Ключы кораляціі, якіе групуюць запускі, і ключы власнасці, якіе захоўваюць стан, па свойбе хочуць быць тымі ж ключамі.
Режым шторму
Адна апупрацоўкавая інцыдэнтная ситуацыя може выдаць дзесяць тысяч коралірованых запускаў. Нявучая «воронка» ператварае іх у дзесяць тысяч практыкавальнікаў, рошт у выкарыстанні токенав і чацверо паведамленняў, якія выключаюць канал у середзіне інцыдэнту. Команды аперацый давно рашылі гэту проблему за дапамогою выяўлення флэпаў і групавання інцыдэнтных ситуацый.
Адэкватным аналагам агента ёсць детектар штормаў, які практычна порыхуе тэрат працы зараз наявных змаганняў з базовым значэннем, і калі гэты тэрат расте, пераключае «воронку» у іншы режым. У режыме шторма ўсе супаўзаемы элементы агрэгуюцца ў адну сітуацыю, пра якую будзе паведамлены адзін агент, які тады отрымае конкрэтны інструкцый: «Гэта шторм; падсумаваў яго, выканаў найбольш верагодную прычыну і аправіў адна паведамленне». Контроль витакоў мае значэнне, адколі самэ ў канцы рабочага навантажэння бюджеты часта выкарыстоўваюцца, але ўсё ж такі факт неабходнасці увагі мае большое значэнне. Пад час інцыдэту спроможнасць чалавека прыміваць перарывы зменшаецца самэ тады, калі тэрат працы расте. Режым шторма — гэта «воронка», якая вырахоўвае гэту зміну.
Мераваць неактыўных агентоў як продукт
Найважнейшыя ўсьмо тры цифры:
- Кошт за кожны корыстны «прыгун». Абсалютная сума выдатка дзеліцься на колькість «прыгунав», якія, па адзінскай думцы, былі корыстныя. эта ўзельнай эканомікі, прыменена да вашай сябе системы.
- Точнасць трыяжу і ўспамін. Їх можна дужа эфектыўна ацэніць па звычайным спосабам. Працаваць трэць дзён паказаных раней адбыўчыках через прыемнік кандыдаатаў і парабяляць «прыгунав», якія гэты прыемнік мог бы спрычыніць, з рэальнымі адказамі людзей.
Гэты набор для перагляду ўскладненняў — адна з рэдкіх метадаў, якія можна стварыць практычна без каштоўкаў, таму што атрыбуты вялікі час знаходзяцца ў історыі вашых заявак. Гэта ператварае змяны ў прыемніку кандыдаатаў з праблемах думак у вимерлівыя разлікі.
Аўтонамія, якая залежыць ад часу
Ішэнь адзін варыянт ўжоўваецца за низкія косты і, як не па-звычай, ён рэдкасці: неха верхня межа автонаміі прыбору залежыць ад таго, калі ён запускаецца і хто можа быць доступны. Такія вынікі могу правядзіць неабходнасць автаматычнага рашэння о 11 гадзін ранку у втарок, калі люди ў сеті, кнопка абставялення ў доступным расстояньці, а радыус уражэння добра вядомы; тады можа быць достатнім лишэння апавешчэння ў раннія гадзіны недзеля.
Гэта не ўскладнена абераганне. Це рашэння, вырачана на аднойчынныя прагрэсы з урахоўванням часу. Косты запытку є низкія за рабочага часу, а вечарамі — вельмі высокія. У той жытак корысть ад людзкага надзору, тое ўсё, што хтось можа з’явіцца і выправіць памылку, умножаная на косты той памылкі, зменшваецца вечарамі, калі ніхто не стежыць. Таму памылкі стаюць домінантным факторам, і порогавая значэнне должна перасунуцца ў бак запытку, што на практыцы значыць адкладэнне, адтакуль што няма нікога, хто бы могў адпавесць.
Кодавайце гэта як выкарыстоўванне ў системе, якая спаўнае критэрыя доверы да тригера, ступеня сер'ёзнасці дзеяння і наявнасці чалавека, і прызначае іх аднаму з трохоў наследкав: дзеяць зараз, паставіць у чергу на ранак або негайна паведамленне. Варыянт «паставіць у чергу на ранак» є незаўважаным героем. Большасць рэчаў, якія фонавы агент зазначае о 3 гадзінам у ночы, ўсё абсалютна нормальна як пункт для перагляду, які чакае аж да 8:55 ранку, вже упакаваны ў запрошанне агента да дзеяння, і прыбывае прыбліжна тады, калі готавіцца першы кафе.
Шаблоны ў рэальных системах
Памочнік па электраням з поштовым ящыкам для своіх адпаведальных
Рэферэнсны агент LangChain караце з паведамленнямі па электроннай пошцы: ён складае адпаведзі, зберагае паведамленні і перадае ў вышэйшыя рангі. Яго дизайн для абмену є болей інструктыўным, чым процес складання адпаведзей. Команда, якая стварыла ўсё гэта, спрыймае участку чалавека не як компроміс, а як спосаб прызначэння меншых рызыкаў, які спрыяе лёгкаму выводу на рынак, падтрымкае довер'е і спрабоўвае стварыць дзейнаўую памяць. Їхній роздзел «Agent Inbox» — адна плошча для перагляду, дзе выказаныя ўсі незакончаныя абмены межа чалавекам і ўсіма агентамі — являе сабою фізычны выраз лестніцы для паведамленняў, запытанняў і перагляду. Адна з постаўных жартоў гэтага проекту, што якщо вас ігнаруюць, то гэта навядома віна агента, выказвае сутніцу эканамікі уваги: агент існуе для таго, каб чалавек распыляў сваю увагу розумней, а жарты пачынаюцца тады, калі гэта не выходзіць.
Агенты з планаваным запускам у інструментах для кодавання
Вялікі платформы для кодавання працююць над дадзеннем агентоў, які запускаюцца за раскладам і пад час падзеяў у рэпазітарыях заместо на падказкі; прыкладамі ўсё тыя ж рутыны Claude Code і запускі, кія ініціююцца з GitHub, з якімі стыкаліся багато разработчыкаў. Пераканаецеся ў актуальной даследчайнай матэрыяле, адтолькі гэтыя функцыі быстра развіваюцца. У ўсіх іх праўяцца два падходы да дизайна, і оба падтрымліваюць аргументы, прыведзеные тут. Кожны запуск пачынаецца з чыстай сесіі, пры чым контынуітэт перадаецца через файлы і памяць, а не чрэз бесканечны транскрыпт. А слой ініцыяцыі — цэла класычная інфраструктура, такая як выразы cron, фільтры webhook і умовны YAML; ніякіх модэляў няма ў жадным з етапаў обробкі. Інтэлект ёсць дорогі, а прыстройства для запуску — дешавыя, таму продукты трывожна ўтримваюць іх адзін ад другога.
Спостерагучыя за інфраструктурой
Прадаўцы хмарных сервісаў апісалі шаблоны для агентаў, якія стежачы за інфраструктурой актыўна фіксуюць проблемы. Хорашая разработка такіх агентаў выглядае як практычнае застосаванне гэтага кярібніка. Падзеі надходзяць з власнага буса падзеяў платформы, таму структурнае фільтраванне доступна безкоштовна. Падзеі корелююць прычым перш чым будзе запусканы які-небудзь агент. А ў разе значных проблем агенты ствараюць аналіз для перагляду, а не самастоятельна застаўляюць паследкі. Деталь, яку варта пераняць, — градыент довер'я: чым далей працоўнае рашэнне, тым вышэ ён падыходзіць у лестніцы спавяшчэння, запитанняў і перагляду. Спостерэнне можа быць автонамным; втручанне — пад наглядам.
Команда для абследавання, чэрез чатыры месцы
Працаваць з командай пасля перадзеявання, калі ўсё стабілізуецца. Їхня система тепер складаецца з вебхуков, нитак, якія агрэгуецца за дзесяць хвілін тышы, невялікага класифікатора, якога запит можа поместыцца на карточку з індэксам, а таксама прыблізна трохце сорак модэляў-фронтяра ў месцы. Два рэзультата выдзеляюцца: вартасць кожнага корыстнага рэзультата знижваецца прыблізна у сорак разоў, а, калі не спадзявацца, рэгулярнасць адліквідацыі даных вырастае. У пярэднім дизайне ситуацыі дзеляліся на абэчныя двамінутныя фрагменты, і пры як меньш чым двух разах система адхіляла частковы відгук пра ўсё, што ў цэлым явна заслуговаў на адпаведны „так“.
Такім чынам, перадзеявання дало больш, чым проста знижэнне вартасці. Групаванне падзеяў пакращыла якасць адліквідацыі даных, адтолькі ўсё-такі модэль оцэнюваў цэлыя ситуацыі, а не їхнія дзеякі фрагменты. Проблемай ніколі не была сама запланаваная задача; проблемай было тое, што ад модэля запрашвалі адліквідацыю даных пасля кожнага ўзрыву.
Выбір базовых элементаў
Большую частку гэтага комплексу следует купіць або перадаўжыць у вжытак, а не стварыць з нуля.
- Інфраструктура для запуску. Cron і адпоўнюючыя яго рашэння; шыны і чергі змагань, такія як EventBridge, Pub/Sub, Kafka або простыя webhooks; а таксама расклады і сігналы ў двухэтапных механізмах, такіх як Temporal, Restate або Inngest, якія таксама забезпечвають стойкае зберыць данні. Першы і другі этапы канвэю безпасова падпадают пад функцыі, якія вже выпалююць гэтыя інструменты.
Затрачыце свой бюджет на новыя рашэння на працэ фанелі і на реканструяванне контэкста, а ўсё інша купіце. Скедуляры ўжо є рашэнням проблемы, якае перабачае дзесяткі гадоў тэставання. Домашні цыкл, який пераглядае модель кожныя два хвілінуты, такога рашэння не є.
Усё це можна запісаць у калькольванні каля калікоў ліній псевдакода. Чытайце яго зверху да ніжней часткі, па прымэру фанелі: безкоштовная пераконтрацыя правіла, адбіранне інформацыі ў певную ситуацыю (без вярнення нічога пакуль ситуацыя ўсё яшчэ стабілізуецца), дышча класыфікацыя, захопленне ад дуплікатных доставак, реканструяванне контэкста на аднойчыну на актуальны час, чытанне файла з метаю і новых дадзеных, запуск агента за бюджэтам, і нарэшце доставка чераз адну з трох функцый папкі для спаму.
async def on_event(evt):
if not rules_pass(evt): return # stage 1: free
sit = coalesce(evt, window="10m") # stage 2: situations, not events
if sit is None: return # burst still settling
if triage_small_model(sit) == "ignore": return # stage 3: cheap
if seen(sit.idempotency_key): return # at-least-once armor
ctx = rebuild(now(), goal_file, fresh_reads(sit)) # stage 4: wake = reconstruction
outcome = await agent.run(sit, ctx, budget=WAKE_BUDGET)
inbox.deliver(outcome.verb, outcome.summary) # notify | question | review
Зверніце увагу, дзе знаходзіцца пераконтроль на ідэмпотентнасць: пасля дешавых фільтраў, але да таго, калі выканаюцца дорогія чыста незворачныя операцыі. Яго таксама можна розместіць раней; галоўнае — каб жадных дублікатаў ніколі не прабрацалася да agent.run. У рэальной системе пераконтроль «перад дзеянням» на рэжыме таксама выканаўцца тут, адкуль спачатку стае доступны чысты стан.
Практычны путаводзіцель па спосабах абяканняў
- Проблема частага запытвання. Дорогі модэль неадкладна запытваюць пераглядаць нічога. Рашэнне: правілы та агрегацыя празь якія-небудзь вызывы модэляў, а пасля — дешавый модэль перад дорогім.
- Проблема масовых абяканняў. Адна перашкода прыводзіць да тыяў тысяч абяканняў. Рашэнне: режым шторму, з датчыкам частоты, повной агрегацыяй, аднам агентам і адной паведамленнем.
План на адну недзелю, каб пачаць
- Працавайце з вашымі трыгерамі. Запісайце кожны шлях, які можа запусціць ваш агента сёння, і які коштуюць кожны з этих запускаў. Усі шляхі, які выражаюцца ў «запуске модэлю за таймерам», пазначыце як першыя, якія трэба выправіць.
- Створыце першы этап. Размістіце структурныя фільтры перед кожным трыгерам і вымерыце частку дадзеных, якія відхоўляюцца. Якща гэта значэнне нижэй за палову, вашы правілы занадта обережныя.
Заключэнне: спрыягчыце воспрыতтва, аддаце абавесці
Існуе сэрьёзная дыскусія пра тое, куды будуць развивацца інтэрфейсы агентаў. Адна з груп стаўіць на тое, што чат є перашым етапам інтэрфейса, а агенты будуць все больш працаваць унутрь потокаў падзеяў, фіксуючы проблемы ранейш за людзей. Увага — гэта самая ценная расходнасць для працавальнікаў у сферы знаёмых, і програма, якая сама прыдзельвае увагу для стежэння, а вашу — толькі калі гэта неабходна, ёсць проста лепшай програмай.
Іншая сторона падчырывае, што агент, які працуе цяпероўсі і мае неабходныя засобы, адразу ж стварае тыя самыя рызыкі, пра якія гаворылася вышэй: ненадзержаныя фактары, відсутнасць чалавека ў момент актывацыі і можлівасць самастоятельных дзеянняў у паўнай тымроўці. З такой точкі зору, запит ніколі не быў зайвым. Це была згода, а кожны крок, які выкарыстоўвае агента замест чалавека, перакладае рызык з моменту дзеяння на якосць вашых захоўных мераў.
У обох сторон є свае правыя, і самэй фанел — гэта месца, дзе яны зустроцься. Магчыма стежыць за всім, але трэба зазначыць, што дапамогла пры успеху вышэўшых прыкладаў традыцыйная інжынерыя: фільтрацыя, усуненне перашкод, ідэмпатны адказ, задачы на супрацоўку з несувярэннасцю і увага да перанасылення апавешчэннямі. Для выконання задачы все ж трэба схваленне, што якраз і выражае лестніца паведамлення, запытанняў і перагляду: автонамія для фіксацыі проблем, іерархія для дзеяння. Секрэт — у агентах, які шырока стежаць, рэдка працуюць і шукаюць згоду перш чым змяніць ўсё, што мае значэнне.
Корыстны трэнінг займае адзин вечар. Выберыце самы гучны поток апавешчэнняў у вашы дзень работы і практыкуйце стварэнне фанела для яго: калі простая правіла могу ўсунуць іх, што можа быць аб’еднана, калі мала модель можа класыфікаваць іх, а што справдзіва заслуговае на увагу. Вы створыце свога першаго агента-празніка прычым напісаць жаданага коду.