Do this, do that.
მე ვატარებდი ექსპერიმენტებს ადგილობრივ LLM-ებთან Salesforce-ში და მინდა მოგითხროთ იმ კომპონენტის შესახებ, რომელიც მე შევიმუშავე შედეგად. მას აქვს უკვე ნაცნობი ჩატის ინტერფეისი, რომელიც იყენებს Salesforce ჩანაწერებს კონტექსტში. ის მუშაობს ადგილობრივად თქვენს კომპიუტერზე, ამიტომ დამუშავებული მონაცემები არ იგზავნება მესამე მხარის სერვისზე.
Agentforce-ის დანერგვამ ჩემზე გავლენა მოახდინა კომპონენტის განვითარებაზე. Agentforce იყენებს აგენტებს - სისტემებს, რომლებსაც შეუძლიათ გადაწყვეტილების მიღება და სხვადასხვა მოქმედებების შესრულება. ამის საპირისპიროდ, ასისტენტები მხოლოდ ინფორმაციას ამუშავებენ რეაქტიულად. მიუხედავად იმისა, რომ მე მჯერა, რომ შესაძლებელია ადგილობრივი აგენტის შექმნა Pico LLM-ის გამოყენებით, ამას უზარმაზარი ძალისხმევა დასჭირდება. ამგვარად, მე გადავწყვიტე ასისტენტის შექმნა.
როგორც თქვენ მოელით LLM-ის მუშაობას, ის წარმოქმნის პასუხებს ნებისმიერ თემაზე, რადგან ის წინასწარ არის მომზადებული მონაცემთა უზარმაზარ ნაკრებზე. უფრო მეტიც, მას შეუძლია გამოიყენოს Salesforce ჩანაწერები დამატებითი კონტექსტისთვის. კომპონენტის მახასიათებლებია:
საბოლოო მომხმარებლის თვალსაზრისით, პროცესი მარტივია. თქვენ ატვირთავთ მოდელს, ირჩევთ სისტემის მოთხოვნას, ირჩევთ ჩანაწერებს, წერთ მომხმარებლის მოთხოვნას და უყურებთ გენერირებულ შედეგს.
LLM-ების გაშვება ბრაუზერში რესურსების შრომატევადი ამოცანაა მოდელის ზომის, გამტარუნარიანობის მოთხოვნებისა და ოპერატიული მეხსიერების საჭიროებების გამო. ამიტომ, Pico-ს გუნდმა შეიმუშავა თავისი picoLLM შეკუმშვის ტექნიკა, რაც კომპიუტერებისთვის LLM-ების ადგილობრივ გამოყენებას ბევრად უფრო ეფექტურს ხდის. მათ მიაწოდეს picoLLM დასკვნის ძრავა, როგორც JavaScript SDK, რათა წინა-ენდის დეველოპერებს საშუალება მისცენ გაეტარებინათ LLM ადგილობრივად ბრაუზერებში. იგი მხარს უჭერს ყველა თანამედროვე ბრაუზერს, მათ შორის Chrome, Safari, Edge, Firefox და Opera. მეტი რომ იცოდეთ იმაზე, თუ როგორ მუშაობს picoLLM Inference Engine, შეგიძლიათ წაიკითხოთ მათი სტატია .
კომპონენტი ემსახურება როგორც ხიდს მომხმარებელსა და PicoLLM ინტერფეისს შორის. კომპონენტის ბირთვში არის Visualforce გვერდი, რომელიც ჩაშენებულია iframe-ის სახით. გვერდი იტვირთება PicoLLM SDK-ს და დაუკავშირდება LWC-ს, რაც უკანასკნელს აძლევს საშუალებას გამოიყენოს SDK პოსტ შეტყობინებების საშუალებით. ელემენტების მთელი კომბინაცია ამუშავებს შემდეგს:
System_Prompt__c
ობიექტის ნებისმიერი შენახული ჩანაწერი. ღილაკზე დაჭერის შემდეგ გამოჩნდება ამომხტარი ფანჯარა არსებული სისტემის მოთხოვნით, რომ აირჩიოთ.ნივთების უკანა მხარეს არაფერია ლამაზი. Apex კოდი აკეთებს ყველა სიმძიმეს, რომელიც დაკავშირებულია ობიექტებს შორის ურთიერთობების გამოვლენასთან, ჩანაწერის ID-ის გამოყენებით ჩანაწერის გვერდიდან. ასევე, ის ასრულებს რამდენიმე SOQL მოთხოვნას და ამით მისი მოვალეობა შესრულებულია აქ.
ადრე ვიყენებდი unpkg ხელსაწყოს კოდის შესასრულებლად კვანძის მოდულიდან LWC კომპონენტში. ამ მიდგომამ გამოიწვია კონფიგურაციის დამატებითი ნაბიჯები და იყო ნაკლებად უსაფრთხო გზა მისი მუშაობისთვის. ამჯერად მინდოდა PicoLLM მოდულის შესრულება პირდაპირ Salesforce-დან და არა მხოლოდ Experience Cloud საიტიდან, რაც ადრე გავაკეთე, არამედ Lightning Experience ინტერფეისიდან.
ქუდის ქვეშ PicoLLM იყენებს ვებ მუშაკებს პარალელური დამუშავებისთვის და ეს იყო მთავარი პრობლემა, რადგან დაუშვებელია მათი გაშვება LWC-დან. საბედნიეროდ, არავინ გვითხრა უარი ვებ მუშაკების გაშვებაზე ვიზუალური ძალის გვერდიდან და ეს იყო მიდგომა, რომელიც მე გამოვიყენე.
მე გადმოვწერე PicoLLM-ის დაუმუშავებელი კოდი და დავამატე, როგორც სტატიკური რესურსი ვიზუალური ფორსის გვერდზე. LWC-ში გამოვიყენე iframe, რომელიც შეიცავდა ვიზუალური ძალის გვერდს. LWC-სა და iframe-ის შიგნით არსებულ გვერდს შორის კომუნიკაციამ მომცა საშუალება გამომეყენებინა ვებ მუშაკები. გვერდი ააქტიურებს PicoLLM-თან დაკავშირებულ კოდს lightning ვებ კომპონენტიდან.
დააკოპირეთ და ჩასვით Salesforce ჩანაწერები JSON ან CSV ფორმატში, გადააგდეთ ნებისმიერ ონლაინ LLM-ში და უყურეთ. ის მოიხმარს ჩანაწერებს, გამოიყენებს მათ დამატებით კონტექსტში და გამოიმუშავებს პასუხს. აღმოჩნდა, რომ ეს არც ისე ადვილია ადგილობრივი დამუშავებისთვის შეკუმშული მოდელების გამოყენებისას.
თავდაპირველად, მე უბრალოდ ვდებდი ჩანაწერებს, JSON ფორმატში, პირდაპირ მომხმარებლის მოთხოვნაში. შემდეგ ველოდი, რომ ნივთი საკმარისად ჭკვიანური იქნებოდა, რათა განასხვავოს თავად მოთხოვნა ჩემს მიერ მოწოდებული დამატებითი კონტექსტისგან. მე გამოვიყენე სხვადასხვა ზომის სხვადასხვა მოდელები და არ მესმოდა, რატომ არ იყენებდა JSON-ს პასუხების გენერირებისთვის. ეს ძირითადად იყო უარი ჩემს მოთხოვნაზე პასუხის გაცემაზე ან გამოგონილი მონაცემების გამომუშავება, რომელიც არ იყო დაკავშირებული იმასთან, რასაც მე ვთხოვე. დავიწყე ექსპერიმენტები კონტექსტური მონაცემების სხვადასხვა ფორმატებზე: CSV-ის გამოყენებით, JSON-ის გამოყენებით, სწრაფი გამყოფების გამოყენებით, რათა მკაცრად განვასხვავოთ მოთხოვნა კონტექსტისგან - არაფერი უშველა.
მე თითქმის მივატოვე იდეა, რადგან ძირითადი ფუნქცია არ ფუნქციონირებდა. ორიოდე თვის შემდეგ, მოულოდნელად სულელურად უბრალო ტვინის ტალღა დამეუფლა. რა მოხდება, თუ უბრალოდ შევცვალე სწრაფი ნაწილების თანმიმდევრობა? მომხმარებლის მოწოდებიდან პირველი მოდის და კონტექსტიდან მეორედ, კონტექსტამდე, პირველ რიგში და მეორეზე. ჩემდა გასაკვირად, ის მუშაობდა და ნებისმიერმა მოდელმა, რომელიც მე გამოვიყენე, მაშინვე დაიწყო Salesforce-ის ჩანაწერების კონტექსტის გაგება.
კომპონენტის ფუნქციონირება შემოწმდა შემდეგ მანქანებზე:
კომპონენტის გამოყენების ყველაზე შრომატევადი ნაწილია საწყისი მოდელის ჩატვირთვა. შეიძლება ველოდოთ, რომ 9900X ადვილად აჯობებს Snapdragon X-Elite-ს, მაგრამ ცდებით. ჩემდა გასაკვირად, ეს უკანასკნელი უფრო სწრაფია. ვინაიდან მას უფრო სწრაფი მეხსიერება აქვს, ვფიქრობ, რომ რაც უფრო სწრაფია თქვენი ოპერატიული მეხსიერება, მით უფრო სწრაფად იტვირთება მოდელი. აქ მოცემულია მოდელის ჩატვირთვის სიჩქარის შედარების ცხრილი მითითებისთვის:
იგივე ამბავი რეაგირების გენერირების სიჩქარით. როგორც მე მესმის, თქვენ უნდა გქონდეთ CPU და RAM-ის სწრაფი კომბინაცია, რომ მიიღოთ ყველაზე სწრაფი თაობა. იმის გამო, რომ პასუხის გენერაცია იცვლება იმავე მოწოდების მიხედვით, მე არ ჩავატარე ზუსტი სიჩქარის ტესტები. მიუხედავად ამისა, გენერირების სიჩქარე ძალიან სწრაფია, თითქმის ისეთივე სწრაფი, როგორც ონლაინ ალტერნატივები.
მართლაც, GPU-ს გამოყენება პასუხების გენერირებისთვის ბევრად უფრო ეფექტური იქნება. მიუხედავად იმისა, რომ შესაძლებელია GPU-ს გამოყენება PicoLLM-ით, მე თვითონ არ გამომიცდია ეს კონფიგურაცია. ამას რამდენიმე მიზეზი აქვს. პირველი, მე მჯერა, რომ ის იყენებს WebGPU ფუნქციას, რომელიც ნაგულისხმევად არ არის ჩართული ბრაუზერების უმეტესობაში (გარდა Edge-ისა). მეორე, სავარაუდოდ, საჭიროა რამდენიმე გიგაბაიტი VRAM მოდელის ჩატვირთვისთვის, რომელიც მე არ მაქვს.
ამ ასისტენტის შემუშავება იყო მომხიბლავი საძიებო მოგზაურობა. ვებ მუშაკის შეზღუდვებთან ბრძოლადან დაწყებული კონტექსტის უზრუნველყოფაში სწრაფი შეკვეთის გადამწყვეტი როლის აღმოჩენამდე, გამოწვევები იყო როგორც მასტიმულირებელი, ასევე სასარგებლო. შედეგი არის Lightning ვებ კომპონენტი, რომელიც გთავაზობთ უნიკალურ მიდგომას Salesforce-ის ეკოსისტემაში დიდი ენობრივი მოდელების ძალის გამოყენებისთვის.
მიუხედავად იმისა, რომ მოდელის საწყისი ჩატვირთვის დრო შეიძლება იყოს გასათვალისწინებელი, განსაკუთრებით უფრო დიდი მოდელებისთვის, მონაცემთა ადგილობრივად დამუშავების შესაძლებლობა გვთავაზობს მნიშვნელოვან უპირატესობებს მონაცემთა უსაფრთხოების, რეაგირების და ხარჯების ეფექტურობის თვალსაზრისით. გამოყენების პოტენციური შემთხვევები, კონტენტის გენერირების ავტომატიზაციიდან ინტელექტუალური დახმარების გაწევამდე, ფართოა და ელოდება შესწავლას.
შეამოწმეთ GitHub რეპო .