რამდენიმე ექსპერიმენტის შემდეგ, Transformers აგენტების შესაძლებლობებით აგებული აგენტური სისტემების მუშაობამ ჩვენზე დიდი შთაბეჭდილება მოახდინა, ამიტომ გვინდოდა გვენახა, რამდენად კარგი იყო ის რეალურად! ჩვენ გამოვცადეთ ბიბლიოთეკის გამოყენებით შექმნილი კოდის აგენტი GAIA ბენჩმარკზე, რომელიც, სავარაუდოდ, აგენტების ყველაზე რთული და ყოვლისმომცველი საორიენტაციო ტესტია… და შედეგად, საუკეთესო პოზიციები დავიკავეთ! ამ ბლოგპოსტში გამოყენებული transformers.agents ფრეიმვორკი განახლდა და ახლა უკვე დამოუკიდებელი ბიბლიოთეკა smolagents-ია! ამ ორ ბიბლიოთეკას ძალიან მსგავსი API აქვს, ამიტომ მათ შორის გადართვა მარტივია. გაეცანით smolagents-ის შესავალ ბლოგს აქ. რა არის აგენტები? ერთი წინადადებით: აგენტი არის LLM-ზე დაფუძნებული ნებისმიერი სისტემა, რომელსაც შეუძლია გამოიძახოს გარე ინსტრუმენტები ან არ გამოიძახოს, მიმდინარე გამოყენების შემთხვევის საჭიროებიდან გამომდინარე, და განახორციელოს შემდგომი ნაბიჯები LLM-ის გამოსავლის საფუძველზე. ინსტრუმენტები შეიძლება მოიცავდეს ყველაფერს, ვებ ძიების API-დან დაწყებული, Python ინტერპრეტატორით დამთავრებული. ვიზუალური ანალოგიისთვის: ყველა პროგრამა შეიძლება აღიწეროს როგორც გრაფები. გააკეთე A, შემდეგ გააკეთე B. If/else კონსტრუქციები გრაფში განშტოებებს ქმნის, მაგრამ არ ცვლის მის სტრუქტურას. ჩვენ აგენტებს განვსაზღვრავთ, როგორც სისტემებს, სადაც LLM-ის გამოსავალი ცვლის გრაფის სტრუქტურას. აგენტი წყვეტს, გამოიძახოს ინსტრუმენტი A, ინსტრუმენტი B თუ არაფერი, ის წყვეტს, განახორციელოს თუ არა კიდევ ერთი ნაბიჯი: ეს ყველაფერი ცვლის გრაფის სტრუქტურას. LLM შეიძლება ინტეგრირებული იყოს ფიქსირებულ სამუშაო პროცესში, მაგალითად, LLM judge-ში, ისე, რომ ის არ იყოს აგენტური სისტემა, რადგან LLM-ის გამოსავალი არ შეცვლის გრაფის სტრუქტურას. აქ მოცემულია ილუსტრაცია ორი განსხვავებული სისტემისთვის, რომლებიც ახორციელებენ Retrieval Augmented Generation-ს: ერთი კლასიკურია, მისი გრაფი ფიქსირებულია. მაგრამ მეორე აგენტურია, გრაფის ერთი ციკლი შეიძლება განმეორდეს საჭიროებისამებრ. აგენტური სისტემები LLM-ებს სუპერ შესაძლებლობებს ანიჭებენ. მეტი დეტალისთვის, წაიკითხეთ ჩვენი წინა ბლოგპოსტი Transformers Agents 2.0-ის გამოშვების შესახებ. GAIA აგენტებისთვის ყველაზე ყოვლისმომცველი ბენჩმარკია. GAIA-ში დასმული კითხვები ძალიან რთულია და ხაზს უსვამს LLM-ზე დაფუძნებული სისტემების გარკვეულ სირთულეებს. წარმოგიდგენთ რთული შეკითხვის მაგალითს: 2008 წლის ნახატზე „უზბეკური ნაქარგობა“ გამოსახული რომელი ხილი იყო სერვირებული 1949 წლის ოქტომბრის საუზმის მენიუში იმ ოკეანის ლაინერისთვის, რომელიც მოგვიანებით გამოიყენეს ფილმისთვის „ბოლო მოგზაურობა“ მცურავ რეკვიზიტად? ჩამოთვალეთ ნივთები მძიმით გამოყოფილი სიის სახით, განათავსეთ ისინი საათის ისრის მიმართულებით, ნახატში მათი 12 საათის პოზიციიდან დაწყებული. გამოიყენეთ თითოეული ხილის მრავლობითი ფორმა. ხედავთ, რომ ეს შეკითხვა რამდენიმე სირთულეს მოიცავს: მის გადასაჭრელად საჭიროა როგორც მაღალი დონის დაგეგმვის უნარი, ასევე მკაცრი შესრულება, რაც ზუსტად ის ორი სფეროა, სადაც LLM-ები უჭირთ. ამიტომ, ის შესანიშნავი სატესტო ნაკრებია აგენტური სისტემებისთვის! GAIA-ს საჯარო ლიდერბორდზე, GPT-4-Turbo საშუალოდ 7%-ს არ აღწევს. საუკეთესო წარდგენილი ნამუშევარი არის (იყო) Autogen-ზე დაფუძნებული გადაწყვეტა, კომპლექსური მრავალაგენტური სისტემით, რომელიც იყენებს OpenAI-ის ხელსაწყოების გამოძახების ფუნქციებს, ის 40%-ს აღწევს. მოდით, ჩვენც ჩავერთოთ კონკურსში. 🥊 GAIA-ს კითხვების გადასაჭრელად სამი ძირითადი ინსტრუმენტი გამოვიყენეთ: ა. ვებ ბრაუზერი ვებ დათვალიერებისთვის, ძირითადად, Autogen გუნდის მიერ წარმოდგენილი Markdown ვებ ბრაუზერი გამოვიყენეთ. ის მოიცავს Browser კლასს, რომელიც ინახავს ბრაუზერის მიმდინარე მდგომარეობას, და რამდენიმე ინსტრუმენტს ვებ ნავიგაციისთვის, როგორიცაა visit_page, page_down ან find_in_page. ეს ინსტრუმენტი აბრუნებს მიმდინარე ხედის Markdown წარმოდგენებს. Markdown-ის გამოყენება მნიშვნელოვნად შეკუმშავს ვებ გვერდების ინფორმაციას, რამაც შეიძლება გამოიწვიოს გარკვეული ხარვეზები, სხვა გადაწყვეტილებებთან შედარებით, როგორიცაა ეკრანის ანაბეჭდის გადაღება და ვიზუალური მოდელის გამოყენება. თუმცა, ჩვენ აღმოვაჩინეთ, რომ ინსტრუმენტი მთლიანობაში კარგად მუშაობდა, მისი გამოყენება ან რედაქტირება ზედმეტად რთული არ იყო. შენიშვნა: ვფიქრობთ, რომ ამ ინსტრუმენტის გაუმჯობესების კარგი გზა მომავალში იქნება გვერდების ჩატვირთვა selenium პაკეტის გამოყენებით requests-ის ნაცვლად. ეს საშუალებას მოგვცემს ჩავტვირთოთ javascript (ბევრი გვერდი სწორად ვერ იტვირთება javascript-ის გარეშე) და მივიღოთ ქუქიები ზოგიერთ გვერდზე წვდომისთვის. ბ. ფაილის ინსპექტორი GAIA-ს ბევრი შეკითხვა ეყრდნობა სხვადასხვა ტიპის დართულ ფაილებს, როგორიცაა .xls, .mp3, .pdf და ა.შ. ეს ფაილები სათანადოდ უნდა იყოს გაანალიზებული. კიდევ ერთხელ, ჩვენ ვიყენებთ Autogen-ის ინსტრუმენტს, რადგან ის ძალიან კარგად მუშაობს. დიდი მადლობა Autogen-ის გუნდს მათი ნამუშევრების ღია წყაროდ ქცევისთვის. ამ ინსტრუმენტების გამოყენებამ ჩვენი განვითარების პროცესი რამდენიმე კვირით დააჩქარა! 🤗 გ. კოდის ინტერპრეტატორი ჩვენ არ დაგვჭირდება ეს, რადგან ჩვენი აგენტი ბუნებრივად აგენერირებს და ასრულებს Python კოდს: იხილეთ მეტი ქვემოთ. როგორც ვანგმა და სხვებმა (2024) აჩვენეს, აგენტისთვის მოქმედებების კოდის სახით გამოხატვის მიცემას რამდენიმე უპირატესობა აქვს ლექსიკონის მსგავსი გამოსავლების, როგორიცაა JSON, გამოყენებასთან შედარებით. ჩვენთვის მთავარი უპირატესობა ის არის, რომ კოდი არის მოქმედებების რთული მიმდევრობების გამოსახვის ძალიან ოპტიმიზებული გზა. სავარაუდოდ, თუ არსებობდა ჩვენს ამჟამინდელ პროგრამირების ენებზე უკეთესი გზა დეტალური მოქმედებების მკაცრად გამოსახატავად, ის ახალ პროგრამირების ენად იქცეოდა! განიხილეთ მათ ნაშრომში მოცემული მაგალითი: ის ხაზს უსვამს კოდის გამოყენების რამდენიმე უპირატესობას: ჩვენ დავადასტურეთ ეს პუნქტები agent_reasoning_benchmark-ზე ჩატარებული ექსპერიმენტების დროს. transformers აგენტების აგების ჩვენი უახლესი ექსპერიმენტებიდან, ჩვენ ასევე დავაკვირდით დამატებით უპირატესობებს: LLM-ის მიერ გენერირებული კოდის პრობლემა ის არის, რომ მისი შესრულება შეიძლება მართლაც სახიფათო იყოს, რადგან...