„Hermes Agent“ proveržis: asinchroninė architektūra išlaisvina DI nuo „užšąlančių“ pokalbių
Dirbtinio intelekto asistentai ilgą laiką sirgo viena erzinančia liga – kai deleguoji jiems sudėtingą užduotį, pagrindinis pokalbio langas tiesiog užsiblokuoja. „Nous Research“ komanda nusprendė šią problemą išspręsti iš esmės ir savo kuriamame Hermes Agent platformos atnaujinime pristatė asinchroninių poagentų (angl. asynchronous subagents) architektūrą. Šis inžinerinis žingsnis visiškai pakeičia žaidimo taisykles, nes leidžia foniniams procesams suktis visiškai savarankiškai, o vartotojas tuo pat metu gali netrikdomas tęsti dialogą ar kelti naujas užduotis pagrindinėje sąsajoje. Tai ne šiaip kosmetinis pataisymas, o rimtas architektūrinis postūmis link tikrojo DI asistentų daugiaprogramiškumo.
Iki šiol naudotas standartinis delegate_task įrankis veikė sinchroniniu režimu, o tai reiškė, kad pagrindinis agentas likdavo „pakibęs“ ir laukdavo, kol jo sukurti „vaikiniai“ procesai baigs darbą. Kaip rodo technologijų bendruomenės diskusijos platformoje GitHub, toks ribojimas neleisdavo efektyviai vykdyti ilgų tyrimų ar programavimo ciklų, kuriuos norėta tiesiog palikti fone. Naujoji ekosistema įveda specializuotą įrankių rinkinį, įskaitant delegate_task_async, leidžiantį akimirksniu sugeneruoti užduoties ID ir atiduoti kontrolę atgal vartotojui. Vėliau, kai patogu, progresą galima patikrinti neblokuojančia funkcija check_task arba tiesiog sulaukti fone veikiančios sesijos rezultatų suleidimo atgal į pagrindinį kontekstą.
Nuo fono architektūros iki skaičių
Šis pokytis tiesiogiai koreliuoja su drastiškai išaugusiu sistemos našumu ir resursų taupymu praktikoje. Atsisakius priverstinio laukimo būsenos, pirminis užduoties patvirtinimas sugeneruojamas greičiau nei per 5 sekundes, o fone paleistas poagentas naudoja visiškai izoliuotą aplinką, savo modelį ir atskirą žetonų (angl. tokens) biudžetą. Vartotojui nebereikia švaistyti brangaus konteksto lango resursų tarpiniams rezultatams palaikyti, nes poagentas grąžina tik galutinę struktūrizuotą suvestinę. Toks inžinerinis lankstumas atsispindi ir bendruomenės susidomėjime – šis projektas per trumpą laiką peržengė įspūdingą 175 000 žvaigždučių ribą atvirojo kodo saugyklose. Rezultatas akivaizdus: vartotojai gauna sklandų, nepertraukiamą darbą, o pats agentas geba lygiagrečiai dorotis su keliomis sudėtingomis užduotimis nerydamas perteklinės atminties.
Behind the Scenes: kai pažvelgiame giliau į sistemos variklį, esminis architektūrinis lūžis įvyko dėl to, kaip Nous Research programuotojai visiškai perrašė užduočių valdymo ciklą. Tradiciškai įrankių kvietimai agentų sistemose remiasi sinchroniniu I/O modeliu, kur pagrindinė gija (angl. main thread) lieka užblokuota, kol vaikiniai procesai negrąžina galutinio rezultato. Naujajame atnaujinime ši priklausomybė buvo nukirsta įvedant visiškai neblokuojantį foninį delegavimą, kurį inžinieriai aprašė projekto GitHub issue #5586 dokumentacijoje.
Sisteminiu lygmeniu kiekvienas naujas poagentas sukuriamas kaip atskiras AIAgent egzempliorius, tačiau užuot vykdęs kodą tiesioginėje sekloje, jis yra iškeliamas į izoliuotą foninę aplinką. Tai pasiekiama naudojant gijų telkinį (angl. ThreadPoolExecutor), kuris dinamiškai riboja maksimalų lygiagrečiai veikiančių vaikinių agentų skaičių, apsaugodamas sistemą nuo resursų išsekimo. Kiekvienam poagentui priskiriamas unikalus užduoties identifikatorius (UUID) ir atskiras iteracijų biudžetas, o tai reiškia, kad jų atminties sąnaudos bei užklausų limitai nebėra imami iš bendros „taupyklės“.
Duomenų vientisumą ir būsenų sinchronizaciją fone užtikrina centralizuota SQLite duomenų bazė, kuri veikia kaip vienintelis tiesos šaltinis (angl. single source of truth). Kai vykdomas ilgalaikis tyrimas, poagentas fiksuoja savo progresą ir tarpinius rezultatus tiesiai į duomenų bazę, o pagrindinis agentas per neblokuojančią check_task funkciją gali bet kada nuskaityti šiuos įrašus. Toks sprendimas leidžia išvengti sudėtingo gijų tarpusavio bendravimo valdymo ir eliminuoja lenktynių sąlygų (angl. race conditions) riziką.
Galutinis šios optimizacijos rezultatas – drastiškai sumažėjęs pirminio atsako vėlavimas ir išvalytas pagrindinio konteksto langas (angl. context window). Kadangi poagentai savo vidinius logikos ciklus atlieka visiškai savarankiškai, į pagrindinį pokalbį perduodama tik griežtai struktūrizuota galutinė suvestinė, o ne šimtai tarpinių kodo vykdymo eilučių. Tai leido pasiekti maksimalų resursų efektyvumą, paverčiant „Hermes Agent“ pilnaverte agentų operacine sistema, gebančia sklandžiai veikti net ir ribotų resursų debesų serveriuose.
Skeptiko žvilgsnis į asinchroninį pažadą
Reading Between the Lines: nors žiniasklaidoje ir kūrėjų bendruomenėse skamba liaupsės apie „Hermes Agent“ išlaisvinimą iš sinchroninių pančių, verta išlaikyti sveiką skepticizmo dozę. Visiškas užduočių delegavimas į foną ant popieriaus atrodo nepriekaištingai, tačiau praktikoje tai atveria visiškai naują inžinerinių problemų pandoros skrynią. Pašalinus tiesioginį pokalbio blokavimą, vartotojas praranda vizualinę kontrolę, o tai reiškia, kad fone besisukantis poagentas gali valandų valandas suktis uždarame logikos cikle, generuodamas įspūdingas sąskaitas už API užklausas, kol vartotojas ramiai gurkšnoja kavą.
Kita akivaizdi architektūrinė prieštara kyla bandant suderinti visišką autonomiją su konteksto vientisumu. Kūrėjų pristatytas sprendimas atiduoti galutinį rezultatą per SQLite duomenų bazę išsprendžia atminties lenktynių problemą, tačiau iš esmės ignoruoja dinamiškai besikeičiančią aplinką. Jei foninė užduotis trunka pusvalandį, o vartotojas per tą laiką pagrindiniame pokalbyje kardinaliai pakeičia projekto reikalavimus ar tikslus, poagentas tiesiog toliau vykdo jau nebeaktualų darbą, švaistydamas brangius serverio resursus ir kurdamas informacinį triukšmą.
Galiausiai, šis žingsnis link „agentų operacinės sistemos“ sukelia rimtų abejonių dėl determinizmo ir klaidų valdymo. Kai fone vienu metu sukasi keletas nepriklausomų procesų, tradiciniai derinimo (angl. debugging) metodai tampa praktiškai nebenaudingi. Sistemos inžinieriams teks susidurti su situacijomis, kai viena nepavykusi foninė užklausa tyliai sužlugdo visą tyrimo grandinę, o vartotojas apie tai sužino tik po ilgo laukimo gavęs tuščią suvestinę. Kol šios koordinavimo ir dinamiško prioritetų perskirstymo problemos nebus išspręstos, asinchroninė architektūra išliks labiau įspūdingu technologiniu demonstraciniu modeliu, o ne patikimu įrankiu kritinėms verslo sistemoms.
Nuostabu stebėti, kaip DI kūrėjai, bėgdami nuo erzinančio pokalbio lango „užšalimo“, sėkmingai atrado klasikinę kelių gijų programavimo magiją – dabar vartotojo sąsaja veikia idealiai sklandžiai, o sistemos lūžiai ir piniginės tuštėjimas tiesiog persikėlė ten, kur jų niekas nemato.
Vyr. redaktorius Artūras Malašauskas, DI sistemų integratorius, sukaupęs daugiau nei 20 metų patirties kuriant gamybinio lygio žiniatinklio inžinerijos sprendimus. Jis projektavo, diegė ir plėtė verslo klasės „Python“/„PHP“ sistemas logistikos, SaaS bei viešojo sektoriaus klientams. Pastaruosius metus jis specializuojasi išskirtinai DI integracijų srityje: diegia atvirojo kodo didžiuosius kalbos modelius (LLM), kuria generatyvinių medijų (vaizdo, garso, video) srautus bei projektuoja daugiagentines darbo eigas realioms gamybinėms aplinkoms. Jo standartas: atkuriamumas, saugumas ir ekonomiškai efektyvi išvestis – jokio „vaporware“. Artūras dokumentuoja bei vertina naujus DI įrankius, atskirdamas patvirtintas galimybes nuo rinkodarinio triukšmo. Techninis redaktorius svetainėse: ai-naujienos.lt, ai-verslas.lt, muza-ai.eu. Susisiekite per „LinkedIn“.
Vyr. redaktorius Artūras Malašauskas, DI sistemų integratorius, sukaupęs daugiau nei 20 metų patirties kuriant gamybinio lygio žiniatinklio inžinerijos sprendimus. Jis projektavo, diegė ir plėtė verslo klasės „Python“/„PHP“ sistemas logistikos, SaaS bei viešojo sektoriaus klientams. Pastaruosius metus jis specializuojasi išskirtinai DI integracijų srityje: diegia atvirojo kodo didžiuosius kalbos modelius (LLM), kuria generatyvinių medijų (vaizdo, garso, video) srautus bei projektuoja daugiagentines darbo eigas realioms gamybinėms aplinkoms. Jo standartas: atkuriamumas, saugumas ir ekonomiškai efektyvi išvestis – jokio „vaporware“. Artūras dokumentuoja bei vertina naujus DI įrankius, atskirdamas patvirtintas galimybes nuo rinkodarinio triukšmo. Techninis redaktorius svetainėse: ai-naujienos.lt, ai-verslas.lt, muza-ai.eu. Susisiekite per
Komentarai