Hlavná navigácia

Pripojiteľné spúšťanie kódu v OpenAI Agents SDK

Prednostný prístup k OpenAI Agents SDK ukazuje, ako pripojiteľné sandboxy zjednodušujú spúšťanie kódu u vzdialených poskytovateľov.

Zhrnutie pre vedenie

  • Jednoduchšie harnessy a agenty spúšťajúce kód sú vhodnejšie na otvorené úlohy, pri ktorých môže príliš rigidná orchestrácia obmedzovať výkon modelu.

  • Spúšťanie kódu a sandboxing sú preto dnes kľúčovými architektonickými témami agentských systémov.

  • Agents SDK znižuje zložitosť aj množstvo kódu potrebného na vytváranie agentov spúšťajúcich kód — v našich testoch až šesťnásobne.

Pokrok v agentských systémoch dlho prinášalo zdokonaľovanie orchestrácie: lepšie zadávanie príkazov, rozhrania nástrojov, správa kontextu a presnejšie riadenie toku. S rastúcimi schopnosťami programovacích agentov sa však táto rovnováha začína meniť.

V mnohých otvorených pracovných postupoch už nie je úzkym miestom samotná slučka agenta, ale vykonávacia vrstva: sandbox, v ktorom model píše kód, spúšťa príkazy, kontroluje výstupy a postup opakuje. Keďže sa do tohto prostredia presúva čoraz viac uvažovania na úrovni úloh, okolitá orchestrácia sa musí zjednodušiť, aby model mohol naplno využiť svoje schopnosti.

Práve tento posun umožňuje nová verzia Agents SDK. Počas testovania v rámci prednostného prístupu sme zistili, že namiesto pridávania ďalšej vrstvy logiky frameworku robí vykonávaciu vrstvu modulárnejšou a skladateľnejšou, takže zvyšok systému môže zostať jednoduchý.

Posun

V inžinierstve harnessov je dnes trendom obmedziť harness na jeho minimálnu účinnú podobu. Vo všeobecnosti je harness softvér obklopujúci model: vrstva, ktorá spravuje kontext, nástroje, tok riadenia a spätnoväzbové slučky, aby model dokázal spoľahlivo pracovať.

Za posledných niekoľko rokov prinieslo mnohé zlepšenia výkonu agentov práve posilňovanie tejto vrstvy. Lepšie nástroje, pamäť a vyhľadávanie, explicitnejší rozklad úloh a presnejšia orchestrácia často zvyšovali spoľahlivosť aj schopnosti systémov. V tejto paradigme pokrok do veľkej miery znamenal zakódovať viac logiky úloh do softvéru obklopujúceho model.

Tento vzorec dnes slabne, prinajmenšom pri určitej skupine otvorených úloh. Čoraz viac projektov a odborných prác naznačuje, že výkon sa s rastúcou normatívnosťou harnessu nezlepšuje vždy. Pri asistovanom programovaní, dlhotrvajúcich úlohách, používaní prehliadača a úlohách s dlhým kontextom sa opakovane objavuje rovnaký vzorec: keď je model dostatočne inteligentný, vnucovanie priveľkého množstva štruktúry úloh do okolitého softvéru sa môže z výhody zmeniť na obmedzenie.

Úloha harnessu sa preto mení. Namiesto snahy vopred predvídať úlohu pomocou rigidnej orchestrácie slúži harness čoraz viac ako čisté vykonávacie rozhranie: sandbox, v ktorom môže model skúmať stav, spúšťať kód, zotavovať sa z chýb a prispôsobovať vlastný postup, pričom zostáva v medziach rozhraní a bezpečnostných opatrení systému. Tento vývoj sa podobá posunu, ktorý Andrej Karpathy opísal v Softvérovom inžinierovi 3.0: časť logiky, ktorá bola predtým súčasťou softvéru, sa presúva vyššie do „príkazu“.

Neznamená to, že by agentské systémy mali odstrániť štruktúru úplne. Mnohým úlohám naďalej prospievajú explicitné pracovné postupy, heuristiky a deterministické ochranné mechanizmy, najmä ak sú úzko zamerané, vykonávajú sa vo veľkom objeme alebo majú jasné kritérium úspechu. Ako sme uviedli v predchádzajúcom článku o heuristikách návrhu agentských systémov, dôsledná orchestrácia zostáva dôležitá, keď je spoľahlivý logický tok možný aj žiaduci.

Pri otvorených úlohách sa však ťažisko presúva. Výzvou už nie je navrhovať čoraz prepracovanejšie vrstvy orchestrácie, ale budovať vykonávacie prostredia, ktoré sú dostatočne jednoduché, pozorovateľné a modulárne, aby v nich model mohol efektívne pracovať.

Presun zložitosti z harnessu do vykonávacej vrstvy

Keď agent dokáže čítať súbory, písať kód, spúšťať shellové príkazy a rozbiehať dlhotrvajúce úlohy, mení sa aj technická výzva. Najťažšou časťou už nie je iba optimalizácia príkazu ani smerovanie nástrojov. Agenty sú vďaka práci so skutočným systémom podstatne výkonnejšie, no zároveň citlivejšie, pretože rozširujú priestor bezpečnostných rizík. Agent schopný spúšťať kód môže napríklad vykonať škodlivé akcie, ak jeho prostredie nie je dostatočne izolované (pozrite si Sandbox Bench od AISI).

Sandboxing sa preto stáva kľúčovou témou agentských frameworkov. V starších systémoch sa spúšťanie často považovalo za doplnok: nástroj dodatočne pripojený k harnessu. Keď však vykonávanie začne pracovať so stavom, trvá dlho alebo prebieha na diaľku, tento prístup prestáva fungovať. Správa samotného sandboxu, jeho životného cyklu, stavu, rozhraní a prepojenia so slučkou agenta sa rýchlo stáva samostatným problémom návrhu systému. Aj preto dnes čoraz viac poskytovateľov ponúka spravované prostredia na spúšťanie kódu vrátane Container API a shellového nástroja od OpenAI, ako aj služieb Modal, Cloudflare, Daytona, E2B a ďalších.

Táto hranica je dôležitá, pretože spúšťanie kódu vyžaduje silnejšiu izoláciu a prísnejšiu kontrolu za behu než zvyšok harnessu. Nesprávne implementované agenty spúšťajúce kód môžu v praxi priniesť tri zásadné podnikové riziká: nekontrolované náklady na výpočty, deštruktívne zásahy do interných systémov a odhalenie citlivých informácií. Správna kontajnerizácia, izolácia a ochranné opatrenia za behu dokážu tieto riziká obmedziť na úroveň prijateľnú pri reálnom nasadení.

Možno si to predstaviť tak, že agent dostane vlastný uzavretý priestor namiesto kľúčov od celej kancelárie. V tomto priestore môže naďalej vykonávať užitočnú prácu, no iba v jasne stanovených medziach. Môžete obmedziť jeho výpočtové zdroje, určiť, ku ktorým systémom a súborom má prístup, a kontrolovať, aké informácie má vôbec k dispozícii.

Riziko sa tým úplne neodstráni, ale problém sa zmení z „agenta voľne pôsobiaceho vo vašej infraštruktúre“ na „agenta pracujúceho v kontrolovanom prostredí“. Ak sa má táto vrstva stať štandardnou súčasťou agentských systémov, potrebuje plnohodnotnú podporu priamo vo frameworku. Sandbox sa tak stáva modulárnou vykonávacou vrstvou s prenosnými primitívami, ktoré môžu vývojári rýchlo zaviesť, zamieňať medzi poskytovateľmi a škálovať bez neustáleho prepracúvania logiky agenta.

Prečo je potrebná lepšia podpora agentských frameworkov

Keď agent začne spúšťať kód, orchestráciu potrebuje aj samotný sandbox. Prechod z lokálneho prototypu na vzdialené spúšťanie, viacero backendov alebo dlhotrvajúce relácie exponenciálne zvyšuje prevádzkovú záťaž. Potrebujete jednotný spôsob vytvárania a zastavovania prostredí, ich pozastavenia a obnovenia, vytvárania snímok stavu, neskoršieho opätovného pripojenia a správy toho všetkého u rôznych poskytovateľov.

Nič z toho nepôsobí koncepčne atraktívne, no v praxi je to dôležité. Presne tento druh infraštruktúry spôsobuje problémy, keď si každý tím buduje agentský proces od základov, najmä ak nie je integrovaný do agentského frameworku…

Práve tu nadobúda význam lepšia podpora zo strany frameworku. Získali sme prednostný prístup k novšej verzii OpenAI Agents SDK a sami sme pomocou nej vytvorili agenty v sandboxe. Vynikol najmä posun architektonického dôrazu: SDK pristupuje k vykonávaniu ako k plnohodnotnej vrstve, nie ako k okrajovému nástroju. V praxi to znamená, že agenta môžete spustiť v sandboxe, vytvoriť snímku sandboxu alebo obnoviť vykonávanie s menším množstvom kódu — v niektorých našich testoch približne šesťnásobne menším — a následne zmeniť backend bez prepisovania okolitej logiky agenta.

Toto čistejšie oddelenie zodpovedností umožňuje harnessu sústrediť sa na uvažovanie, kontext a pracovný postup. Vykonávacia vrstva sa môže zamerať na izoláciu, prenosnosť a stav za behu. Táto abstrakcia uľahčuje tvorbu programovacích agentov, ktorí sú schopnejší a jednoduchšie sa rozvíjajú, môžu prechádzať medzi lokálnym a vzdialeným vykonávaním, podporujú dlhotrvajúce úlohy a umožňujú meniť vykonávacie backendy bez nutnosti prepracovať celý systém.

Hlavné ponaučenie

Keď sa viac logiky na úrovni úloh presúva z harnessu do modelu, spolu s ňou sa časť zložitosti systému presúva nadol do vykonávacej vrstvy. Spúšťanie kódu a sandboxing sú dnes kľúčovými architektonickými témami agentských systémov, najmä pri otvorených úlohách a úlohách s veľkým podielom programovania. Návrh prostredia, v ktorom môže agent dlhodobo konať bezpečne a spoľahlivo, je dnes rovnako dôležitý ako návrh samotného agentského procesu.

Preto sú abstrakcie vyššej úrovne pre vykonávanie v sandboxe také dôležité. Novšia verzia OpenAI Agents SDK sa uberá týmto smerom a považuje vykonávanie za modulárnu vrstvu systému: prenosnú medzi backendmi, zachovávajúcu stav pri dlhotrvajúcich úlohách a dostatočne jednoduchú na používanie bez opakovaného budovania rovnakej infraštruktúry pre každé nové prostredie.

Všeobecnejším ponaučením je, že budúcu generáciu agentských frameworkov bude zrejme menej určovať množstvo pridanej orchestračnej logiky a viac to, ako dobre usporiadajú vykonávacie prostredia, od ktorých sú agenty čoraz závislejšie.

Autor

Romain Bourboulou