Mis on Prompt API?

Prompt API on W3C Web Machine Learning Community Groupi eksperimentaalne veebiplattvormi ettepanek, mis avab brauseri poolt pakutava suurekeelmudelit JavaScriptile window.LanguageModel liidese kaudu. Lehed loovad seansi käsklusega LanguageModel.create(), seadistavad selle valikuliselt süsteemi käskluse abil ja kutsuvad seejärel prompt() või promptStreaming() vastuse saamiseks.

Erinevalt majutatud LLM API kutsumisest töötab mudel kasutaja seadmes. See tähendab, et sisendid ei lahku masinast, leht töötab võrguühenduseta pärast mudeli vahemällu salvestamist ja kulude ei ole. Chrome'is on aluseks olev mudel Gemini Nano, kuid API on tahtlikult mudelist sõltumatu, nii et muud brauserid saavad lisada erinevaid rakendusi.

Seans on stateful: see jälgib vestluse ajalugu konteksti aknas, mida mõõdetakse tokenites. Kui aken täitub, eemaldatakse automaatselt vanimad mittesüsteemse sõnumid (käivitatakse contextoverflow sündmus) ja saate igal ajal kontrollida session.contextUsage ja session.contextWindow väärtusi, et näha, kui palju ruumi on jäänud.

Tööriista kirjeldus

See mänguväljak on interaktiivne vestluspind, mis on ühendatud window.LanguageModel liidese kaudu. See võimaldab teil seada süsteemi käsklust, saata sõnumeid ja vaadata, kuidas mudel tokeneid reaalajas tagasi voolab. Edenemisriba näitab mudeli kättesaadavust ja allalaadimise edenemist, ning tokeni kasutamise riba näitab, kui palju seansi konteksti akent kasutatakse.

Seans luuakse laiskelt esimesel saatmisel ja kasutatakse uuesti sõnumite vahel, kuni muudate süsteemi käsklust, misjärel see hävitatakse ja luuakse uus seans uute juhiste abil.

Funktsioonid

  • Voolavad vastused — kasutab promptStreaming() nii, et tokenid ilmuvad vestlusesse nende tekitamisel.
  • Süsteemi käskluse redaktor — määratlege püsiv roll või käitumine, mis mõjutab iga vastust.
  • Stopp-nupp — katkestage lennul olev käsklus AbortController abil ilma seansit lõhkumata.
  • Reaalajas konteksti kasutamine — visualiseerib contextUsage võrreldes contextWindow väärtusega, nii et näete, millal vestlus ületäitumisele läheneb.
  • Kättesaadavus ja allalaadimise edenemise näitamine — näitab availability() olekut ja downloadprogress sündmusi mudeli allalaadimise ajal.

Kasutamise juhtumid

  • Käskluste proovitamine kohalikult — itereerige süsteemi käskluste ja väikeste näidiste mustreid ilma pilveteenuse API eest maksimata.
  • Seadmesisese tehisintellekti teostatavuse testimine — kontrollige, kas Prompt API on saadaval, vaadake konteksti akna suurust ja mõõtke vastuse kiirust oma riistvaral.
  • Privaatsusega seotud mustandamine — brainstormige või sõnastage teksti ümber, mida ei tohiks kolmandale osapoolele serverisse saata.

Nõuded

  • Brauser, mis rakendab Prompt API. Chrome 138+ avab selle eksperimentaalselt; vanematel versioonidel võib teil olla vaja lubada see chrome://flags/#prompt-api-for-gemini-nano kaudu ja seadmesisene mudel alla laadida.
  • Turvaline kontekst (HTTPS või localhost).
  • Seade, mis vastab mudeli riistvara nõuetele (piisav kettaruumi, RAM ja toetatud GPU/CPU). Mittetoetatud seadmetes tagastab availability() väärtuse unavailable.
  • Algne ribalaiusruum mudeli allalaadimiseks. Järgnevad seansid kasutavad vahemällu salvestatud mudelit uuesti.

Kuidas see töötab

  1. Paigaldamisel kontrollib tööriist typeof window.LanguageModel. Kui see puudub, asendab hoiatus vestluse sisestusvälja.
  2. LanguageModel.availability() teatab ühest järgmistest: available, downloadable, downloading või unavailable. Tulemus kuvatakse edenemisribas.
  3. Esimesel korral, kui vajutate Saada, kutsub tööriist LanguageModel.create() koos monitor parameetriga, mis voolab downloadprogress sündmused kasutajaliidese juurde. Kui süsteemi käsklus on seatud, edastatakse see initialPrompts: [{ role: "system", content: ... }] kaudu.
  4. Kasutaja sõnum saadetakse session.promptStreaming(text, { signal }) kaudu. Tagastatud ReadableStream<string> tarbib tükkhaaval ja lisab assistendi sõnumile.
  5. Pärast iga vastust loetakse session.contextUsage ja session.contextWindow ning kajastuvad tokeni kasutamise ribas.
  6. Stopp vajutamine kutsub controller.abort(), mis lükkab lennul oleva voo tagasi AbortError abil, jättes seansi ellu järgmise käskluse jaoks.
  7. Süsteemi käskluse redigeerimine kehtetuks teeb vahemällu salvestatud seansi: olemasolev destroy() kutsutakse ja järgmine saatmine loob uue seansi uuendatud juhiste abil.

Valikud selgitatud

  • Süsteemi käsklus — vabavormne juhis, mis edastatakse esimese system rolli sõnumina. See mõjutab kõiki järgnevaid käike. Jätmine tühjaks loob seansi ilma süsteemi sõnumita.
  • Saada / StoppSaada esitab sisendi user sõnumina. Stopp katkestab voolavad vastused ilma eelmiste sõnumite kustutamiseta.
  • Tokeni kasutaminekasutatud / kokku tokenid praeguse seansi jaoks. Kui kasutatud läheneb kokku väärtusele, eemaldatakse vanemad kasutaja/assistendi paarid järgmisel käskluse ajal.
  • Mudeli olekavailability() ja downloadprogress kombineeritud näitamine. Mudeli allalaadimise ajal animeerub riba ja näitab protsenti.

Piirangud

  • Prompt API on eksperimentaalne. Meetodite nimed, valikud (nt inputUsage vs contextUsage) ja sündmuste semantika võivad Chrome'i versioonide vahel muutuda.
  • Väljundi kvaliteet, faktilisus ja juhiste järgimine sõltuvad täielikult brauseri poolt pakutavast mudelist ja ei ole garanteeritud.
  • Konteksti aken on väike võrreldes majutatud LLM-idega. Pikad vestlused ületäituvad ja vaikselt langetavad varasemad käigud.
  • API ei ole avatud veebitegelastele ja võib nõuda Permissions Policy (language-model) delegeerimist ristpäritolu iframetes.
  • See tööriist tahtlikult ei avalda temperature, topK, tööriista kasutamist, multimodaalseid sisendeid, struktureeritud väljundit (responseConstraint) ega seansi kloonimist. Need on spetsifikatsiooni osa, kuid jäetakse mänguväljaku välja, et keskenduda tavalisele vestlusele.

KKK

Miks ütleb see, et API ei ole toetatud? window.LanguageModel on teie brauseris määratlemata. Proovige uusimat Chrome'i töölauaarvutis ja vajadusel lubage Prompt API lipp ning oodake, kuni seadmesisene mudel laadib alla chrome://components kaudu.

Miks on esimene vastus aeglane? Esimene kõne võib käivitada mudeli allalaadimise (jälgige edenemisriba) ja seansi loomise sammu. Hilisemad käsklused kasutavad sama seansit ja hakkavad peaaegu kohe voolavad.

Kas minu käsklus lahkub seadmest? Ei. Mudel töötab kohalikult. Teie teksti ei saada selle tööriistaga ühegi serverisse.

Mis juhtub, kui kontekst täitub? Seans käivitab contextoverflow sündmuse ja eemaldab vanimad mittesüsteemse käigud, et ruumi vabastada. Süsteemi käsklus säilib.

Miks muutis süsteemi käskluse muutmine vastuse stiili vestluse keskel? Süsteemi käskluse redigeerimine hävitab praeguse seansi ja loob uue seansi järgmisel saatmisel. Uuel seansil ei ole eelmistest käikudest mälu.