Päänavigointi

Liitettävä koodin suoritus OpenAI Agents SDK:ssa

OpenAI Agents SDK:n varhainen käyttö osoittaa, kuinka liitettävät hiekkalaatikot yksinkertaistavat koodin suoritusta eri etäpalveluntarjoajilla.

Tiivistelmä

  • Kevyemmät arviointikehykset ja koodia suorittavat agentit sopivat paremmin avoimiin tehtäviin, joissa liian jäykkä orkestrointi voi heikentää mallin suorituskykyä.

  • Siksi koodin suoritus ja hiekkalaatikkoeristys ovat nyt agenttijärjestelmien arkkitehtuurin ydinkysymyksiä.

  • Agents SDK vähentää koodia suorittavien agenttien rakentamisen monimutkaisuutta ja tarvittavan koodin määrää testeissämme jopa kuudesosaan.

Agenttijärjestelmien kehitys perustui pitkään orkestroinnin parantamiseen: parempaan kehotteiden laadintaan, työkalurajapintoihin, kontekstinhallintaan ja tiukempaan ohjauslogiikkaan. Ohjelmointiagenttien kykyjen kehittyessä tasapaino alkaa kuitenkin muuttua.

Monissa avoimissa työnkuluissa pullonkaulana ei enää ole itse agenttisilmukka vaan suorituskerros: hiekkalaatikko, jossa malli kirjoittaa koodia, suorittaa komentoja, tarkastelee tuloksia ja kehittää ratkaisuaan vaiheittain. Kun yhä suurempi osa tehtävätason päättelystä siirtyy tähän ympäristöön, sitä ympäröivän orkestroinnin on yksinkertaistuttava, jotta malli voi hyödyntää kykyjään täysimääräisesti.

Juuri tämän muutoksen Agents SDK:n uusi versio mahdollistaa. Varhaisen käyttöoikeuden aikana tekemissämme testeissä havaitsimme, ettei se lisää uutta sovelluskehyslogiikan kerrosta, vaan tekee suorituskerroksesta modulaarisemman ja yhdisteltävämmän, jolloin muu järjestelmä voi pysyä kevyenä.

Muutos

Arviointikehysten suunnittelussa on noussut tavaksi pelkistää arviointikehys toimivaan vähimmäismuotoonsa. Yleisellä tasolla arviointikehys on mallia ympäröivä ohjelmisto: kerros, joka hallitsee kontekstia, työkaluja, ohjauslogiikkaa ja palautesilmukoita, jotta malli voi työskennellä luotettavasti.

Viime vuosina monet agenttien suorituskyvyn parannukset ovat syntyneet vahvistamalla tätä kerrosta. Paremmat työkalut, muisti ja tiedonhaku sekä selkeämpi tehtävien pilkkominen ja tiukempi orkestrointi tekivät järjestelmistä usein luotettavampia ja kyvykkäämpiä. Tässä ajattelumallissa kehitys tarkoitti pitkälti sitä, että mallia ympäröivään ohjelmistoon sisällytettiin enemmän tehtävälogiikkaa.

Tämän toimintamallin merkitys on nyt vähenemässä ainakin tietyissä avoimissa tehtävissä. Yhä useammat projektit ja tutkimukset viittaavat siihen, ettei suorituskyky aina parane arviointikehyksen muuttuessa ohjailevammaksi. Avustetussa ohjelmoinnissa, pitkäkestoisissa tehtävissä, selaimen käytössä ja pitkän kontekstin tehtävissä toistuu sama ilmiö: kun malli on riittävän älykäs, ympäröivään ohjelmistoon pakotettu liiallinen tehtävärakenne voi muuttua edusta rajoitteeksi.

Arviointikehyksen rooli on siis muuttumassa. Sen sijaan, että arviointikehys yrittäisi ennakoida tehtävää jäykällä orkestroinnilla, se tarjoaa yhä useammin selkeän suoritusympäristön: hiekkalaatikon, jossa malli voi tarkastella tilaa, suorittaa koodia, toipua virheistä ja mukauttaa toimintatapaansa järjestelmän rajapintojen ja suojausten asettamissa rajoissa. Muutos vastaa pitkälti sitä, mitä Andrej Karpathy kuvasi esityksessä Software Engineer 3.0: osa aiemmin ohjelmistoon sisältyneestä logiikasta siirtyy ylemmäs ”kehotteeseen”.

Tästä ei pidä päätellä, että agenttijärjestelmistä pitäisi poistaa kaikki rakenteet. Monet tehtävät hyötyvät edelleen täsmällisistä työnkuluista, heuristiikoista ja deterministisistä suojakaiteista, etenkin jos tehtävä on tarkkarajainen, suurivolyyminen tai sillä on selkeä onnistumiskriteeri. Kuten totesimme aiemmassa kirjoituksessamme Agenttijärjestelmien suunnittelun heuristiikat, vahva orkestrointi on yhä tärkeää, kun luotettava logiikkakulku on sekä mahdollinen että toivottava.

Avoimissa tehtävissä painopiste on kuitenkin siirtymässä. Haasteena ei niinkään ole yhä monimutkaisempien orkestrointikerrosten suunnittelu vaan sellaisten suoritusympäristöjen rakentaminen, jotka ovat riittävän yksinkertaisia, havainnoitavia ja modulaarisia, jotta malli voi toimia niissä tehokkaasti.

Monimutkaisuuden siirtäminen arviointikehyksestä suorituskerrokseen

Kun agentti osaa lukea tiedostoja, kirjoittaa koodia, suorittaa komentotulkkikomentoja ja käynnistää pitkäkestoisia tehtäviä, tekninen haaste muuttuu. Vaikeinta ei enää ole pelkkä kehotteiden optimointi tai työkalupyyntöjen reititys. Toiminta todellisessa järjestelmässä tekee agenteista huomattavasti kyvykkäämpiä, mutta samalla myös riskialttiimpia, sillä turvallisuuteen ja tietoturvaan liittyvä hyökkäyspinta kasvaa. Esimerkiksi koodia suorittava agentti voi tehdä vahinkoa, jos sen ympäristöä ei ole eristetty kunnolla (katso AISI:n Sandbox Bench).

Hiekkalaatikkoeristyksestä onkin tulossa agenttisovelluskehysten keskeinen kysymys. Aiemmissa järjestelmissä suoritusta käsiteltiin usein lisäosana: arviointikehykseen liitettynä työkaluna. Tämä lähestymistapa alkaa kuitenkin hajota, kun suorituksesta tulee tilallista, pitkäkestoista tai etäpalvelussa tapahtuvaa. Itse hiekkalaatikon, sen elinkaaren, tilan ja rajapintojen hallinnasta sekä sen kytkemisestä agenttisilmukkaan muodostuu nopeasti oma järjestelmäsuunnittelun ongelmansa. Tämä on yksi syy siihen, että yhä useammat palveluntarjoajat tarjoavat nyt hallittuja ympäristöjä koodin suoritukseen. Näitä ovat esimerkiksi OpenAI Container API ja komentotulkkityökalu, Modal, Cloudflare, Daytona ja E2B.

Tämä rajanveto on tärkeä, koska koodin suoritus edellyttää vahvempaa eristystä ja tiukempaa ajonaikaista hallintaa kuin arviointikehyksen muut osat. Huonosti toteutetut koodia suorittavat agentit voivat käytännössä aiheuttaa kolme liiketoimintakriittistä riskiä: hallitsemattomat laskentaresurssien kulut, sisäisiin järjestelmiin kohdistuvat tuhoisat toimet ja arkaluonteisten tietojen paljastuminen. Asianmukaisella kontituksella, eristyksellä ja ajonaikaisilla suojauksilla nämä riskit voidaan rajata käytännön käyttöönottojen kannalta hyväksyttävälle tasolle.

Asian voi hahmottaa kuvittelemalla, että agentille annetaan koko toimiston avainten sijasta oma suljettu työtila. Se voi tehdä tilassa hyödyllistä työtä, mutta vain selkeästi määritellyissä rajoissa. Voit rajoittaa sen käyttämiä laskentaresursseja, sen käytettävissä olevia järjestelmiä ja tiedostoja sekä sille alun perin annettavia tietoja.

Tämä ei poista riskiä kokonaan, mutta ongelma muuttuu ”infrastruktuurissasi vapaana toimivasta agentista” ”hallitussa ympäristössä toimivaksi agentiksi”. Jos tästä kerroksesta tulee agenttijärjestelmien vakiokomponentti, sille tarvitaan ensiluokkainen tuki itse sovelluskehyksessä. Näin hiekkalaatikosta tulee modulaarinen suorituskerros, jonka siirrettävät perusosat kehittäjät voivat ottaa nopeasti käyttöön, vaihtaa palveluntarjoajien välillä ja skaalata ilman agenttilogiikan jatkuvaa uudistamista.

Miksi agenttisovelluskehysten tukea on parannettava

Kun agentti suorittaa koodia, myös itse hiekkalaatikkoa on orkestroitava. Siirtyminen paikallisesta konseptitodistuksesta etäsuoritukseen, useisiin taustajärjestelmiin tai pitkäkestoisiin istuntoihin kasvattaa operatiivista työmäärää räjähdysmäisesti. Tarvitaan yhdenmukainen tapa luoda ja pysäyttää ympäristöjä, keskeyttää ja jatkaa niitä, tallentaa tilannevedoksia, muodostaa yhteys myöhemmin uudelleen sekä hallita kaikkea tätä eri palveluntarjoajilla.

Mikään tästä ei kuulosta erityisen hohdokkaalta, mutta käytännössä sillä on merkitystä. Juuri tällainen infrastruktuuri käy työlääksi, kun jokainen tiimi rakentaa agenttiputken alusta asti itse – etenkin jos sitä ei ole integroitu agenttisovelluskehykseen…

Tässä kohtaa sovelluskehyksen paremmasta tuesta tulee tärkeää. Saimme uudemman OpenAI Agents SDK:n varhaiseen käyttöön ja rakensimme sillä itse hiekkalaatikossa toimivia agentteja. Silmiinpistävintä oli arkkitehtuurin painopisteen muutos: SDK käsittelee suoritusta ensisijaisena kerroksena eikä sivurooliin jäävänä työkaluna. Käytännössä hiekkalaatikossa toimivan agentin voi käynnistää, hiekkalaatikosta ottaa tilannevedoksen tai suoritusta jatkaa vähemmällä koodilla – joissakin testeissämme koodia tarvittiin noin kuudesosa – ja taustajärjestelmän voi sitten vaihtaa kirjoittamatta ympäröivää agenttilogiikkaa uudelleen.

Tämän selkeämmän vastuunjaon ansiosta arviointikehys voi keskittyä päättelyyn, kontekstiin ja työnkulkuun. Suorituskerros voi puolestaan keskittyä eristykseen, siirrettävyyteen ja ajonaikaiseen tilaan. Tämän abstraktion avulla on helpompi rakentaa kyvykkäämpiä ja joustavammin kehitettäviä ohjelmointiagentteja, jotka voivat siirtyä paikallisen ja etäsuorituksen välillä, tukea pitkäkestoisia tehtäviä ja vaihtaa suorituksen taustajärjestelmää ilman koko järjestelmän uudelleensuunnittelua.

Tärkein huomio

Kun yhä suurempi osa tehtävätason logiikasta siirtyy arviointikehyksestä malliin, osa järjestelmän monimutkaisuudesta siirtyy mukana suorituskerrokseen. Koodin suoritus ja hiekkalaatikkoeristys ovat nyt agenttijärjestelmien arkkitehtuurin ydinkysymyksiä, etenkin ohjelmointipainotteisissa ja avoimissa tehtävissä. Agenttiputken suunnittelun rinnalla on nyt yhtä tärkeää suunnitella ympäristö, jossa agentti voi toimia turvallisesti ja luotettavasti pitkällä aikavälillä.

Siksi hiekkalaatikossa tapahtuvan suorituksen korkean tason abstraktioilla on merkitystä. Uudempi OpenAI Agents SDK etenee tähän suuntaan käsittelemällä suoritusta järjestelmän modulaarisena kerroksena: se on siirrettävissä taustajärjestelmien välillä, säilyttää tilansa pitkäkestoisissa tehtävissä ja on niin helppokäyttöinen, ettei samaa infrastruktuuria tarvitse rakentaa uudelleen jokaista uutta kokoonpanoa varten.

Laajempi opetus on, että seuraavan sukupolven agenttisovelluskehyksiä ei todennäköisesti määritä niinkään niiden lisäämän orkestrointilogiikan määrä vaan se, kuinka hyvin ne jäsentävät agenttien yhä enemmän tarvitsemat suoritusympäristöt.

Kirjoittaja

Romain Bourboulou