Основна навигация

Модулно изпълнение на код в OpenAI Agents SDK

Ранният достъп до OpenAI Agents SDK показва как сменяемите изолирани среди опростяват изпълнението на код при различни отдалечени доставчици.

Резюме

  • По-леките рамки и агентите, които изпълняват код, са по-подходящи за задачи с отворен край, при които прекалено строгата оркестрация може да ограничи ефективността на модела.

  • Затова изпълнението на код и изолираните среди вече са ключови архитектурни аспекти на агентните системи.

  • Agents SDK намалява сложността и количеството код, необходими за създаване на агенти, които изпълняват код — до 6 пъти в нашите тестове.

Дълго време напредъкът при агентните системи идваше от подобряване на оркестрацията: по-добри подкани, интерфейси за инструменти, управление на контекста и по-строг поток на управление. Но с нарастването на възможностите на агентите за програмиране този баланс започва да се променя.

При много работни процеси с отворен край тясното място вече не е самият цикъл на агента, а слоят за изпълнение: изолираната среда, в която моделът пише код, изпълнява команди, проверява резултатите и прави подобрения. Тъй като все повече от структуриранoто анализиране на задачите се извършва в тази среда, обкръжаващата оркестрация трябва да стане по-проста, за да може моделът да разгърне пълните си възможности.

Именно тази промяна прави възможна новата версия на Agents SDK. По време на тестовете ни в рамките на ранния достъп установихме, че вместо да добавя още един слой логика на платформата, тя прави слоя за изпълнение по-модулен и съставен от взаимозаменяеми компоненти, така че останалата част от системата да остане лека.

Промяната

При проектирането на рамки стана модерно рамката да се свежда до минималната си ефективна форма. Най-общо казано, рамката е софтуерът около модела: слоят, който управлява контекста, инструментите, потока на управление и циклите за обратна връзка, за да може моделът да работи надеждно.

През последните няколко години много от подобренията в ефективността на агентите идваха от усъвършенстването на този слой. По-добрите инструменти, памет и извличане на информация, по-ясното разбиване на задачите и по-строгата оркестрация често правеха системите по-надеждни и способни. В тази парадигма напредъкът до голяма степен означаваше в софтуера около модела да се вгражда повече логика за задачите.

Този подход вече губи позиции, поне при определен клас задачи с отворен край. Все повече проекти и научни публикации показват, че ефективността невинаги се подобрява, когато рамката налага повече предписания. При асистираното програмиране, дългосрочните задачи, работата с браузър, и задачите с дълъг контекст многократно се наблюдава един и същ модел: когато моделът е достатъчно интелигентен, налагането на прекалено много структура на задачата чрез обкръжаващия софтуер може да се превърне в ограничение вместо в предимство.

Затова ролята на рамката се променя. Вместо да се опитва предварително да предвиди задачата чрез строга оркестрация, рамката все по-често осигурява изчистена среда за изпълнение: изолирано пространство, в което моделът може да проверява състоянието, да изпълнява код, да се възстановява след грешки и да адаптира подхода си, като остава в границите на системните интерфейси и механизмите за защита. Това наподобява промяната, описана от Андрей Карпати в „Софтуерен инженер 3.0“: част от логиката, която преди беше в софтуера, се премества нагоре в „подканата“.

Изводът не е, че агентните системи трябва навсякъде да премахнат структурата. Много задачи все още печелят от ясно определени работни процеси, евристики и детерминистични защитни механизми, особено когато са тясно специализирани, изпълняват се в голям обем или имат ясен критерий за успех. Както посочихме в предишната си публикация за евристиките при проектирането на агентни системи, добрата оркестрация остава важна, когато надеждният логически поток е едновременно възможен и желан.

При задачите с отворен край фокусът се измества. Предизвикателството вече не е толкова да се проектират все по-сложни слоеве за оркестрация, колкото да се изграждат среди за изпълнение, които са достатъчно прости, наблюдаеми и модулни, за да може моделът да работи ефективно в тях.

Преместване на сложността от рамката към слоя за изпълнение

Когато един агент може да чете файлове, да пише код, да изпълнява команди в обвивката и да стартира дългосрочни задачи, инженерното предизвикателство се променя. Трудната част вече не се свежда само до оптимизиране на подканата или насочване към подходящия инструмент. Работата на агента в реална система прави тези агенти значително по-мощни, но и по-рискови, защото увеличава повърхността за уязвимости и заплахи за сигурността. Например агент, който може да изпълнява код, би могъл да извърши вредни действия, ако средата му не е добре изолирана (вижте Sandbox Bench на AISI).

Затова изолирането на средата се превръща в ключов аспект на платформите за агенти. В по-ранните системи изпълнението често се разглеждаше като допълнение — инструмент, прикрепен към рамката. Но когато изпълнението започне да пази състояние, да продължава дълго или да се извършва отдалечено, този подход вече не работи добре. Управлението на самата изолирана среда, нейния жизнен цикъл, състояние и интерфейси, както и свързването ѝ с цикъла на агента, бързо се превръща в самостоятелен проблем на системното проектиране. Това е една от причините все повече доставчици да предлагат управлявани среди за изпълнение на код, включително Container API и инструмента shell на OpenAI, Modal, Cloudflare, Daytona, E2B и други.

Тази граница е важна, защото изпълнението на код изисква по-силна изолация и по-строг контрол по време на работа от останалата част на рамката. На практика лошо реализираните агенти, изпълняващи код, могат да породят три критични за бизнеса риска: неконтролирани разходи за изчислителни ресурси, разрушителни действия във вътрешни системи и разкриване на чувствителна информация. С подходяща контейнеризация, изолация и защити по време на работа тези рискове могат да бъдат ограничени до ниво, приемливо за внедряване в реални условия.

Представете си, че давате на агента собствено защитено работно пространство, вместо ключовете за целия офис. Той пак може да върши полезна работа в това пространство, но само в ясно определени граници. Можете да ограничите използваните изчислителни ресурси и системите и файловете, до които има достъп, както и да контролирате каква информация изобщо получава.

Това не премахва риска напълно, но променя проблема от „агент, оставен без надзор във вашата инфраструктура“ на „агент, работещ в контролирана среда“. Ако този слой ще стане стандартна част от агентните системи, той трябва да има пълноценна поддръжка в самата платформа. Така изолираната среда се превръща в модулен слой за изпълнение с преносими базови компоненти, които разработчиците могат бързо да внедряват, да прехвърлят между доставчици и да мащабират, без постоянно да преработват логиката на агента.

Защо платформите за агенти трябва да предлагат по-добра поддръжка

Когато агентът изпълнява код, самата изолирана среда също се нуждае от оркестрация. Преминаването от локален прототип към отдалечено изпълнение, множество системи или дълготрайни сесии увеличава експоненциално оперативното натоварване. Необходим е последователен начин да създавате среди, да ги спирате, поставяте на пауза и възобновявате, да запазвате моментни снимки на състоянието, да се свързвате отново по-късно и да управлявате всичко това при различни доставчици.

Нищо от това не звучи особено впечатляващо като концепция, но на практика е важно. Точно този тип инфраструктура се превръща в сериозен проблем, когато всеки екип изгражда агентния процес от нулата, особено ако той не е интегриран в платформата за агенти…

Тук по-добрата поддръжка от платформата става важна. Получихме ранен достъп до новата версия на OpenAI Agents SDK и я използвахме, за да създадем собствени агенти в изолирани среди. Най-силно впечатление направи промяната в архитектурния акцент: SDK разглежда изпълнението като пълноценен слой, а не като страничен инструмент. На практика това означава, че можете с по-малко код да стартирате агент в изолирана среда, да създадете моментна снимка на средата или да възобновите изпълнението — около 6 пъти по-малко в някои от тестовете ни — а след това да смените системата за изпълнение, без да пренаписвате обкръжаващата логика на агента.

Това по-ясно разделение на отговорностите позволява на рамката да остане фокусирана върху структурираното анализиране, контекста и работния процес. Слоят за изпълнение може да се съсредоточи върху изолацията, преносимостта и състоянието по време на работа. Тази абстракция улеснява създаването на агенти за програмиране, които са по-способни и по-лесни за развитие, могат да преминават между локално и отдалечено изпълнение, поддържат по-дълготрайни задачи и сменят системата за изпълнение, без да се налага цялата система да бъде проектирана наново.

Основен извод

С преместването на повече логика за задачите от рамката към модела част от сложността на системата я следва — надолу към слоя за изпълнение. Изпълнението на код и изолираните среди вече са ключови архитектурни аспекти на агентните системи, особено при задачи с много програмиране и с отворен край. Проектирането на средата, в която агентът може да действа безопасно, надеждно и продължително, вече е също толкова важно, колкото и проектирането на агентния процес.

Затова абстракциите от по-високо ниво за изпълнение в изолирана среда са важни. Новата версия на OpenAI Agents SDK се движи в тази посока, като разглежда изпълнението като модулен слой на системата: преносим между различни системи за изпълнение, запазващ състоянието при дълготрайни задачи и достатъчно лесен за използване, без една и съща инфраструктура да се изгражда наново за всяка конфигурация.

По-общият извод е, че следващото поколение платформи за агенти вероятно ще се определя не толкова от количеството добавена логика за оркестрация, колкото от това доколко добре структурират средите за изпълнение, от които агентите зависят все повече.

Автор

Romain Bourboulou