Glavna navigacija

Zamjenjivo izvršavanje koda u OpenAI Agents SDK-u

Rani pristup OpenAI Agents SDK-u pokazuje kako zamjenjiva izolirana okruženja pojednostavnjuju izvršavanje koda kod različitih udaljenih pružatelja usluga.

Sažetak za rukovodstvo

  • Jednostavniji testni sklopovi i agenti koji izvršavaju kôd prikladniji su za zadatke otvorenog tipa, u kojima pretjerano kruta orkestracija može ograničiti učinkovitost modela.

  • Zbog toga su izvršavanje koda i rad u izoliranom okruženju sada među ključnim arhitektonskim pitanjima agentskih sustava.

  • Agents SDK smanjuje složenost i količinu koda potrebnu za izradu agenata koji izvršavaju kôd, i do šest puta prema našim testovima.

Napredak agentskih sustava dugo se temeljio na poboljšanju orkestracije: boljim upitima, sučeljima alata, upravljanju kontekstom i strožem upravljačkom toku. No kako agenti za programiranje postaju sposobniji, ta se ravnoteža počinje mijenjati.

U mnogim tijekovima rada otvorenog tipa usko grlo više nije sama petlja agenta, nego izvršni sloj: izolirano okruženje u kojem model piše kôd, pokreće naredbe, pregledava rezultate i ponavlja postupak. Kako se sve više rasuđivanja na razini zadatka premješta u to okruženje, okolna orkestracija mora postati jednostavnija kako bi model mogao iskazati sve svoje mogućnosti.

Upravo taj pomak omogućuje nova verzija Agents SDK-a. Tijekom testiranja u fazi ranog pristupa utvrdili smo da ne dodaje još jedan sloj logike radnog okvira, nego izvršni sloj čini modularnijim i prilagodljivijim kako bi ostatak sustava mogao ostati jednostavan.

Promjena pristupa

U inženjerstvu testnih sklopova sve je popularnije svesti testni sklop na najmanji djelotvoran oblik. U širem smislu, testni sklop obuhvaća softver oko modela: sloj koji upravlja kontekstom, alatima, upravljačkim tokom i petljama povratnih informacija kako bi model pouzdano obavljao zadatke.

Posljednjih godina mnoga su poboljšanja učinkovitosti agenata proizašla iz jačanja tog sloja. Bolji alati, bolje pamćenje i dohvaćanje podataka, izričitija raščlamba zadataka i stroža orkestracija često su sustave činili pouzdanijima i sposobnijima. U toj je paradigmi napredak uglavnom značio ugrađivanje sve više logike zadatka u softver oko modela.

Taj obrazac sada slabi, barem za određenu skupinu zadataka otvorenog tipa. Sve više projekata i radova upućuje na to da se učinkovitost ne poboljšava uvijek kada testni sklop postane strože definiran. Kod potpomognutog programiranja, dugotrajnih zadataka, upotrebe preglednika i zadataka s dugim kontekstom stalno se ponavlja isti obrazac: kada model postane dovoljno inteligentan, nametanje prevelike strukture zadatka u okolnom softveru može postati ograničenje umjesto prednosti.

Uloga testnog sklopa stoga se mijenja. Umjesto da krutom orkestracijom unaprijed pokušava predvidjeti zadatak, testni sklop sve više služi kao jasno izvršno sučelje: izolirano okruženje u kojem model može pregledavati stanje, pokretati kôd, oporavljati se od pogrešaka i prilagođavati vlastiti pristup, a pritom ostati unutar granica sučelja i zaštitnih mjera sustava. To je slično promjeni koju je Andrej Karpathy opisao u izlaganju Softverski inženjer 3.0: dio logike koji je prije bio u softveru premješta se na višu razinu, u „upit”.

Pouka nije da iz agentskih sustava posvuda treba ukloniti strukturu. Mnogim zadacima i dalje koriste izričiti tijekovi rada, heuristike i deterministički zaštitni mehanizmi, osobito kada su usko definirani, vrlo učestali ili imaju jasan kriterij uspjeha. Kao što smo naveli u prethodnom članku o heuristikama za projektiranje agentskih sustava, snažna orkestracija i dalje je važna kada je pouzdan logički tijek i moguć i poželjan.

Kod zadataka otvorenog tipa fokus se mijenja. Izazov više nije toliko u projektiranju sve složenijih orkestracijskih slojeva koliko u izgradnji izvršnih okruženja koja su dovoljno jednostavna, pregledna i modularna da bi model u njima mogao učinkovito raditi.

Premještanje složenosti iz testnog sklopa u izvršni sloj

Kada agent može čitati datoteke, pisati kôd, pokretati naredbe ljuske i pokretati dugotrajne zadatke, inženjerski se izazov mijenja. Najteži dio više nije samo optimizacija upita ili usmjeravanje alata. Budući da sada djeluju u stvarnom sustavu, ti su agenti znatno moćniji, ali i osjetljiviji jer stvaraju širu površinu sigurnosnih rizika. Primjerice, agent koji može izvršavati kôd može poduzeti štetne radnje ako njegovo okruženje nije dobro izolirano (pogledajte AISI-jev Sandbox Bench).

Rad u izoliranom okruženju stoga postaje ključno pitanje u radnim okvirima za agente. U ranijim sustavima izvršavanje se često smatralo dodatkom: alatom naknadno pridodanim testnom sklopu. No kada izvršavanje postane dugotrajno, udaljeno ili ovisno o stanju, taj pristup prestaje funkcionirati. Upravljanje samim izoliranim okruženjem, njegovim životnim ciklusom, stanjem i sučeljima te povezivanjem s petljom agenta brzo postaje zaseban problem projektiranja sustava. To je jedan od razloga zbog kojih sve više pružatelja nudi upravljana okruženja za izvršavanje koda, uključujući API za spremnike i alat ljuske tvrtke OpenAI, kao i Modal, Cloudflare, Daytona, E2B i druge.

Ta je granica važna jer izvršavanje koda zahtijeva snažniju izolaciju i stroži nadzor izvođenja od ostatka testnog sklopa. U praksi loše implementirani agenti koji izvršavaju kôd mogu izazvati tri poslovno kritična rizika: nekontrolirane troškove računalnih resursa, destruktivne radnje u internim sustavima i izlaganje osjetljivih podataka. Odgovarajućom kontejnerizacijom, izolacijom i zaštitnim mjerama tijekom izvođenja ti se rizici mogu svesti na razinu prihvatljivu za stvarne implementacije.

To možemo predočiti tako da agentu damo vlastiti zatvoreni radni prostor umjesto ključeva cijelog ureda. Unutar tog prostora i dalje može obavljati koristan posao, ali samo u jasno određenim granicama. Možete ograničiti količinu računalnih resursa koje koristi, odrediti kojim sustavima i datotekama smije pristupati te nadzirati koje su mu informacije uopće dostupne.

Time se rizik ne uklanja u potpunosti, ali problem više nije „agent koji slobodno luta vašom infrastrukturom”, nego „agent koji djeluje unutar nadziranog okruženja”. Ako taj sloj treba postati standardni dio agentskih sustava, mora imati punopravnu podršku u samom radnom okviru. Izolirano okruženje tako postaje modularni izvršni sloj s prenosivim osnovnim elementima koje razvojni programeri mogu brzo usvojiti, mijenjati među pružateljima i skalirati bez stalne prerade logike agenta.

Zašto je potrebna bolja podrška radnih okvira za agente

Kada agent počne izvršavati kôd, potrebno je orkestrirati i samo izolirano okruženje. Prijelaz s lokalnog dokaza koncepta na udaljeno izvršavanje, više pozadinskih sustava ili dugotrajne sesije eksponencijalno povećava operativno opterećenje. Potreban je dosljedan način stvaranja i zaustavljanja okruženja, njihova pauziranja i nastavljanja, snimanja stanja, kasnijeg ponovnog povezivanja te upravljanja svime time kod različitih pružatelja.

Ništa od toga nije osobito uzbudljivo u teoriji, ali u praksi je važno. Upravo takva infrastruktura postaje problematična kada svaki tim iznova gradi agentski proces, osobito ako nije integrirana u radni okvir za agente…

Tu bolja podrška radnog okvira postaje važna. Dobili smo rani pristup novijem OpenAI Agents SDK-u i upotrijebili ga za izradu vlastitih agenata u izoliranim okruženjima. Istaknula se promjena arhitektonskog naglaska: SDK izvršavanje tretira kao punopravan sloj, a ne kao sporedni alat. U praksi to znači da uz manje koda možete pokrenuti agenta u izoliranom okruženju, snimiti stanje tog okruženja ili nastaviti izvršavanje — u nekim našim testovima uz oko šest puta manje koda — a zatim promijeniti pozadinski sustav bez prerade okolne logike agenta.

Ta jasnija podjela odgovornosti omogućuje testnom sklopu da ostane usmjeren na rasuđivanje, kontekst i tijek rada. Izvršni sloj može se usredotočiti na izolaciju, prenosivost i stanje tijekom izvođenja. Ta apstrakcija olakšava izradu sposobnijih i prilagodljivijih agenata za programiranje koji mogu prelaziti između lokalnog i udaljenog izvršavanja, podržavati dugotrajnije zadatke te mijenjati pozadinske sustave za izvršavanje bez potrebe za redizajnom cijelog sustava.

Ključna poruka

Kako se sve više logike na razini zadatka premješta iz testnog sklopa u model, dio složenosti sustava premješta se s njom — u izvršni sloj. Izvršavanje koda i rad u izoliranom okruženju sada su ključna arhitektonska pitanja agentskih sustava, osobito za zadatke koji uključuju mnogo programiranja i zadatke otvorenog tipa. Danas je jednako važno projektirati agentski proces kao i okruženje u kojem agent može djelovati sigurno, pouzdano i tijekom duljeg razdoblja.

Zato su važne apstrakcije više razine za izvršavanje u izoliranom okruženju. Noviji OpenAI Agents SDK kreće se u tom smjeru tretirajući izvršavanje kao modularni sloj sustava: prenosiv među pozadinskim sustavima, sposoban očuvati stanje tijekom dugotrajnih zadataka i dovoljno jednostavan za upotrebu bez ponovne izgradnje iste infrastrukture za svaku novu konfiguraciju.

Šira je pouka da će sljedeću generaciju radnih okvira za agente vjerojatno manje određivati količina dodane orkestracijske logike, a više kvaliteta strukturiranja izvršnih okruženja o kojima agenti sve više ovise.

Autor

Romain Bourboulou