Do this, do that.
Men Salesforce ichidagi mahalliy LLMlar bilan tajriba o'tkazdim va natijada men ishlab chiqqan komponent haqida aytib bermoqchiman. U kontekst uchun Salesforce yozuvlaridan foydalanadigan allaqachon tanish chat interfeysiga ega. U sizning kompyuteringizda mahalliy ishlaydi, shuning uchun qayta ishlangan ma'lumotlar hech qanday uchinchi tomon xizmatiga yuborilmaydi.
Agentforce-ning kiritilishi menga komponentni ishlab chiqishga ta'sir qildi. Agentforce agentlardan foydalanadi - qarorlar qabul qiladigan va turli xil harakatlarni amalga oshiradigan tizimlar. Yordamchilar, aksincha, ma'lumotni faqat reaktiv tarzda qayta ishlaydilar. Pico LLM yordamida mahalliy agent yaratish mumkinligiga ishonsam ham, bu juda katta kuch talab qiladi. Shunday qilib, men o'rniga yordamchi ishlab chiqishga qaror qildim.
LLM ishlashini kutganingizdek, u har qanday mavzu bo'yicha javoblarni yaratadi, chunki u juda ko'p ma'lumotlar to'plamida oldindan o'rganilgan. Bundan tashqari, u qo'shimcha kontekst uchun Salesforce yozuvlaridan foydalanishi mumkin. Komponentning xususiyatlari quyidagilardan iborat:
Yakuniy foydalanuvchi nuqtai nazaridan, jarayon oddiy. Siz modelni yuklaysiz, tizim so'rovini tanlaysiz, yozuvlarni tanlaysiz, foydalanuvchi so'rovini yozasiz va yaratilayotgan natijaga qaraysiz.
Brauzerda LLMlarni ishga tushirish modelning o'lchami, tarmoqli kengligi talablari va RAM ehtiyojlari tufayli resurs talab qiladigan vazifadir. Shu sababli, Pico jamoasi o'zlarining picoLLM Compression texnikasini ishlab chiqdilar, bu esa kompyuterlar uchun mahalliy LLMlardan foydalanishni ancha samarali qiladi. Ular picoLLM Inference Engine-ni JavaScript SDK sifatida taqdim etdilar, bu esa front-end ishlab chiquvchilarga LLM-larni brauzerlar bo'ylab mahalliy ravishda ishga tushirishga imkon beradi. U Chrome, Safari, Edge, Firefox va Opera kabi barcha zamonaviy brauzerlarni qo'llab-quvvatlaydi. picoLLM Inference Engine qanday ishlashi haqida ko'proq bilish uchun siz ularning maqolasini o'qishingiz mumkin.
Komponent foydalanuvchi va PicoLLM interfeysi o'rtasida ko'prik bo'lib xizmat qiladi. Komponentning asosiy qismida iframe sifatida o'rnatilgan Visualforce sahifasi joylashgan. Sahifa PicoLLM SDK-ni yuklaydi va LWC bilan aloqa o'rnatadi, bu esa oxirgi SDK-dan xabarlar orqali foydalanishga imkon beradi. Elementlarning butun kombinatsiyasi quyidagilarni bajaradi:
System_Prompt__c
ob'ektining istalgan saqlangan yozuvini tanlash oson. Tugmani bosgandan so'ng, u mavjud tizimni tanlashni taklif qiladigan qalqib chiquvchi oynani ko'rsatadi.Ishlarning orqa tomonida hech qanday ajoyib narsa yo'q. Apex kodi yozuvlar sahifasidagi yozuv identifikatori yordamida ob'ektlar orasidagi munosabatlarni aniqlash bilan bog'liq barcha og'ir ishlarni bajaradi. Bundan tashqari, u bir nechta SOQL so'rovlarini bajaradi va shu bilan uning vazifasi shu erda bajariladi.
Ilgari men LWC komponentidagi tugun modulidan kodni bajarish uchun unpkg vositasidan foydalanganman. Ushbu yondashuv qo'shimcha konfiguratsiya bosqichlariga olib keldi va uni ishlashning kamroq xavfsiz usuli edi. Bu safar men PicoLLM modulini to'g'ridan-to'g'ri Salesforce-dan va nafaqat ilgari qilgan Experience Cloud saytidan, balki Lightning Experience interfeysidan ham amalga oshirmoqchi bo'ldim.
Qopqoq ostida PicoLLM veb ishchilarini parallel ishlov berish uchun ishlatadi va bu asosiy muammo edi, chunki ularni LWCdan ishga tushirishga ruxsat berilmagan. Yaxshiyamki, hech kim bizga Visualforce sahifasidan veb ishchilarni ishga tushirishga ruxsat berishdan bosh tortdi va bu men qo'llagan yondashuv edi.
Men xom PicoLLM kodini yuklab oldim va uni visualforce sahifasiga statik manba sifatida qo'shdim. LWCda men Visualforce sahifasini o'z ichiga olgan iframe-dan foydalanardim. LWC va iframe ichidagi sahifa o'rtasidagi aloqa menga veb ishchilaridan foydalanishga imkon berdi. Sahifa Lightning veb komponentidan PicoLLM bilan bog'liq kodni ishga tushiradi.
Salesforce yozuvlarini JSON yoki CSV formatida nusxalash va joylashtirish, uni istalgan onlayn LLMga tashlang va tomosha qiling. U yozuvlarni iste'mol qiladi, ularni qo'shimcha kontekst uchun ishlatadi va javob hosil qiladi. Mahalliy ishlov berish uchun siqilgan modellardan foydalanish unchalik oson emasligi ma'lum bo'ldi.
Avvaliga men oddiygina yozuvlarni JSON formatida foydalanuvchi so'roviga qo'ydim. Keyin men taklifni men taqdim etgan qo'shimcha kontekstdan ajrata oladigan darajada aqlli bo'lishini kutdim. Men har xil o'lchamdagi turli modellardan foydalandim va nima uchun javoblarni yaratish uchun JSON dan foydalanmayotganini tushunmadim. Bu, asosan, men so'ragan narsam bilan bog'liq bo'lmagan uydirma ma'lumotlarimga javob berishni rad etish edi. Men kontekst ma'lumotlarining turli formatlari bilan tajriba o'tkazishni boshladim: CSV-dan foydalanish, JSON-dan foydalanish, tezkor bo'linishlarni kontekstdan qat'iy ajratish uchun - hech narsa yordam bermadi.
Men bu fikrdan deyarli voz kechdim, chunki asosiy xususiyat ishlamayapti. Bir necha oy o'tgach, men to'satdan ahmoqona oddiy miya to'lqinini oldim. Tezkor qismlar tartibini o'zgartirsam nima bo'ladi? Birinchi bo'lib foydalanuvchi so'rovi va ikkinchidan kontekst, birinchi bo'lib kelgan kontekst va ikkinchi so'rovgacha. Ajablanarlisi shundaki, u ishladi va men ishlatgan har qanday model darhol Salesforce yozuvlarini kontekst sifatida tushuna boshladi.
Komponentning funksionalligi ushbu mashinalarda sinovdan o'tkazildi:
Komponentdan foydalanishning eng ko'p vaqt talab qiladigan qismi modelni dastlabki yuklashdir. Siz 9900X Snapdragon X-Elite’dan osonlik bilan o‘zib ketishini kutishingiz mumkin, lekin siz adashasiz. Ajablanarlisi shundaki, ikkinchisi tezroq. Tezroq xotiraga ega bo'lganligi sababli, sizning operativ xotirangiz qanchalik tez bo'lsa, model tezroq yuklanadi deb o'ylayman. Malumot uchun modelni yuklash tezligini taqqoslash jadvali:
Javobni yaratish tezligi bilan bir xil hikoya. Men tushunganimdek, eng tez avlodni olish uchun protsessor va RAMning tezkor kombinatsiyasiga ega bo'lishingiz kerak. Javob ishlab chiqarish bir xil tezlikda o'zgarganligi sababli, men aniq tezlik testlarini o'tkazmadim. Shunga qaramay, avlod tezligi juda tez, deyarli onlayn muqobillar kabi.
Haqiqatan ham, javoblarni yaratish uchun GPU-dan foydalanish ancha samarali bo'ladi. PicoLLM bilan GPUdan foydalanish mumkin bo'lsa-da, men bu konfiguratsiyani o'zim sinab ko'rmadim. Buning bir nechta sabablari bor. Birinchidan, u WebGPU xususiyatidan foydalanishiga ishonaman, bu ko'pgina brauzerlarda (Edgedan tashqari) sukut bo'yicha yoqilmagan. Ikkinchidan, menda mavjud bo'lmagan modelni yuklash uchun bir necha gigabayt VRAM kerak bo'ladi.
Ushbu yordamchini ishlab chiqish qiziqarli kashfiyot sayohati bo'ldi. Veb-ishchi cheklovlari bilan kurashishdan tortib kontekstni ta'minlashda tezkor tartibning muhim rolini aniqlashgacha bo'lgan qiyinchiliklar ham rag'batlantiruvchi, ham foydali bo'ldi. Natijada Salesforce ekotizimida Katta tilli modellar kuchidan foydalanish uchun noyob yondashuvni taklif qiluvchi Lightning veb-komponenti paydo bo'ldi.
Dastlabki modelni yuklash vaqti, ayniqsa kattaroq modellar uchun e'tiborga olinishi mumkin bo'lsa-da, ma'lumotlarni mahalliy ravishda qayta ishlash qobiliyati ma'lumotlar xavfsizligi, sezgirlik va iqtisodiy samaradorlik nuqtai nazaridan muhim afzalliklarni taqdim etadi. Kontent yaratishni avtomatlashtirishdan tortib aqlli yordam ko'rsatishgacha bo'lgan potentsial foydalanish holatlari juda katta va o'rganilishini kutmoqda.
GitHub repo-ni tekshiring.