Pelnas:
- Galimybė sukurti saugią debesies LLM architektūrą, kuri neišsaugo API rakto kliente, bet eina per galinį tarpinį serverį
- Galimybė rašyti patikimas integracijas, kurios padidina suvokiamą srauto greitį ir švelniai sprendžia tokias situacijas, kaip skirtasis laikas, tinklo klaidos ir greičio apribojimai
- Galimybė sumažinti išlaidas sutrumpinant siunčiamą prieigos raktą ir suabejoti asmens duomenų būtinumu, kol jie nepatenka į debesį
Įrenginio AI yra galingas, bet ribotas. Jei prie programos norite pridėti tikrai „išmanųjį pokalbių asistentą“, ilgą teksto apibendrinimą ar sudėtingą kūrybinį kūrimą, jums reikia modelių, kurie yra per dideli, kad tilptų telefone. Čia pradeda veikti debesų AI: jūsų programa prisijungia prie didelės kalbos modelio (LLM) per API (taikomųjų programų programavimo sąsają – standartinę sąsają, kurioje dvi programinės įrangos siunčia ir gauna duomenis viena kitai). Šiame skyriuje sužinosime, kaip saugiai, greitai ir ekonomiškai integruoti debesų LLM į mobiliąją programą. Svarbiausias dėmesys bus skiriamas saugumui: neteisingai įdiegus LLM integraciją, jūsų API raktas gali nutekėti ir atsiras tūkstančių svarų vertės sąskaitos.
Auksinė architektūros taisyklė: laikykite raktą ant kliento
Pavojingiausia klaida, kurią galima padaryti integruojant debesies AI, yra API rakto (slapto slaptažodžio, leidžiančio naudotis paslauga) įterpimas tiesiai į mobiliosios programos kodą. Mobiliosios programos atsisiunčiamos į vartotojo įrenginį, o kodą galima nuskaityti atvirkštinės inžinerijos būdu – analizuojant sudarytą programą ir pažiūrėjus, kas joje yra. Jei jūsų raktas yra programoje, kažkas gali jį išgauti ir pateikti neribotas užklausas iš jūsų paskyros.
Tinkama architektūra yra tokia: mobilioji programa siunčia užklausas į jūsų vidinį serverį (jūsų valdomą tarpinį serverį); Raktas yra tik serveryje; Serveris pereina į LLM paslaugą ir grąžina atsakymą programai. Ši tarpinė programinė įranga taip pat suteikia greičio ribą, piktnaudžiavimo prevenciją ir išlaidų kontrolę.
Prieiga
kur yra raktas
Saugumas
Raktas yra programoje (FALSE)
Kliente, viešai
Nuteka, vekselis sprogsta
Raktas yra užpakalinėje programoje (TRUE)
Serveryje, paslėpta
Saugus, valdomas
Įspėjimas: kai paprašysite AI integruoti debesies LLM, jis gali pateikti pavyzdį, kuris jūsų patogumui raktą įrašo tiesiai į programos kodą. Niekada neperimkite to gyvai. Į raginimą būtinai įtraukite sakinį „API raktas neturėtų būti kliente, eikite per tarpinį serverį“.
Srautas: padidinamas suvokiamas greitis
LLM atsakymai gali būti ilgi ir užtrukti kelias sekundes, kol bus pateikti visi. Palikti vartotoją laukti tuščiame ekrane yra bloga patirtis. Sprendimas yra srautinis perdavimas – atsakymo rodymas žodis po žodžio, kai jis generuojamas. Vartotojas stebi teksto rašybą, kaip ir ChatGPT; tai žymiai padidina juntamą greitį ir sklandumą. Srauto mobiliajame įrenginyje reiškia, kad iš serverio į sąsają pridedami fragmentai (žetonai – modelio sukurta teksto dalis), kai jie gaunami. Aiškiai paprašykite srauto spausdindami integravimą į AI.
Patarimas: srautinio perdavimo atsakyme pridėkite mygtuką „pristabdyti“. Vartotojas turi turėti galimybę sustabdyti gamybą, kai gauna norimą atsakymą; Tai pagerina patirtį ir sumažina išlaidas, nes sumažinamas nereikalingų žetonų generavimas. Ilgo atsakymo viduryje vartotojas gali jau rasti atsakymą.
Sąnaudų, vėlavimo ir klaidų valdymas
„Cloud LLM“ su kiekviena užklausa nurodo pinigų sąnaudas (mokestis už prieigos raktą) ir laiko sąnaudas (delsą). Trys disciplinos yra būtinos. Cost: limit prompt and response length, do not send unnecessarily long system instructions, default to small and cheap model if possible. Latencija: naudokite srautinį perdavimą, nustatykite skirtąjį laiką, praneškite vartotojui, jei tinklas lėtas. Klaida: tinklo nutrūkimas, paslauga gali grąžinti 429 (per daug užklausų) arba 500 (serverio klaida); elkitės su kiekvienu švelniai, nesugadinkite programos. Taip pat LLM kartais pateikia beprasmius ar neteisingus (haliucinacijų) atsakymus; Pridėkite atsakymo patikrinimo sluoksnį kritinėse srityse.
trys mini dėklai
1 atvejis – nutekėjo raktas. Paleisties įmonė įdėjo OpenAI raktą tiesiai į savo „React Native“ programą, kad greitai išeitų. Praėjus trims savaitėms po programos išleidimo, raktas buvo apverstas ir per naktį buvo panaudota 2 400 USD vertės. Komanda turėjo atšaukti raktą ir nustatyti tarpinį serverį. Pamoka: patogumo dėlei pasirinkta nuoroda tapo brangiausiu maršrutu.
2 atvejis – iškritimas sumažėjo didėjant srautui. Švietimo programa pirmą kartą išleido klausimų ir atsakymų funkciją be srautinio perdavimo; vartotojai išeidavo po 6 sekundžių tuščiosios eigos laukimo. Pridėjus srautą, pirmasis žodis pradėjo pasirodyti per 0,8 sekundės, o atsisakymo rodiklis sumažėjo nuo 48% iki 12%. Tas pats modelis, tas pats greitis – tik skiriasi pateikimas.
3 atvejis. Išlaidų kontrolė. Viena programa modeliui siųsdavo visą pokalbių istoriją su kiekvienu vartotojo pranešimu; Per ilgus pokalbius vienas prašymas pasiekė 8 000 žetonų, padidindamas išlaidas. Išsiųsdama tik keletą paskutinių pranešimų ir suvestinę, komanda sumažino žetonus už užklausą 70%, sumažino mėnesio sąskaitą iki trečdalio. Pamoka: pamatuokite, ką siunčiate.
Silpnas raginimas / Stiprus raginimas
Silpnas raginimas: „Pridėkite tokį pokalbį kaip „ChatGPT“ prie mano programos.
Galingas raginimas: "Pridėti pokalbių asistentą prie mano iOS / Swift programos. Architektūra: programa siunčia užklausą į mano užklausą, LLM API raktas NĖRA KLIENTE, jis eina per tarpinį serverį. - Atsakymas gaunamas srautiniu būdu, rodomas žodis po žodžio - Mygtukas "Sustabdyti" pertraukia gamybą - Tvarkyti skirtąjį laiką, tinklo klaidą ir trumpą situaciją, 50 -0:2 išsiųskite paskutinius 6 pranešimus + santrauką (išlaidų kontrolė) Pirmiausia paaiškinkite architektūrinę schemą, tada atskirai nurodykite kliento ir tarpinio serverio kodą.
Kopijuojami šablonai
Saugios architektūros šablonas: "Sukurkite debesies LLM integraciją į mano [platformos] programą. Taisyklė: API raktas tik vidinėje programoje. Klientas -> mano tarpinis serveris -> LLM. Tarpiniame serveryje: autentifikavimas, vienam vartotojui skirto greičio apribojimas, užklausų registravimas. Kliento ir įgaliotojo serverio pareigas išvardykite atskirai, tada eksportuokite kodą."
Srautinio perdavimo šablonas: „Pridėkite srautinio perdavimo atsakymą į šį pokalbio ekraną: – Pridėkite fragmentų prie pranešimo debesėlio, kai jie atvyksta – Rodykite žymeklį/animaciją renkant tekstą – Paspauskite mygtuką „Sustabdyti“, atšaukkite srautą – Išsaugokite dalinį tekstą ir įspėkite, jei srautui pasibaigus įvyko klaida [esamas kodas]
Kaštų delsos šablonas: "Sumažinkite išlaidas ir delsą šioje LLM integracijoje: - Kaip sumažinti išsiųstą prieigos raktą (istorijos santrumpa, santrauka)? - Tokiu atveju pakanka mažesnio / pigesnio modelio? - Pasiūlykite skirtąjį laiką ir bandykite dar kartą strategiją [kodas]"
Gedimų tolerancijos šablonas: „Padarykite šį LLM skambutį atsparų: – Atskiras elgesys be tinklo, skirtasis laikas, 429 (greičio apribojimas), 500 (serveris) – Netechninis, mandagus pranešimas vartotojui – Patvirtinimo pastaba dėl haliucinacijų rizikos kritiniuose atsakymuose[kodas]“
Dažnos klaidos
- API rakto įterpimas į programą. Brangiausia ir dažniausiai pasitaikanti saugumo klaida; Raktas tikrai yra gale.
- Nenaudojamas srautas. Jei paliksite vartotoją laukti ilgų atsakymų, vartotojas bus pašalintas.
- Su kiekviena užklausa siunčiama visa pokalbių istorija. Jis padaugina žetonų kainą ir delsą.
- Klaidų sąlygų aplenkimas. Jei 429/500/timeout nėra kreipiamasi, programa sugenda arba užšaldys.
- Laikant LLM atsakymą teisingu be klausimų. Haliucinacijos yra tikros; Pridėkite patvirtinimo sluoksnį kritinėje srityje.
- Vartotojo duomenų siuntimas nereikalingam LLM. Paklauskite, ar asmens duomenys reikalingi, ar turėtų būti užmaskuoti, kol jie patenka į debesį.
Apibendrinant
„Cloud LLM“ suteikia puikių galimybių, kurios netelpa įrenginyje, mobiliajame telefone, tačiau reikalauja saugumo ir išlaidų disciplinos. Auksinė taisyklė: API raktas niekada nėra kliente, jis eina per tarpinį serverį. Srautas labai padidina juntamą greitį ir sulaikymą; Palaikomas "stop" mygtuku. Kaina nustatoma sutrumpinus siunčiamą žetoną; Atsparumas pasiekiamas grakščiai tvarkant visus klaidų atvejus. LLM atsakymai gali apimti haliucinacijas; Kritinėse srityse būtinas patikrinimas, o asmens duomenys peržiūrimi prieš siunčiant juos į debesį.
Taikymo užduotis
Pateikite užklausą dėl kliento + tarpinio serverio dizaino iš AI naudodami „Saugios architektūros šabloną“ „teksto apibendrinimo“ arba „pokalbio“ funkcijai. Patikrinkite, ar API raktas yra tik sugeneruoto dizaino foninėje programoje. Tada išskirkite bent du būdus, kaip sumažinti žetoną, išsiųstą naudojant „Kainos delsos šabloną“, ir parašykite mandagų pranešimą, kuris bus rodomas vartotojui dėl klaidos būklės (pvz., 429).
kontrolinis sąrašas
- [ ] Patikrinau, kad API raktas yra vidinėje programoje, o ne kliente
- [ ] Perdavau atsakymą srautiniu būdu ir pridėjau mygtuką „Pristabdyti“.
- [ ] Išsprendžiau skirtąjį laiką, tinklo klaidą, 429 ir 500 situacijas
- [ ] Pateiktą prieigos raktą sumažinau ankstesne santrumpa / santrauka
- [ ] LLM atsakyme svarsčiau patvirtinimą prieš haliucinacijų riziką
- [ ] Prieš eidamas į debesį patikrinau asmens duomenų būtinumą/maskavimą