ძირითადი ნავიგაცია

მიერთებადი კოდის შესრულება OpenAI Agents SDK-ში

OpenAI Agents SDK-ზე ადრეული წვდომა აჩვენებს, როგორ ამარტივებს მიერთებადი იზოლირებული გარემო კოდის შესრულებას სხვადასხვა დისტანციურ პროვაიდერთან.

მოკლე მიმოხილვა

  • მსუბუქი სარტყელები და კოდის შემსრულებელი აგენტები უკეთ შეეფერება ღია ტიპის ამოცანებს, რომლებშიც ზედმეტად მკაცრმა ორკესტრირებამ შეიძლება მოდელის შესაძლებლობები შეზღუდოს.

  • შესაბამისად, კოდის შესრულება და იზოლირებულ გარემოში გაშვება აგენტური სისტემების არქიტექტურის საკვანძო საკითხებად იქცა.

  • ჩვენს ტესტებში Agents SDK-მ კოდის შემსრულებელი აგენტების შესაქმნელად საჭირო სირთულე და კოდის მოცულობა ექვსჯერაც კი შეამცირა.

დიდი ხნის განმავლობაში აგენტური სისტემების განვითარება ორკესტრირების გაუმჯობესებას ეფუძნებოდა: უკეთეს მოთხოვნებს, ხელსაწყოების ინტერფეისებს, კონტექსტის მართვასა და შესრულების ნაკადის უფრო მკაცრ კონტროლს. თუმცა, კოდირების აგენტების შესაძლებლობების ზრდასთან ერთად ეს ბალანსი იცვლება.

ბევრ ღია სამუშაო პროცესში შემაფერხებელი ფაქტორი უკვე არა თავად აგენტის ციკლი, არამედ შესრულების შრეა — იზოლირებული გარემო, სადაც მოდელი წერს კოდს, უშვებს ბრძანებებს, ამოწმებს შედეგებს და იმეორებს პროცესს. რადგან ამოცანის დონეზე მსჯელობა სულ უფრო მეტად გადადის ამ გარემოში, გარე ორკესტრირება უნდა გამარტივდეს, რათა მოდელმა საკუთარი შესაძლებლობები სრულად გამოავლინოს.

სწორედ ამ ცვლილებას უწყობს ხელს Agents SDK-ის ახალი ვერსია. ადრეული წვდომისას ჩატარებულმა ტესტებმა გვაჩვენა, რომ ფრეიმვორკის ლოგიკის კიდევ ერთი შრის დამატების ნაცვლად, ის შესრულების შრეს უფრო მოდულურსა და კომბინირებადს ხდის, რის შედეგადაც სისტემის დანარჩენი ნაწილი მსუბუქი რჩება.

ცვლილება

სარტყელის ინჟინერიაში პოპულარული გახდა სარტყელის მინიმალურ ეფექტიან ფორმამდე დაყვანა. ზოგადად, სარტყელი მოდელის გარშემო არსებული პროგრამული უზრუნველყოფაა — შრე, რომელიც მართავს კონტექსტს, ხელსაწყოებს, შესრულების ნაკადსა და უკუკავშირის ციკლებს, რათა მოდელმა საიმედოდ იმუშაოს.

ბოლო რამდენიმე წლის განმავლობაში აგენტების ეფექტიანობის ზრდა ხშირად ამ შრის გაძლიერებამ განაპირობა. უკეთესი ხელსაწყოები, მეხსიერება და ინფორმაციის მოძიება, უფრო მკაფიო დეკომპოზიცია და მკაცრი ორკესტრირება სისტემებს ხშირად უფრო საიმედოსა და შესაძლებლობებით მდიდარს ხდიდა. ამ პარადიგმაში პროგრესი ძირითადად ნიშნავდა ამოცანის ლოგიკის უფრო დიდი ნაწილის მოდელის გარშემო არსებულ პროგრამულ უზრუნველყოფაში ჩაშენებას.

ახლა ეს მიდგომა, სულ მცირე, ღია ტიპის ამოცანების გარკვეული კლასისთვის, მნიშვნელობას კარგავს. სულ უფრო მეტი პროექტი და კვლევა მიუთითებს, რომ სარტყელის მეტად დირექტიულად ქცევა ყოველთვის არ აუმჯობესებს შედეგებს. დახმარებით კოდირებაში, ხანგრძლივ ამოცანებში, ბრაუზერის გამოყენებასა და დიდი კონტექსტის ამოცანებში ერთი და იგივე კანონზომიერება მეორდება: როცა მოდელი საკმარისად ჭკვიანია, გარე პროგრამულ უზრუნველყოფაში ამოცანის ზედმეტად მკაცრი სტრუქტურის ჩაშენება უპირატესობის ნაცვლად შეზღუდვად შეიძლება იქცეს.

ამრიგად, სარტყელის როლი იცვლება. იმის ნაცვლად, რომ მკაცრი ორკესტრირებით ამოცანის წინასწარ განსაზღვრას ცდილობდეს, სარტყელი სულ უფრო მეტად უზრუნველყოფს შესრულების გამართულ სივრცეს — იზოლირებულ გარემოს, სადაც მოდელს შეუძლია მდგომარეობის შემოწმება, კოდის გაშვება, შეცდომების გამოსწორება და მიდგომის ადაპტირება, თანაც სისტემის ინტერფეისებითა და დამცავი მექანიზმებით დადგენილ საზღვრებში. ეს ჰგავს ცვლილებას, რომელიც ანდრეი კარპატიმ „პროგრამული უზრუნველყოფის ინჟინერი 3.0“-ში აღწერა: ლოგიკის ნაწილი, რომელიც ადრე პროგრამულ უზრუნველყოფაში იყო, უფრო მაღალ დონეზე — „მოთხოვნაში“ გადადის.

ეს არ ნიშნავს, რომ აგენტურმა სისტემებმა ყველგან უნდა გააუქმოს სტრუქტურა. ბევრი ამოცანისთვის მკაფიო სამუშაო პროცესები, ევრისტიკები და დეტერმინისტული დამცავი შეზღუდვები კვლავ სასარგებლოა, განსაკუთრებით მაშინ, როცა ამოცანა ვიწროა, დიდი მოცულობით სრულდება ან წარმატების მკაფიო კრიტერიუმი აქვს. როგორც ჩვენს წინა სტატიაში — „აგენტური სისტემების დიზაინის ევრისტიკები“ — აღვნიშნეთ, ძლიერი ორკესტრირება კვლავ მნიშვნელოვანია, როცა საიმედო ლოგიკური ნაკადი შესაძლებელიცაა და სასურველიც.

ღია ტიპის ამოცანებისთვის აქცენტი იცვლება. მთავარი გამოწვევა უკვე არა სულ უფრო რთული ორკესტრირების შრეების შექმნა, არამედ ისეთი მარტივი, დაკვირვებადი და მოდულური შესრულების გარემოების აგებაა, სადაც მოდელი ეფექტიანად იმუშავებს.

სირთულის სარტყელიდან შესრულების შრეში გადატანა

როცა აგენტს ფაილების წაკითხვა, კოდის დაწერა, გარსის ბრძანებების გაშვება და ხანგრძლივი ამოცანების წამოწყება შეუძლია, საინჟინრო გამოწვევაც იცვლება. სირთულე უკვე მხოლოდ მოთხოვნის ოპტიმიზაცია ან ხელსაწყოების მარშრუტიზაცია აღარ არის. რეალურ სისტემაში მუშაობა ამ აგენტებს მნიშვნელოვნად აძლიერებს, თუმცა უფრო მგრძნობიარესაც ხდის, რადგან უსაფრთხოებასთან დაკავშირებულ რისკებს აფართოებს. მაგალითად, კოდის შემსრულებელ აგენტს საზიანო მოქმედებების ჩადენა შეუძლია, თუ მისი გარემო სათანადოდ იზოლირებული არ არის (იხილეთ AISI-ის Sandbox Bench).

ამიტომ აგენტურ ფრეიმვორკებში იზოლირებული გარემოს უზრუნველყოფა კრიტიკულად მნიშვნელოვანი ხდება. ადრეულ სისტემებში შესრულება ხშირად დამატებით კომპონენტად მიიჩნეოდა — სარტყელზე მიმაგრებულ ხელსაწყოდ. თუმცა, როგორც კი შესრულება მდგომარეობის მქონე, ხანგრძლივი ან დისტანციური ხდება, ეს მიდგომა ვეღარ მუშაობს. თავად იზოლირებული გარემოს, მისი სასიცოცხლო ციკლის, მდგომარეობისა და ინტერფეისების მართვა და აგენტის ციკლთან დაკავშირება სწრაფად იქცევა სისტემური დიზაინის დამოუკიდებელ პრობლემად. ეს ერთ-ერთი მიზეზია, რის გამოც სულ უფრო მეტი პროვაიდერი გვთავაზობს კოდის შესრულების მართულ გარემოს, მათ შორის OpenAI-ის Container API-სა და shell ხელსაწყოს, ასევე Modal-ს, Cloudflare-ს, Daytona-ს, E2B-ს და სხვებს.

ეს გამიჯვნა მნიშვნელოვანია, რადგან კოდის შესრულებას სარტყელის დანარჩენ ნაწილთან შედარებით უფრო ძლიერი იზოლაცია და შესრულების გარემოს უფრო მკაცრი კონტროლი სჭირდება. პრაქტიკაში, კოდის შემსრულებელმა არასათანადოდ განხორციელებულმა აგენტებმა შეიძლება ბიზნესისთვის კრიტიკული სამი რისკი წარმოშვას: გამოთვლითი რესურსების უკონტროლო ხარჯვა, შიდა სისტემებზე დამაზიანებელი მოქმედებები და კონფიდენციალური ინფორმაციის გამჟღავნება. სათანადო კონტეინერიზაციით, იზოლაციითა და შესრულების დროის დამცავი მექანიზმებით ამ რისკების რეალურ დანერგვაში მისაღებ დონემდე შეზღუდვა შეიძლება.

წარმოიდგინეთ, რომ აგენტს მთელი ოფისის გასაღებების ნაცვლად საკუთარი დაცული სამუშაო სივრცე ეძლევა. ამ სივრცეში მას კვლავ შეუძლია სასარგებლო სამუშაოს შესრულება, თუმცა მხოლოდ მკაფიოდ განსაზღვრულ საზღვრებში. შეგიძლიათ შეზღუდოთ მის მიერ გამოყენებული გამოთვლითი რესურსები, სისტემები და ფაილები, რომლებთანაც წვდომა აქვს, და თავიდანვე აკონტროლოთ მისთვის ხელმისაწვდომი ინფორმაცია.

ეს რისკს სრულად არ გამორიცხავს, მაგრამ პრობლემა „თქვენს ინფრასტრუქტურაში თავისუფლად მოქმედი აგენტიდან“ „კონტროლირებად გარემოში მოქმედ აგენტად“ გარდაიქმნება. თუ ეს შრე აგენტური სისტემების სტანდარტული ნაწილი გახდება, მას თავად ფრეიმვორკში სრულფასოვანი მხარდაჭერა სჭირდება. ამგვარად, იზოლირებული გარემო იქცევა შესრულების მოდულურ შრედ პორტატიული პრიმიტივებით, რომელთა სწრაფად დანერგვა, პროვაიდერებს შორის ჩანაცვლება და მასშტაბირება დეველოპერებს აგენტის ლოგიკის მუდმივი გადაკეთების გარეშე შეუძლიათ.

რატომ სჭირდება ამას აგენტური ფრეიმვორკების უკეთესი მხარდაჭერა

როგორც კი აგენტი კოდს ასრულებს, თავად იზოლირებულ გარემოსაც სჭირდება ორკესტრირება. ლოკალური კონცეფციის მტკიცებულებიდან დისტანციურ შესრულებაზე, რამდენიმე ბეკენდზე ან ხანგრძლივ სესიებზე გადასვლა ოპერაციულ დატვირთვას მკვეთრად ზრდის. საჭიროა გარემოების შექმნის, შეჩერების, დაპაუზებისა და გაგრძელების, მდგომარეობის სურათის შენახვის, მოგვიანებით ხელახლა დაკავშირებისა და ამ ყველაფრის სხვადასხვა პროვაიდერთან მართვის ერთიანი გზა.

კონცეფციის დონეზე ეს ყველაფერი შთამბეჭდავი არ არის, თუმცა პრაქტიკაში მნიშვნელოვანია. ეს სწორედ ის ინფრასტრუქტურაა, რომლის ნულიდან აწყობაც თითოეული გუნდისთვის მტკივნეული ხდება, განსაკუთრებით მაშინ, როცა ის აგენტურ ფრეიმვორკში ინტეგრირებული არ არის…

აქ ხდება ფრეიმვორკის უკეთესი მხარდაჭერა მნიშვნელოვანი. ჩვენ ადრეული წვდომა გვქონდა OpenAI Agents SDK-ის ახალ ვერსიაზე და მისი გამოყენებით თავად შევქმენით იზოლირებულ გარემოში მომუშავე აგენტები. ყველაზე მეტად არქიტექტურული აქცენტის ცვლილება გამოირჩეოდა: SDK შესრულებას პერიფერიულ ხელსაწყოდ კი არა, სრულფასოვან შრედ განიხილავს. პრაქტიკაში ეს ნიშნავს, რომ იზოლირებულ გარემოში მომუშავე აგენტის გაშვება, გარემოს მდგომარეობის სურათის შენახვა ან შესრულების გაგრძელება ნაკლები კოდით შეიძლება — ზოგიერთ ჩვენს ტესტში დაახლოებით ექვსჯერ ნაკლებით — შემდეგ კი ბეკენდის შეცვლაც აგენტის გარე ლოგიკის გადაწერის გარეშეა შესაძლებელი.

პასუხისმგებლობების ასეთი მკაფიო გამიჯვნა სარტყელს საშუალებას აძლევს, ყურადღება მსჯელობაზე, კონტექსტსა და სამუშაო პროცესზე შეინარჩუნოს. შესრულების შრეს კი შეუძლია იზოლაციაზე, პორტატიულობასა და შესრულების გარემოს მდგომარეობაზე კონცენტრირდეს. ეს აბსტრაქცია ამარტივებს უფრო შესაძლებლობებით მდიდარი და ადვილად განვითარებადი კოდირების აგენტების შექმნას, რომლებსაც შეუძლიათ ლოკალურ და დისტანციურ შესრულებას შორის გადასვლა, ხანგრძლივი ამოცანების მხარდაჭერა და შესრულების ბეკენდების შეცვლა მთელი სისტემის ხელახლა დაპროექტების გარეშე.

მთავარი დასკვნა

რადგან ამოცანის დონეზე ლოგიკა სულ უფრო მეტად გადადის სარტყელიდან მოდელში, სისტემის სირთულის ნაწილიც მას მიჰყვება და შესრულების შრეში ინაცვლებს. კოდის შესრულება და იზოლირებული გარემოს უზრუნველყოფა უკვე აგენტური სისტემების არქიტექტურის საკვანძო საკითხებია, განსაკუთრებით კოდირებაზე ორიენტირებული და ღია ტიპის ამოცანებისთვის. ახლა აგენტური პროცესის დაპროექტებასთან ერთად თანაბრად მნიშვნელოვანია ისეთი გარემოს შექმნა, სადაც აგენტს უსაფრთხოდ, საიმედოდ და ხანგრძლივად მოქმედება შეუძლია.

სწორედ ამიტომ არის მნიშვნელოვანი იზოლირებულ გარემოში შესრულების მაღალი დონის აბსტრაქციები. ახალი OpenAI Agents SDK ამ მიმართულებით ვითარდება და შესრულებას სისტემის მოდულურ შრედ განიხილავს: ის პორტატიულია სხვადასხვა ბეკენდზე, ინარჩუნებს მდგომარეობას ხანგრძლივი ამოცანებისას და იმდენად მარტივი გამოსაყენებელია, რომ ყოველი ახალი კონფიგურაციისთვის ერთი და იმავე ინფრასტრუქტურის თავიდან აგება საჭირო არ ხდება.

უფრო ფართო დასკვნა ასეთია: აგენტური ფრეიმვორკების მომავალ თაობას, სავარაუდოდ, ნაკლებად განსაზღვრავს დამატებული ორკესტრირების ლოგიკის მოცულობა და მეტად — ის, თუ რამდენად კარგად აწყობენ ისინი შესრულების გარემოს, რომელზეც აგენტები სულ უფრო მეტად არიან დამოკიდებული.

ავტორი

Romain Bourboulou