Hugging Face-ი აცხადებს Transformers Agents 2.0-ის გამოშვებას! 🎁 არსებული აგენტის ტიპის გარდა, წარმოგიდგენთ ორ ახალ აგენტს, რომლებსაც შეუძლიათ წარსული დაკვირვებების საფუძველზე რთული ამოცანების გადაჭრა. 💡 ჩვენი მიზანია, კოდი იყოს მკაფიო და მოდულარული, ხოლო ისეთი საერთო ატრიბუტები, როგორიცაა საბოლოო მოთხოვნა (prompt) და ხელსაწყოები (tools), გამჭვირვალე. 🤝 ვამატებთ გაზიარების ოფციებს საზოგადოების აგენტების გასაძლიერებლად. 💪 წარმოდგენილია ექსტრემალურად მაღალეფექტური ახალი აგენტის ფრეიმვორკი, რომელიც Llama-3-70B-Instruct აგენტს საშუალებას აძლევს, GAIA-ს ლიდერთა სიაში აჯობოს GPT-4-ზე დაფუძნებულ აგენტებს! 🚀 სცადეთ და ავიდეთ უფრო მაღლა GAIA-ს ლიდერთა სიაში! transformers.agents ახლა განახლდა დამოუკიდებელ ბიბლიოთეკა smolagents-ად! ორ ბიბლიოთეკას ძალიან მსგავსი API-ები აქვს, ამიტომ გადასვლა მარტივია. გაეცანით smolagents-ის შესავალ ბლოგს აქ. დიდ ენობრივ მოდელებს (LLM-ები) შეუძლიათ ამოცანების ფართო სპექტრის შესრულება, მაგრამ ისინი ხშირად უჭირთ სპეციფიკური ამოცანები, როგორიცაა ლოგიკა, გამოთვლა და ძებნა. როდესაც მათ ეძლევათ მოთხოვნა (prompt) ამ დომენებში, სადაც ისინი კარგად არ მუშაობენ, ისინი ხშირად ვერ ახერხებენ სწორი პასუხის გენერირებას. ამ სისუსტის დასაძლევად ერთ-ერთი მიდგომაა აგენტის შექმნა, რომელიც არსებითად LLM-ის მიერ მართული პროგრამაა. აგენტი აღჭურვილია ხელსაწყოებით, რომლებიც ეხმარება მას მოქმედებების შესრულებაში. როდესაც აგენტს კონკრეტული პრობლემის გადასაჭრელად სპეციფიკური უნარი სჭირდება, ის თავის ხელსაწყოების ნაკრებიდან შესაბამის ხელსაწყოს ეყრდნობა. ამგვარად, პრობლემის გადაჭრისას, თუ აგენტს სპეციფიკური უნარი სჭირდება, მას შეუძლია დაეყრდნოს შესაბამის ხელსაწყოს თავისი ხელსაწყოების ნაკრებიდან. ექსპერიმენტულად, აგენტური ფრეიმვორკები ზოგადად ძალიან კარგად მუშაობენ და აღწევენ უახლეს (state-of-the-art) შედეგებს რამდენიმე ბენჩმარკზე. მაგალითად, გადახედეთ HumanEval-ის საუკეთესო წარდგენებს: ისინი აგენტური სისტემებია. აგენტური სამუშაო პროცესების შექმნა რთულია, და ჩვენ ვგრძნობთ, რომ ამ სისტემებს სჭირდებათ ბევრი სიცხადე და მოდულარობა. Transformers Agents ერთი წლის წინ გავუშვით და ჩვენ ვაორმაგებთ ძალისხმევას ჩვენს ძირითად დიზაინის მიზნებზე. ჩვენი ფრეიმვორკი მიისწრაფვის სიცხადისა და მოდულარობისკენ. ამასთან ერთად, გვაქვს გაზიარების ფუნქციები, რომლებიც გაძლევთ საშუალებას, „გიგანტების მხრებზე“ დაეყრდნოთ! გაეცანით დოკუმენტაციას, რათა ისწავლოთ თითოეული კომპონენტის გამოყენება! როგორ მუშაობენ აგენტები „კულისებში“? არსებითად, აგენტის ფუნქციაა „LLM-სთვის ხელსაწყოების გამოყენების ნებართვა“. აგენტებს აქვთ ძირითადი agent.run() მეთოდი, რომელიც აკონტროლებს ამ პროცესს. აგენტების შესახებ უფრო ზოგადი კონტექსტისთვის, შეგიძლიათ წაიკითხოთ ლილიან ვენგის ეს შესანიშნავი ბლოგპოსტი ან ჩვენი ადრინდელი ბლოგპოსტი LangChain-ით აგენტების შექმნის შესახებ. ჩვენს პაკეტში უფრო ღრმად ჩასასვლელად, გადახედეთ აგენტების დოკუმენტაციას. ამ ფუნქციის ადრეული წვდომის მისაღებად, გთხოვთ, ჯერ დააინსტალიროთ transformers მისი მთავარი ფილიალიდან (main branch). Agents 2.0 გამოვა v4.41.0 ვერსიაში, მაისის შუა რიცხვებში. მოკლე განსაზღვრება: Retrieval-Augmented-Generation (RAG) არის „LLM-ის გამოყენება მომხმარებლის მოთხოვნაზე პასუხის გასაცემად, მაგრამ პასუხის დაფუძნება ცოდნის ბაზიდან მოძიებულ ინფორმაციაზე“. მას ბევრი უპირატესობა აქვს ჩვეულებრივი (vanilla) ან დაზუსტებული (fine-tuned) LLM-ის გამოყენებასთან შედარებით: რამდენიმე რომ დავასახელოთ, ის საშუალებას იძლევა, პასუხი დააფუძნოს ნამდვილ ფაქტებზე და შეამციროს კონფაბულაციები, საშუალებას იძლევა LLM-ს მიაწოდოს დომენის სპეციფიკური ცოდნა და უზრუნველყოფს ცოდნის ბაზიდან ინფორმაციაზე წვდომის დეტალურ კონტროლს. ვთქვათ, გვინდა RAG-ის შესრულება და ზოგიერთი პარამეტრი დინამიურად უნდა გენერირდეს. მაგალითად, მომხმარებლის მოთხოვნიდან გამომდინარე, შეიძლება გვსურდეს ძიების შეზღუდვა ცოდნის ბაზის სპეციფიკურ ქვესიმრავლეებზე, ან მოძიებული დოკუმენტების რაოდენობის დარეგულირება. სირთულე იმაშია: როგორ დავარეგულიროთ ეს პარამეტრები დინამიურად მომხმარებლის მოთხოვნის საფუძველზე? ეს შეგვიძლია გავაკეთოთ ჩვენი აგენტისთვის ამ პარამეტრებზე წვდომის მიცემით! მოდით, დავაყენოთ ეს სისტემა. გაუშვით ქვემოთ მოცემული ხაზი საჭირო დამოკიდებულებების დასაყენებლად: ჯერ ვტვირთავთ ცოდნის ბაზას, რომელზეც გვინდა RAG-ის შესრულება: ეს მონაცემთა ნაკრები არის მრავალი Hugging Face პაკეტის დოკუმენტაციის გვერდების კრებული, შენახული Markdown ფორმატში. ახლა ვამზადებთ ცოდნის ბაზას მონაცემთა ნაკრების დამუშავებით და ვინახავთ მას ვექტორულ მონაცემთა ბაზაში, რათა გამოიყენოს retriever-მა. ჩვენ გამოვიყენებთ LangChain-ს, რადგან მას აქვს შესანიშნავი ხელსაწყოები ვექტორული მონაცემთა ბაზებისთვის. ახლა, როდესაც მონაცემთა ბაზა მზად არის, ავაშენოთ RAG სისტემა, რომელიც მომხმარებლის მოთხოვნებს დაეყრდნობა! ჩვენ გვინდა, რომ ჩვენმა სისტემამ აირჩიოს მხოლოდ ყველაზე რელევანტური ინფორმაციის წყაროები, მოთხოვნიდან გამომდინარე. ჩვენი დოკუმენტაციის გვერდები მომდინარეობს შემდეგი წყაროებიდან: როგორ შეგვიძლია ავირჩიოთ რელევანტური წყაროები მომხმარებლის მოთხოვნის საფუძველზე? 👉 მოდით, ჩვენი RAG სისტემა ავაშენოთ, როგორც აგენტი, რომელსაც ექნება თავისუფლება აირჩიოს თავისი წყაროები! ვქმნით retriever ხელსაწყოს, რომელსაც აგენტს შეუძლია გამოიყენოს თავისი არჩევანის პარამეტრებით. ახლა მარტივია აგენტის შექმნა, რომელიც ამ ხელსაწყოს გამოიყენებს! აგენტს ეს არგუმენტები დასჭირდება ინიციალიზაციისას: ჩვენი llm_engine უნდა იყოს გამოძახებადი ობიექტი (callable), რომელიც შეყვანის სახით იღებს შეტყობინებების სიას და აბრუნებს ტექსტს. მან ასევე უნდა მიიღოს stop_sequences არგუმენტი, რომელიც მიუთითებს, როდის უნდა შეწყვიტოს გენერაცია. მოხერხებულობისთვის, ჩვენ უშუალოდ ვიყენებთ პაკეტში მოცემულ HfEngine კლასს, რათა მივიღოთ LLM ძრავა, რომელიც იძახებს ჩვენს Inference API-ს. მას შემდეგ, რაც აგენტი ReactJsonAgent-ად მოვახდინეთ ინიციალიზაცია, მას ავტომატურად მიენიჭა ნაგულისხმევი სისტემური მოთხოვნა, რომელიც აადვილებს მის მართვას.