paint-brush
Salesforce დეველოპერი ქმნის LLM ასისტენტს, რომელიც მუშაობს ადგილობრივად თქვენს აპარატზემიერ@akutishevsky
ახალი ისტორია

Salesforce დეველოპერი ქმნის LLM ასისტენტს, რომელიც მუშაობს ადგილობრივად თქვენს აპარატზე

მიერ Anton Kutishevsky
Anton Kutishevsky HackerNoon profile picture

Anton Kutishevsky

@akutishevsky

Do this, do that.

7 წთ read2025/03/17
Read on Terminal Reader
Read this story in a terminal
Print this story
tldt arrow
ka-flagKA
წაიკითხეთ ეს ამბავი ქართულად!
en-flagEN
Read this story in the original language, English!
ru-flagRU
Прочтите эту историю на русском языке!
tr-flagTR
Bu hikayeyi Türkçe okuyun!
es-flagES
Lee esta historia en Español!
ja-flagJA
この物語を日本語で読んでください!
ay-flagAY
¡Aka sarnaqäw aymar arun ullart’apxam!
cs-flagCS
Přečtěte si tento příběh v češtině!
xh-flagXH
Funda eli bali ngesiXhosa!
tl-flagTL
Basahin ang kwentong ito sa Filipino!
sw-flagSW
Soma hadithi hii kwa kiswahili!
fi-flagFI
Lue tämä tarina suomeksi!
uz-flagUZ
Bu hikoyani o'zbek tilida o'qing!
KA

Ძალიან გრძელი; Წაკითხვა

მე შევქმენი Salesforce Lightning ვებ კომპონენტი, რომელიც საშუალებას გაძლევთ გაუშვათ ძლიერი AI ენის მოდელები (LLM) პირდაპირ თქვენს კომპიუტერზე Salesforce-ის ფარგლებში. ის იყენებს Pico LLM ტექნოლოგიას მონაცემთა ლოკალურად დასამუშავებლად, თქვენი ინფორმაციის დაცვით და სწრაფი რეაგირებისთვის. თქვენ შეგიძლიათ გამოიყენოთ ის ელ.ფოსტის გენერირებისთვის, შინაარსის დასაწერად, მომხმარებელთა მონაცემების გასაანალიზებლად და სხვა, ეს ყველაფერი გარე სერვისებზე დაყრდნობის გარეშე. მეტის გასაგებად იხილეთ დემო ვიდეო და GitHub რეპო!
featured image - Salesforce დეველოპერი ქმნის LLM ასისტენტს, რომელიც მუშაობს ადგილობრივად თქვენს აპარატზე
Anton Kutishevsky HackerNoon profile picture
Anton Kutishevsky

Anton Kutishevsky

@akutishevsky

Do this, do that.

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


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


მახასიათებლები

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


  • მხარს უჭერს მრავალ მოდელს. ნებისმიერი ღია კოდის მოდელი Pico-ს ვებსაიტიდან, როგორიცაა Gemma, Llama ან Phi, შეიძლება გამოყენებულ იქნას. ერთადერთი შეზღუდვა აქ არის თქვენი კომპიუტერის ოპერატიული მეხსიერების რაოდენობა. რაც უფრო მეტს იწონის მოდელი მით მეტ RAM-ს მოიხმარს.
  • მუშაობს ერთი ჩანაწერით. როდესაც კომპონენტი მოთავსებულია ჩანაწერის გვერდზე, მას შეუძლია ჩანაწერზე წვდომა კონტექსტში. მაგალითად, ყოფნისას ანგარიშის ჩანაწერის დეტალების გვერდზე, მას შეუძლია პასუხის გენერირება მისი ველის მნიშვნელობებზე დაყრდნობით.
  • მხარს უჭერს დაკავშირებულ ჩანაწერებს. როდესაც ჩანაწერს აქვს დაკავშირებული ჩანაწერები, კომპონენტს შეუძლია მოითხოვოს და ჩართოს ისინი პასუხებში.
  • კონფიგურირებადი. კომპონენტის კონფიგურაცია შესაძლებელია ფრენის დროს, კონფიგურაციის ამომხტარი ფანჯრის გამოყენებით. ის საშუალებას გაძლევთ შეცვალოთ გენერირების ვარიანტები, როგორიცაა დასრულების ნიშნის ლიმიტი, ტემპერატურა და ზედა P.

როგორ მუშაობს

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

რა არის Pico LLM?

LLM-ების გაშვება ბრაუზერში რესურსების შრომატევადი ამოცანაა მოდელის ზომის, გამტარუნარიანობის მოთხოვნებისა და ოპერატიული მეხსიერების საჭიროებების გამო. ამიტომ, Pico-ს გუნდმა შეიმუშავა თავისი picoLLM შეკუმშვის ტექნიკა, რაც კომპიუტერებისთვის LLM-ების ადგილობრივ გამოყენებას ბევრად უფრო ეფექტურს ხდის. მათ მიაწოდეს picoLLM დასკვნის ძრავა, როგორც JavaScript SDK, რათა წინა-ენდის დეველოპერებს საშუალება მისცენ გაეტარებინათ LLM ადგილობრივად ბრაუზერებში. იგი მხარს უჭერს ყველა თანამედროვე ბრაუზერს, მათ შორის Chrome, Safari, Edge, Firefox და Opera. მეტი რომ იცოდეთ იმაზე, თუ როგორ მუშაობს picoLLM Inference Engine, შეგიძლიათ წაიკითხოთ მათი სტატია .

LWC ნაწილი

კომპონენტი ემსახურება როგორც ხიდს მომხმარებელსა და PicoLLM ინტერფეისს შორის. კომპონენტის ბირთვში არის Visualforce გვერდი, რომელიც ჩაშენებულია iframe-ის სახით. გვერდი იტვირთება PicoLLM SDK-ს და დაუკავშირდება LWC-ს, რაც უკანასკნელს აძლევს საშუალებას გამოიყენოს SDK პოსტ შეტყობინებების საშუალებით. ელემენტების მთელი კომბინაცია ამუშავებს შემდეგს:


  • მოდელის ჩატვირთვა. LWC-ს აქვს ღილაკი, რომელიც საშუალებას გაძლევთ ჩატვირთოთ თქვენი არჩევანის მოდელი. ის იწვევს ფაილის შეყვანის ელემენტს, რომელიც დამალულია iframe-ში. მოდელის ჩატვირთვის შემდეგ, Pico SDK ქმნის ვებ მუშაკებს და კომპონენტი მზად არის მომხმარებლის შეყვანის დასამუშავებლად.
  • სისტემის მოთხოვნის დაყენება. თქვენ არ გჭირდებათ ყოველ ჯერზე დაწეროთ სისტემის მოთხოვნა, ადვილია აირჩიოთ System_Prompt__c ობიექტის ნებისმიერი შენახული ჩანაწერი. ღილაკზე დაჭერის შემდეგ გამოჩნდება ამომხტარი ფანჯარა არსებული სისტემის მოთხოვნით, რომ აირჩიოთ.
  • მომხმარებლის შეყვანის მიღება. არსებობს ტექსტის ზომის შეცვლადი არე მომხმარებლის შეყვანის შესაგროვებლად. როდესაც შეგროვდება, ის იგზავნება iframe-ში, როგორც დატვირთვა და ემატება საუბრის ისტორიას.
  • Salesforce-ის ჩანაწერებზე წვდომა. არსებობს ორი ღილაკი: აირჩიეთ ველები და აირჩიეთ დაკავშირებული ჩანაწერები. პირველი აგროვებს ჩანაწერის ველის მნიშვნელობებს ჩანაწერის გვერდზე, რომელზეც მდებარეობს LWC. მეორე საშუალებას გაძლევთ აირჩიოთ დაკავშირებული ობიექტი და მოითხოვოთ მისი ჩანაწერები არჩეულ ველთან ერთად. ეს ინფორმაცია იგზავნება iframe-ში, როგორც payload.
  • თაობის ვარიანტების შეცვლა. თუ სასურველია, დასრულების ნიშნის ლიმიტი, ტემპერატურა და ზედა P პარამეტრები შეიძლება შეიცვალოს კომპონენტში გამოყოფილი ღილაკის მეშვეობით. ეს ინფორმაცია ასევე იგზავნება iframe-ზე ტვირთის სახით.
  • შედეგის გამომუშავება. როდესაც iframe იღებს დატვირთვას, ის იყენებს Pico SDK-ს დატვირთული მოდელის გამოსაყენებლად და შედეგის შესაქმნელად. თუ იყო გათვალისწინებული გენერირების ვარიანტები, ისინი მხედველობაში მიიღება. ასევე, დიალოგი ყოველ ჯერზე განახლდება, ასე რომ LLM დაიმახსოვრებს მის ისტორიას.
  • ჩეთის შეტყობინებების რენდერი. LWC-ს შეუძლია გამავალი შეტყობინებების გაცემა, რომლებიც მომხმარებელმა მოგვაწოდა. შემომავალი შეტყობინებები, რომლებიც შეიცავს გენერირებულ პასუხს, დინამიურად გადაიცემა მას შემდეგ, რაც კომპონენტს ექნება რაიმე სათქმელი მომხმარებლისთვის. როგორიცაა გენერირებული შედეგები ან ინფორმაცია და შეცდომის შეტყობინებები.

ცოტა Apex კოდი

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

განვითარების გამოწვევები

ვებ მუშები

ადრე ვიყენებდი unpkg ხელსაწყოს კოდის შესასრულებლად კვანძის მოდულიდან LWC კომპონენტში. ამ მიდგომამ გამოიწვია კონფიგურაციის დამატებითი ნაბიჯები და იყო ნაკლებად უსაფრთხო გზა მისი მუშაობისთვის. ამჯერად მინდოდა PicoLLM მოდულის შესრულება პირდაპირ Salesforce-დან და არა მხოლოდ Experience Cloud საიტიდან, რაც ადრე გავაკეთე, არამედ Lightning Experience ინტერფეისიდან.


ქუდის ქვეშ PicoLLM იყენებს ვებ მუშაკებს პარალელური დამუშავებისთვის და ეს იყო მთავარი პრობლემა, რადგან დაუშვებელია მათი გაშვება LWC-დან. საბედნიეროდ, არავინ გვითხრა უარი ვებ მუშაკების გაშვებაზე ვიზუალური ძალის გვერდიდან და ეს იყო მიდგომა, რომელიც მე გამოვიყენე.


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

Salesforce ჩანაწერების გამოყენება კონტექსტში

დააკოპირეთ და ჩასვით Salesforce ჩანაწერები JSON ან CSV ფორმატში, გადააგდეთ ნებისმიერ ონლაინ LLM-ში და უყურეთ. ის მოიხმარს ჩანაწერებს, გამოიყენებს მათ დამატებით კონტექსტში და გამოიმუშავებს პასუხს. აღმოჩნდა, რომ ეს არც ისე ადვილია ადგილობრივი დამუშავებისთვის შეკუმშული მოდელების გამოყენებისას.


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


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

შესრულება

კომპონენტის ფუნქციონირება შემოწმდა შემდეგ მანქანებზე:

  • კომპიუტერი AMD Ryzen 9 9900X პროცესორით და 32 GB ოპერატიული მეხსიერებით (5600 MT/s).
  • Microsoft Surface Laptop 7 აღჭურვილია Snapdragon X-Elite ARM პროცესორით 16 GB ოპერატიული მეხსიერებით (8448 MT/s).

მოდელის ჩატვირთვის სიჩქარე - ეს ყველაფერი მეხსიერებას ეხება

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


image

პასუხის გენერირების სიჩქარე

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

რაც შეეხება GPU-ს გამოყენებას?

მართლაც, GPU-ს გამოყენება პასუხების გენერირებისთვის ბევრად უფრო ეფექტური იქნება. მიუხედავად იმისა, რომ შესაძლებელია GPU-ს გამოყენება PicoLLM-ით, მე თვითონ არ გამომიცდია ეს კონფიგურაცია. ამას რამდენიმე მიზეზი აქვს. პირველი, მე მჯერა, რომ ის იყენებს WebGPU ფუნქციას, რომელიც ნაგულისხმევად არ არის ჩართული ბრაუზერების უმეტესობაში (გარდა Edge-ისა). მეორე, სავარაუდოდ, საჭიროა რამდენიმე გიგაბაიტი VRAM მოდელის ჩატვირთვისთვის, რომელიც მე არ მაქვს.

დასკვნა

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


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


შეამოწმეთ GitHub რეპო .

L O A D I N G
. . . comments & more!

About Author

Anton Kutishevsky HackerNoon profile picture
Anton Kutishevsky@akutishevsky
Do this, do that.

დაკიდეთ ტეგები

ეს სტატია იყო წარმოდგენილი...

Read on Terminal Reader
Read this story in a terminal
 Terminal
Read this story w/o Javascript
Read this story w/o Javascript
 Lite
Also published here
X REMOVE AD