ღია კოდის დიდმა ენობრივმა მოდელებმა (LLM) მიაღწიეს ისეთ წარმადობას, რომელიც მათ აგენტური სამუშაო პროცესების მართვისთვის შესაფერის მსჯელობის მექანიზმებად აქცევს: Mixtral-მა ჩვენს ტესტებში GPT-3.5-საც კი აჯობა და მისი წარმადობა ადვილად შეიძლება კიდევ უფრო გაუმჯობესდეს დამატებითი ოპტიმიზაციით (fine-tuning). ჩვენ გამოვუშვით უმარტივესი აგენტური ბიბლიოთეკა: smolagents! იხილეთ smolagents-ის შესავალი ბლოგი აქ. დიდ ენობრივ მოდელებს (LLM), რომლებიც გაწვრთნილი არიან მიზეზობრივი ენის მოდელირებისთვის, შეუძლიათ მრავალი ამოცანის გადაჭრა, მაგრამ ისინი ხშირად უჭირთ ისეთ საბაზისო ამოცანებში, როგორიცაა ლოგიკა, გამოთვლები და ძიება. ყველაზე ცუდი სცენარია, როდესაც ისინი ცუდად მუშაობენ კონკრეტულ სფეროში, მაგალითად, მათემატიკაში, მაგრამ მაინც ცდილობენ ყველა გამოთვლის დამოუკიდებლად შესრულებას. ამ სისუსტის დასაძლევად, სხვა მიდგომებთან ერთად, შესაძლებელია LLM-ის ინტეგრირება სისტემაში, სადაც მას შეუძლია ხელსაწყოების გამოძახება: ასეთ სისტემას LLM აგენტი ეწოდება. ამ პოსტში ჩვენ განვმარტავთ ReAct აგენტების შიდა მუშაობას, შემდეგ კი ვაჩვენებთ, თუ როგორ უნდა ავაშენოთ ისინი LangChain-ში ახლახან ინტეგრირებული ChatHuggingFace კლასის გამოყენებით. ბოლოს, ჩვენ ვადარებთ რამდენიმე ღია კოდის LLM-ს GPT-3.5-სა და GPT-4-ს. LLM აგენტების განმარტება საკმაოდ ფართოა: LLM აგენტები არის ყველა სისტემა, რომელიც იყენებს LLM-ებს თავის მამოძრავებელ ძრავად და შეუძლია გარემოზე დაკვირვებების საფუძველზე მოქმედებების შესრულება. მათ შეუძლიათ გამოიყენონ Perception ⇒ Reflexion ⇒ Action (აღქმა ⇒ რეფლექსია ⇒ მოქმედება) ციკლის რამდენიმე გამეორება თავიანთი ამოცანის შესასრულებლად და ხშირად გაძლიერებულნი არიან დაგეგმვის ან ცოდნის მართვის სისტემებით მათი წარმადობის გასაუმჯობესებლად. აგენტების ლანდშაფტის კარგი მიმოხილვა შეგიძლიათ იხილოთ Xi et al., 2023-ში. დღეს ჩვენ ვამახვილებთ ყურადღებას ReAct აგენტებზე. ReAct არის აგენტების შექმნის მიდგომა, რომელიც დაფუძნებულია ორი სიტყვის, "Reasoning" (მსჯელობა) და "Acting" (მოქმედება) გაერთიანებაზე. მოთხოვნაში (prompt) ჩვენ აღვწერთ მოდელს, რომელ ხელსაწყოებს შეუძლია გამოიყენოს და ვთხოვთ მას იფიქროს „ნაბიჯ-ნაბიჯ“ (ასევე მოუწოდებენ „აზროვნების ჯაჭვის“ ქცევას), რათა დაგეგმოს და შეასრულოს თავისი შემდეგი მოქმედებები საბოლოო პასუხამდე მისასვლელად. ზემოთ მოცემული სქემა ძალიან მაღალ დონეზე ჩანს, მაგრამ სინამდვილეში საკმაოდ მარტივია. გადახედეთ ამ ნოუთბუქს: ჩვენ ვახორციელებთ ხელსაწყოს გამოძახების ელემენტარულ მაგალითს Transformers ბიბლიოთეკის გამოყენებით. LLM გამოძახებულია ციკლში, მოთხოვნით, რომელიც არსებითად შეიცავს: შემდეგ თქვენ აანალიზებთ LLM-ის გამომავალს: მაგალითად, LLM-ის გამომავალი შეიძლება ასე გამოიყურებოდეს, როდესაც პასუხობს შეკითხვას: რამდენი წამია 1:23:45-ში? ვინაიდან ეს გამომავალი არ შეიცავს სტრიქონს ‘Final Answer:’, ის იძახებს ხელსაწყოს: ასე რომ, ჩვენ ვაანალიზებთ ამ გამომავალს და ვიღებთ ხელსაწყოს გამოძახების პარამეტრებს: გამოიძახეთ ხელსაწყო convert_time არგუმენტებით {"time": "1:23:45"}. ამ ხელსაწყოს გამოძახების გაშვება აბრუნებს {'seconds': '5025'}. ასე რომ, ჩვენ ვამატებთ ამ მთელ მონაცემთა ბლოკს მოთხოვნას. ახალი მოთხოვნა ახლა ასე გამოიყურება (ოდნავ უფრო დახვეწილი ვერსია): ➡️ ჩვენ კვლავ ვიძახებთ LLM-ს, ამ ახალი მოთხოვნით. იმის გათვალისწინებით, რომ მას აქვს ხელმისაწვდომობა ხელსაწყოს გამოძახების შედეგზე დაკვირვებაში (Observation), LLM ახლა, სავარაუდოდ, გამოიტანს: და ამოცანა გადაჭრილია! ზოგადად, LLM ძრავისთვის აგენტური სისტემის გაშვების რთული ნაწილებია: მაშ, როგორ გამოიყურება სრული აგენტის დაყენება? ჩვენ ახლახან მოვახდინეთ ChatHuggingFace-ის შემხვევის ინტეგრირება, რომელიც საშუალებას გაძლევთ შექმნათ აგენტები ღია კოდის მოდელებზე დაყრდნობით 🦜🔗LangChain-ში. ChatModel-ის შესაქმნელად და მისთვის ხელსაწყოების მისაცემად კოდი მართლაც მარტივია, შეგიძლიათ იხილოთ ყველაფერი Langchain-ის დოკუმენტაციაში. თქვენ შეგიძლიათ ჩატის მოდელი აგენტად აქციოთ ReAct სტილის მოთხოვნისა და ხელსაწყოების მიწოდებით: და აგენტი დაამუშავებს შეყვანას: ამ ბენჩმარკინგის კოდი შეგიძლიათ იხილოთ აქ. ჩვენ გვსურს გავზომოთ, თუ როგორ მუშაობენ ღია კოდის LLM-ები, როგორც ზოგადი დანიშნულების მსჯელობის აგენტები. ამიტომ ვირჩევთ კითხვებს, რომლებიც საჭიროებენ ლოგიკის გამოყენებას და ძირითადი ხელსაწყოების: კალკულატორის და ინტერნეტ ძიების ხელმისაწვდომობას. საბოლოო მონაცემთა ნაკრები არის 3 სხვა მონაცემთა ნაკრებიდან შერჩეული ნიმუშების კომბინაცია: შეფასება ჩატარდა GPT-4-ის, როგორც მსაჯულის, გამოყენებით, Prometheus-ის მოთხოვნის ფორმატზე დაფუძნებული მოთხოვნის მეშვეობით, რამაც მოგვცა შედეგები 5-ქულიანი ლიკერტის სკალაზე: იხილეთ ზუსტი მოთხოვნა აქ. ჩვენ ვაფასებთ რამდენიმე ძლიერ ღია კოდის მოდელს: ეს მოდელები შეფასებულია LangChain-ის ReAct იმპლემენტაციაში. ეს ნიშნავს, რომ ჩვენ ვთხოვთ მათ, გამოიტანონ ფუნქციის გამოძახებები ამ ფორმატში: შედარებისთვის, ჩვენ ასევე შევაფასეთ GPT-3.5 და GPT-4 იმავე მაგალითებზე LangChain-ის OpenAI-სპეციფიკური აგენტის გამოყენებით. ვინაიდან ეს იყენებს მათ საკუთარ ფუნქციის გამოძახების შაბლონს, რომელზეც ისინი ოპტიმიზებული იყვნენ, ეს ნიშნავს, რომ OpenAI მოდელები თავიანთი მაქსიმალური წარმადობით უნდა მუშაობდნენ. რადგან ღია კოდის მოდელები კონკრეტულად არ იყო ოპტიმიზებული ფუნქციების გამოსაძახებლად მოცემულ გამომავალ ფორმატში, მათ მცირე უპირატესობა აქვთ OpenAI აგენტებთან შედარებით. ამის მიუხედავად, ზოგიერთი მოდელი მართლაც კარგად მუშაობს! 💪 აქ მოცემულია Mixtral-8x7B-ის მაგალითი, რომელიც პასუხობს შეკითხვას: „რომელ ქალაქს აქვს უფრო დიდი მოსახლეობა, გუიანს თუ ტაჩენგს?“ აი, მოდელების ტესტირების შედეგები ჩვენს შეფასების მონაცემთა ნაკრებზე (საშუალო ქულები, რომლებიც თავდაპირველად 1-5 სკალაზე იყო, გადაკეთდა 0-100% სკალაზე წაკითხვადობისთვის): როგორც ხედავთ, ზოგიერთი ღია კოდის მოდელი კარგად არ მუშაობს აგენტური სამუშაო პროცესების მართვაში: მიუხედავად იმისა, რომ ეს მოსალოდნელი იყო მცირე Zephyr-7b-ისთვის, Llama2-70b გასაკვირად ცუდად მუშაობს. 👉 მაგრამ Mixtral-8x7B მართლაც კარგად მუშაობს: მან GPT-3.5-საც კი აჯობა! 🏆 და ეს არის დამატებითი ოპტიმიზაციის გარეშე მიღწეული შედეგი!