Հիմնական նավիգացիա

Կոդի միացվող կատարում OpenAI Agents SDK-ում

OpenAI Agents SDK-ի վաղ հասանելիությունը ցույց է տալիս, թե ինչպես են միացվող մեկուսացված միջավայրերը պարզեցնում կոդի կատարումը տարբեր հեռավար մատակարարների հարթակներում։

Համառոտ ամփոփում

  • Ավելի թեթև հարնեսներն ու կոդ կատարող ագենտներն ավելի հարմար են բաց բնույթի առաջադրանքների համար, որոնց դեպքում չափազանց կոշտ համակարգումը կարող է սահմանափակել մոդելի արդյունավետությունը։

  • Այսպիսով, կոդի կատարումն ու մեկուսացված միջավայրերի կիրառումն այժմ ագենտային համակարգերի ճարտարապետության առանցքային հարցեր են։

  • Մեր փորձարկումներում Agents SDK-ն մինչև 6 անգամ կրճատել է կոդ կատարող ագենտներ ստեղծելու համար անհրաժեշտ բարդությունն ու կոդի ծավալը։

Երկար ժամանակ ագենտային համակարգերի առաջընթացը պայմանավորված էր համակարգման բարելավմամբ՝ հարցումների ավելի լավ ձևակերպմամբ, գործիքների միջերեսներով, համատեքստի կառավարմամբ և կառավարման ավելի խիստ հոսքով։ Սակայն ծրագրավորող ագենտների կարողությունների աճին զուգընթաց այդ հավասարակշռությունը սկսում է փոխվել։

Բաց բնույթի բազմաթիվ աշխատանքային հոսքերում նեղ օղակն այլևս ագենտի ցիկլը չէ, այլ կատարման շերտը՝ մեկուսացված միջավայրը, որտեղ մոդելը կոդ է գրում, հրամաններ կատարում, ուսումնասիրում արդյունքներն ու կրկնում գործընթացը։ Քանի որ առաջադրանքի մակարդակի դատողության ավելի մեծ մասն է տեղափոխվում այդ միջավայր, հարակից համակարգումը պետք է պարզեցվի, որպեսզի մոդելը կարողանա լիովին դրսևորել իր կարողությունները։

Հենց այս փոփոխությունն է հնարավոր դարձնում Agents SDK-ի նոր տարբերակը։ Վաղ հասանելիության ընթացքում մեր փորձարկումները ցույց տվեցին, որ համակարգային տրամաբանության ևս մեկ շերտ ավելացնելու փոխարեն այն կատարման շերտը դարձնում է ավելի մոդուլային և համադրելի՝ թույլ տալով, որ համակարգի մնացած մասը թեթև մնա։

Փոփոխությունը

Հարնեսների նախագծման ոլորտում տարածված միտում է հարնեսը հասցնել իր նվազագույն արդյունավետ ձևին։ Ընդհանուր առմամբ, հարնեսը մոդելը շրջապատող ծրագրային ապահովումն է՝ այն շերտը, որը կառավարում է համատեքստը, գործիքները, կառավարման հոսքն ու հետադարձ կապի ցիկլերը, որպեսզի մոդելը կարողանա հուսալիորեն աշխատել։

Վերջին մի քանի տարում ագենտների արդյունավետության բազմաթիվ բարելավումներ ապահովվել են այդ շերտն ուժեղացնելու շնորհիվ։ Ավելի լավ գործիքները, հիշողությունն ու որոնումը, առավել հստակ տրոհումը և ավելի խիստ համակարգումը հաճախ բարձրացնում էին համակարգերի հուսալիությունն ու կարողությունները։ Այս մոտեցման շրջանակում առաջընթացը հիմնականում նշանակում էր առաջադրանքի տրամաբանության ավելի մեծ մասը ներառել մոդելը շրջապատող ծրագրային ապահովման մեջ։

Այժմ այս օրինաչափությունը թուլանում է, առնվազն բաց բնույթի առաջադրանքների մի դասի դեպքում։ Աճող թվով նախագծեր ու գիտական աշխատանքներ վկայում են, որ հարնեսի ավելի հրահանգավոր դառնալը միշտ չէ, որ բարելավում է արդյունավետությունը։ Աջակցվող ծրագրավորման, երկարատև առաջադրանքների, դիտարկչի օգտագործման և երկար համատեքստով առաջադրանքների դեպքում նույն օրինաչափությունն է կրկնվում․ երբ մոդելը բավականաչափ խելացի է, առաջադրանքի չափազանց մեծ կառուցվածք պարտադրող հարակից ծրագրային ապահովումը կարող է առավելությունից վերածվել սահմանափակման։

Այսպիսով, հարնեսի դերը փոխվում է։ Առաջադրանքը կոշտ համակարգմամբ նախապես կանխատեսելու փոխարեն հարնեսն ավելի ու ավելի հաճախ ապահովում է կատարման հստակ միջավայր՝ մեկուսացված տարածք, որտեղ մոդելը կարող է ուսումնասիրել վիճակը, կոդ կատարել, վերականգնվել սխալներից և հարմարեցնել իր մոտեցումը՝ միաժամանակ մնալով համակարգի միջերեսների ու պաշտպանական մեխանիզմների սահմաններում։ Սա մոտ է այն փոփոխությանը, որը Անդրեյ Կարպատին նկարագրել է Software Engineer 3.0-ում․ նախկինում ծրագրային ապահովման մեջ գտնվող տրամաբանության մի մասը տեղափոխվում է ավելի բարձր մակարդակ՝ «հարցման» մեջ։

Սակայն սա չի նշանակում, որ ագենտային համակարգերը պետք է ամենուր վերացնեն կառուցվածքը։ Բազմաթիվ առաջադրանքներ դեռ շահում են հստակ աշխատանքային հոսքերից, էվրիստիկաներից և որոշակի պաշտպանական սահմանափակումներից, հատկապես երբ առաջադրանքը նեղ է, մեծածավալ կամ ունի հաջողության հստակ չափանիշ։ Ինչպես հիմնավորել ենք «Ագենտային համակարգերի նախագծման էվրիստիկաները» մեր նախորդ հրապարակման մեջ, ուժեղ համակարգումը շարունակում է կարևոր լինել, երբ հուսալի տրամաբանական հոսքը և՛ հնարավոր է, և՛ ցանկալի։

Բաց բնույթի առաջադրանքների դեպքում ուշադրության կենտրոնը փոխվում է։ Խնդիրն այլևս ոչ այնքան ավելի ու ավելի բարդ համակարգման շերտեր նախագծելն է, որքան կատարման այնպիսի միջավայրեր ստեղծելը, որոնք բավականաչափ պարզ, դիտարկելի ու մոդուլային են, որպեսզի մոդելը դրանցում արդյունավետ աշխատի։

Բարդության տեղափոխումը հարնեսից կատարման շերտ

Երբ ագենտը կարողանում է կարդալ ֆայլեր, գրել կոդ, կատարել shell հրամաններ և գործարկել երկարատև առաջադրանքներ, ինժեներական խնդիրը փոխվում է։ Դժվարությունն այլևս միայն հարցման օպտիմալացումը կամ գործիքների ուղղորդումը չէ։ Իրական համակարգում աշխատելու շնորհիվ ագենտները զգալիորեն ավելի հզոր են դառնում, բայց նաև ավելի զգայուն, քանի որ ընդլայնում են անվտանգության և պաշտպանվածության ռիսկերի շրջանակը։ Օրինակ՝ կոդ կատարող ագենտը կարող է վնասակար գործողություններ կատարել, եթե իր միջավայրը պատշաճ մեկուսացված չէ (տե՛ս AISI-ի Sandbox Bench-ը)։

Ուստի մեկուսացված միջավայրերի կիրառումը դառնում է ագենտային ֆրեյմվորքների կարևորագույն հարցերից մեկը։ Նախկին համակարգերում կատարումը հաճախ դիտվում էր որպես հավելում՝ հարնեսին կցված գործիք։ Սակայն երբ կատարումը դառնում է վիճակավոր, երկարատև կամ հեռավար, այդ մոտեցումն սկսում է չաշխատել։ Մեկուսացված միջավայրի, դրա կենսացիկլի, վիճակի, միջերեսների և ագենտի ցիկլի հետ կապի կառավարումն արագ վերածվում է համակարգային նախագծման ինքնուրույն խնդրի։ Սա պատճառներից մեկն է, թե ինչու են ավելի ու ավելի շատ մատակարարներ առաջարկում կոդի կատարման կառավարվող միջավայրեր, այդ թվում՝ OpenAI-ի Container API-ն ու shell գործիքը, ինչպես նաև Modal-ը, Cloudflare-ը, Daytona-ն, E2B-ն և այլն։

Այս սահմանազատումը կարևոր է, քանի որ կոդի կատարումը պահանջում է ավելի ուժեղ մեկուսացում և կատարման ավելի խիստ վերահսկողություն, քան հարնեսի մնացած մասը։ Գործնականում վատ իրագործված կոդ կատարող ագենտները կարող են առաջացնել բիզնեսի համար կարևոր երեք ռիսկ՝ հաշվարկային ռեսուրսների անվերահսկելի ծախս, ներքին համակարգերում կործանարար գործողություններ և զգայուն տեղեկությունների բացահայտում։ Պատշաճ կոնտեյներացման, մեկուսացման և կատարման պաշտպանական մեխանիզմների շնորհիվ այս ռիսկերը կարելի է պահել իրական կիրառումների համար ընդունելի մակարդակում։

Սա կարելի է պատկերացնել այսպես․ ագենտին ամբողջ գրասենյակի բանալիները տալու փոխարեն տրամադրում եք սեփական փակ աշխատատարածքը։ Այդ տարածքում այն դեռ կարող է օգտակար աշխատանք կատարել, բայց միայն հստակ սահմանված շրջանակում։ Կարող եք սահմանափակել դրա օգտագործած հաշվարկային ռեսուրսները, որոշել, թե որ համակարգերին ու ֆայլերին այն կարող է հասանելիություն ունենալ, և վերահսկել, թե սկզբից ինչ տեղեկություն է նրան տրամադրվում։

Սա ամբողջությամբ չի վերացնում ռիսկը, սակայն խնդիրը «ձեր ենթակառուցվածքում ազատ գործող ագենտից» վերածում է «վերահսկվող միջավայրում գործող ագենտի»։ Եթե այս շերտը պետք է դառնա ագենտային համակարգերի ստանդարտ մաս, այն հենց ֆրեյմվորքում պետք է ունենա լիարժեք աջակցություն։ Այսպիսով, մեկուսացված միջավայրը դառնում է շարժական պարզունակներով մոդուլային կատարման շերտ, որը մշակողները կարող են արագ ներդնել, փոխարինել տարբեր մատակարարների միջև և մասշտաբավորել՝ առանց ագենտի տրամաբանությունն անընդհատ վերամշակելու։

Ինչու է սա պահանջում ագենտային ֆրեյմվորքների ավելի լավ աջակցություն

Երբ ագենտը կոդ է կատարում, մեկուսացված միջավայրն ինքնին համակարգման կարիք ունի։ Տեղային նախատիպից հեռավար կատարման, բազմաթիվ հետնամասերի կամ երկարատև աշխատաշրջանների անցնելիս գործառնական բեռը կտրուկ աճում է։ Անհրաժեշտ է միջավայրերը ստեղծելու, կանգնեցնելու, դադարեցնելու և շարունակելու, վիճակի ակնթարթային պատճեններ ստեղծելու, հետագայում կրկին միանալու և այս ամենը տարբեր մատակարարների մոտ կառավարելու միասնական եղանակ։

Այս ամենը տեսականորեն այնքան էլ գրավիչ չէ, բայց գործնականում կարևոր է։ Սա հենց այն ենթակառուցվածքն է, որի ստեղծումը դժվար ու հոգնեցուցիչ է դառնում, երբ յուրաքանչյուր թիմ ագենտային շղթան զրոյից է կառուցում, հատկապես երբ այն ագենտային ֆրեյմվորքին ինտեգրված չէ…

Հենց այստեղ է կարևոր դառնում ֆրեյմվորքի ավելի լավ աջակցությունը։ Մենք վաղ հասանելիություն ստացանք OpenAI Agents SDK-ի նոր տարբերակին և դրանով ինքներս ստեղծեցինք մեկուսացված միջավայրերում աշխատող ագենտներ։ Ամենից շատ աչքի էր ընկնում ճարտարապետական շեշտադրման փոփոխությունը․ SDK-ն կատարումը դիտարկում է որպես լիարժեք շերտ, այլ ոչ թե երկրորդական գործիք։ Գործնականում սա նշանակում է, որ ավելի քիչ կոդով կարող եք մեկուսացված միջավայրում ագենտ գործարկել, միջավայրի ակնթարթային պատճեն ստեղծել կամ շարունակել կատարումը (մեր որոշ փորձարկումներում՝ մոտ 6 անգամ պակաս կոդով), ապա փոխել հետնամասը՝ առանց ագենտի հարակից տրամաբանությունը վերաշարադրելու։

Պարտականությունների այս ավելի հստակ տարանջատումը թույլ է տալիս հարնեսը կենտրոնացնել դատողության, համատեքստի և աշխատանքային հոսքի վրա։ Իսկ կատարման շերտը կարող է կենտրոնանալ մեկուսացման, տեղափոխելիության և կատարման վիճակի վրա։ Այս աբստրակցիան հեշտացնում է ծրագրավորող ագենտների ստեղծումը, որոնք և՛ ավելի ունակ են, և՛ ավելի հեշտ զարգացվող, կարող են անցնել տեղային ու հեռավար կատարման միջև, աջակցել երկարատև առաջադրանքների և փոխել կատարման հետնամասերը՝ առանց ամբողջ համակարգը վերանախագծելու։

Հիմնական եզրակացությունը

Քանի որ առաջադրանքի մակարդակի տրամաբանության ավելի մեծ մասը հարնեսից տեղափոխվում է մոդել, համակարգի բարդության մի մասն էլ դրա հետ տեղափոխվում է ներքև՝ կատարման շերտ։ Կոդի կատարումն ու մեկուսացված միջավայրերի կիրառումն այժմ ագենտային համակարգերի ճարտարապետության առանցքային հարցեր են, հատկապես ծրագրավորմամբ հագեցած և բաց բնույթի առաջադրանքների դեպքում։ Այժմ ագենտային շղթայի նախագծումը նույնքան կարևոր է, որքան այն միջավայրի նախագծումը, որտեղ ագենտը կարող է անվտանգ, հուսալի և երկարատև գործել։

Ահա թե ինչու են կարևոր մեկուսացված միջավայրում կատարման բարձր մակարդակի աբստրակցիաները։ Նոր OpenAI Agents SDK-ն շարժվում է այդ ուղղությամբ՝ կատարումը դիտարկելով որպես համակարգի մոդուլային շերտ, որը տեղափոխելի է հետնամասերի միջև, պահպանում է վիճակը երկարատև առաջադրանքների ընթացքում և բավականաչափ պարզ է օգտագործման համար, որպեսզի յուրաքանչյուր նոր կազմաձևման դեպքում նույն ենթակառուցվածքը զրոյից կառուցելու կարիք չլինի։

Ավելի լայն եզրակացությունն այն է, որ ագենտային ֆրեյմվորքների հաջորդ սերունդը, հավանաբար, կորոշվի ոչ այնքան դրանց ավելացրած համակարգման տրամաբանության ծավալով, որքան այն բանով, թե որքան լավ են դրանք կառուցում կատարման այն միջավայրերը, որոնցից ագենտներն ավելի ու ավելի են կախված։

Հեղինակ

Romain Bourboulou