Nimekuwa nikijaribu LLM za ndani ndani ya Salesforce na ningependa kukuambia juu ya sehemu niliyotengeneza kama matokeo. Ina kiolesura cha gumzo ambacho tayari kinatumia rekodi za Salesforce kwa muktadha. Inafanya kazi ndani ya kompyuta yako, kwa hivyo data iliyochakatwa haitumwi kwa huduma yoyote ya wahusika wengine.
Kuanzishwa kwa Agentforce ndiko kulikonishawishi kukuza kipengele. Agentforce hutumia mawakala - mifumo ambayo inaweza kufanya maamuzi na kufanya vitendo mbalimbali. Wasaidizi, kinyume chake, huchakata maelezo kwa vitendo. Hata ingawa ninaamini kuwa inawezekana kujenga wakala wa ndani kwa kutumia Pico LLM, itachukua juhudi kubwa. Kwa hivyo, niliamua kukuza msaidizi badala yake.
Vipengele
Kama unavyotarajia LLM kufanya kazi, hutoa majibu juu ya mada yoyote, kwani imefunzwa mapema kwenye seti kubwa ya data. Zaidi ya hayo, ina uwezo wa kutumia rekodi za Salesforce kwa muktadha wa ziada. Vipengele vya sehemu ni:
- Inasaidia mifano nyingi. Muundo wowote wa chanzo huria kutoka kwa tovuti ya Pico, kama vile Gemma, Llama, au Phi, unaweza kutumika. Kizuizi pekee hapa ni kiasi cha RAM ambacho kompyuta yako ina. Kadiri muundo unavyozidi uzito ndivyo unavyotumia RAM zaidi.
- Inafanya kazi na rekodi moja. Wakati kijenzi kimewekwa kwenye ukurasa wa rekodi, basi kinaweza kufikia rekodi kwa muktadha. Kwa mfano, kuwa kwenye ukurasa wa maelezo ya rekodi ya Akaunti, inaweza kutoa jibu kulingana na thamani za sehemu yake.
- Inasaidia rekodi zinazohusiana. Wakati rekodi ina rekodi zinazohusiana, sehemu inaweza kuuliza na kujumuisha katika majibu.
- Inaweza kusanidiwa. Sehemu inaweza kusanidiwa kwa kuruka, kwa kutumia kidukizo cha usanidi. Inaruhusu kubadilisha chaguo za kizazi, kama vile kikomo cha tokeni ya kukamilika, halijoto na P ya juu.
Jinsi inavyofanya kazi
Kwa mtazamo wa mtumiaji wa mwisho, mchakato ni moja kwa moja. Unapakia kielelezo, chagua kidokezo cha mfumo, chagua rekodi, andika kidokezo cha mtumiaji, na uangalie matokeo yanayotolewa.
Pico LLM ni nini?
Kuendesha LLM kwenye kivinjari ni kazi inayotumia rasilimali kwa sababu ya saizi ya modeli, mahitaji ya kipimo data na mahitaji ya RAM. Kwa hivyo, timu ya Pico ilitengeneza mbinu yao ya Ukandamizaji ya picoLLM, ambayo inafanya matumizi ya LLM ndani ya nchi kuwa na ufanisi zaidi kwa kompyuta. Walitoa PicoLLM Inference Engine, kama SDK ya JavaScript, ili kuruhusu wasanidi programu wa mbele kuendesha LLM ndani ya vivinjari vyote. Inaauni vivinjari vyote vya kisasa ikiwa ni pamoja na Chrome, Safari, Edge, Firefox, na Opera. Ili kujua zaidi kuhusu jinsi PicoLLM Inference Engine inavyofanya kazi, unaweza kusoma makala yao .
Sehemu ya LWC
Kipengele hiki hutumika kama daraja kati ya mtumiaji na kiolesura cha PicoLLM. Katika msingi wa kijenzi ni ukurasa wa Visualforce uliopachikwa kama iframe. Ukurasa hupakia SDK ya PicoLLM na huwasiliana na LWC kuruhusu wa mwisho kutumia SDK kupitia ujumbe wa machapisho. Mchanganyiko mzima wa vipengele hushughulikia zifuatazo:
- Inapakia kielelezo. LWC ina kitufe ambacho hukuruhusu kupakia kielelezo unachopenda. Huanzisha kipengele cha kuingiza faili kilichofichwa ndani ya iframe. Mara tu muundo unapopakiwa, SDK ya Pico huunda wafanyikazi wa wavuti, na kijenzi kiko tayari kuchakata ingizo la mtumiaji.
- Kuweka kidokezo cha mfumo. Si lazima uandike kidokezo cha mfumo kila wakati, ni rahisi kuchagua rekodi yoyote iliyohifadhiwa ya kitu cha
System_Prompt__c
. Mara tu kitufe kikibonyezwa, huonyesha dirisha ibukizi na vidokezo vya mfumo vilivyopo vya kuchagua. - Inakubali ingizo la mtumiaji. Kuna eneo la maandishi linaloweza kuongezwa ukubwa kwa ajili ya kukusanya ingizo la mtumiaji. Inapokusanywa, hutumwa kwa iframe kama malipo na kuongezwa kwenye historia ya mazungumzo.
- Kupata rekodi za Salesforce. Kuna vifungo viwili: Chagua Sehemu na Teua Rekodi Zinazohusiana. Ya kwanza inakusanya thamani za sehemu za rekodi kwenye ukurasa wa rekodi ambayo LWC inakaa. Ya pili hukuruhusu kuchagua kitu kinachohusiana na kuuliza rekodi zake pamoja na maadili ya uwanja uliochaguliwa. Taarifa hii inatumwa kwa iframe kama mzigo wa malipo pia.
- Kubadilisha chaguzi za kizazi. Ikihitajika, kikomo cha tokeni ya kukamilika, halijoto, na chaguo za juu za P zinaweza kubadilishwa kupitia kitufe maalum katika kijenzi. Taarifa hii pia inatumwa kama mzigo wa malipo kwa iframe.
- Kuzalisha matokeo. Iframe inapopokea upakiaji, hutumia Pico SDK kutumia muundo uliopakiwa na kutoa matokeo. Ikiwa chaguzi za kizazi zilitolewa, zinazingatiwa. Pia, mazungumzo yanasasishwa kila wakati, kwa hivyo LLM itakumbuka historia yake.
- Inatoa ujumbe wa gumzo. LWC ina uwezo wa kutoa ujumbe unaotoka, ambao ndio mtumiaji alitoa. Barua pepe zinazoingia, zilizo na jibu lililotolewa, zinatolewa kwa nguvu mara tu kipengele kina chochote cha kumwambia mtumiaji. Kama vile matokeo yanayotokana au taarifa na ujumbe wa makosa.
Kidogo cha msimbo wa Apex
Kwa upande wa nyuma wa mambo hakuna kitu cha kupendeza. Msimbo wa Apex hufanya kazi zote nzito zinazohusiana na kugundua uhusiano kati ya vitu kwa kutumia kitambulisho cha rekodi kutoka kwa ukurasa wa rekodi. Pia, hufanya maswali kadhaa ya SOQL, na kwa hivyo jukumu lake hufanywa hapa.
Changamoto za Maendeleo
Wafanyakazi wa mtandao
Hapo awali, nilitumia zana ya unpkg kutekeleza nambari kutoka kwa moduli ya nodi katika sehemu ya LWC. Mbinu hii ilisababisha hatua za ziada za usanidi, na ilikuwa njia salama kidogo ya kuifanya ifanye kazi. Wakati huu, nilitaka kutekeleza moduli ya PicoLLM moja kwa moja kutoka kwa Salesforce na sio tu kutoka kwa wavuti ya Uzoefu ya Wingu, ambayo nilikuwa nimefanya hapo awali, lakini kiolesura cha Uzoefu wa Umeme.
Chini ya kifuniko, PicoLLM hutumia wafanyikazi wa wavuti kwa usindikaji sambamba, na ilikuwa shida kuu kwa sababu hairuhusiwi kuziendesha kutoka kwa LWC. Kwa bahati nzuri, hakuna mtu aliyekataa kuturuhusu tuendeshe wafanyikazi wa wavuti kutoka kwa ukurasa wa nguvu ya kuona, na ilikuwa njia niliyotumia.
Nilipakua nambari mbichi ya PicoLLM na kuiongeza kama rasilimali tuli kwenye ukurasa wa nguvu ya kuona. Katika LWC nilitumia iframe ambayo ilikuwa na ukurasa wa nguvu ya kuona. Mawasiliano kati ya LWC na ukurasa ndani ya iframe iliniruhusu kutumia wafanyikazi wa wavuti. Ukurasa unaanzisha msimbo unaohusiana na PicoLLM kutoka sehemu ya mtandao wa umeme.
Kutumia rekodi za Salesforce kwa muktadha
Nakili na ubandike rekodi za Salesforce katika umbizo la JSON au CSV, zitupe kwenye LLM yoyote ya mtandaoni na utazame. Itatumia rekodi, kuzitumia kwa muktadha wa ziada na kutoa jibu. Ilibadilika kuwa sio rahisi wakati wa kutumia mifano iliyoshinikwa kwa usindikaji wa ndani.
Mwanzoni, nilikuwa nikiweka rekodi tu, katika umbizo la JSON, moja kwa moja kwa haraka ya mtumiaji. Kisha nilitarajia jambo hilo kuwa la busara vya kutosha kutofautisha haraka yenyewe na muktadha wa ziada niliotoa. Nilitumia mifano tofauti ya saizi tofauti na sikuelewa kwa nini haikuwa ikitumia JSON kutoa majibu. Mara nyingi ilikuwa ni kukataa kujibu kwa haraka au utayarishaji wa data yangu ya kubuni isiyohusiana na kile nilichoiomba ifanye. Nilianza kujaribu miundo tofauti ya data ya muktadha: kwa kutumia CSV, kwa kutumia JSON, kwa kutumia vigawanyiko vya haraka ili kutofautisha madhubuti kutoka kwa muktadha - hakuna kilichosaidia.
Nilikaribia kuachana na wazo hilo kwa sababu kipengele muhimu hakikufanya kazi. Baada ya miezi kadhaa, ghafla nilipata wimbi la akili la kijinga. Ikiwa ningebadilisha tu mpangilio wa sehemu za haraka? Kutoka kwa haraka ya mtumiaji kuja kwanza na muktadha kuja pili, hadi muktadha kuja wa kwanza na haraka wa pili. Kwa mshangao wangu ilifanya kazi, na mtindo wowote niliotumia mara moja ulianza kuelewa rekodi za Salesforce kama muktadha.
Utendaji
Utendaji wa sehemu hiyo ulijaribiwa kwenye mashine hizi:
- Kompyuta yenye kichakataji cha AMD Ryzen 9 9900X na 32GB ya RAM (5600 MT/s).
- Microsoft Surface Laptop 7 inayoendeshwa na kichakataji cha Snapdragon X-Elite ARM yenye GB 16 ya RAM (8448 MT/s).
Kasi ya upakiaji wa muundo- yote ni juu ya kumbukumbu
Sehemu inayotumia wakati mwingi ya kutumia sehemu ni upakiaji wa mfano wa awali. Unaweza kutarajia 9900X kufaulu kwa urahisi zaidi ya Snapdragon X-Elite, lakini utakuwa umekosea. Kwa mshangao wangu, mwisho ni haraka. Kwa kuwa ina kumbukumbu ya haraka, nadhani kwamba kasi ya RAM yako, kasi ya mfano inapakia. Hapa kuna jedwali la kulinganisha kasi ya upakiaji kwa marejeleo:
Kasi ya uzalishaji wa majibu
Hadithi sawa na kasi ya kizazi cha majibu. Kama ninavyoelewa, unahitaji kuwa na mchanganyiko wa haraka wa CPU na RAM ili kupata kizazi cha haraka iwezekanavyo. Kwa sababu kizazi cha majibu kinatofautiana kwa haraka sawa, sikufanya majaribio sahihi ya kasi. Walakini, kasi ya kizazi ni haraka sana, karibu haraka kama njia mbadala za mkondoni.
Vipi kuhusu kutumia GPU?
Kwa kweli, kutumia GPU kutoa majibu itakuwa bora zaidi. Ingawa inawezekana kutumia GPU na PicoLLM, sijajaribu usanidi huo mwenyewe. Kuna sababu kadhaa za hii. Kwanza, ninaamini hutumia kipengele cha WebGPU, ambacho hakijawezeshwa na chaguo-msingi katika vivinjari vingi (isipokuwa Edge). Pili, inaweza kuhitaji gigabytes kadhaa za VRAM kupakia mfano ambao sina.
Hitimisho
Kutengeneza msaidizi huyu imekuwa safari ya kuvutia ya uchunguzi. Kuanzia kukabiliana na vikwazo vya mfanyakazi wa wavuti hadi kugundua jukumu muhimu la utaratibu wa haraka katika kutoa muktadha, changamoto zimekuwa za kusisimua na za kuthawabisha. Matokeo yake ni Kipengele cha Wavuti cha Umeme ambacho hutoa mbinu ya kipekee ya kutumia nguvu za Miundo Kubwa ya Lugha ndani ya mfumo ikolojia wa Salesforce.
Ingawa wakati wa upakiaji wa muundo wa awali unaweza kuzingatiwa, hasa kwa miundo mikubwa, uwezo wa kuchakata data ndani ya nchi hutoa manufaa makubwa katika masuala ya usalama wa data, uitikiaji na ufaafu wa data. Kesi zinazowezekana za utumiaji, kutoka kwa utengenezaji wa maudhui kiotomatiki hadi kutoa usaidizi wa akili, ni kubwa na zinasubiri kuchunguzwa.
Angalia repo la GitHub .