Mikä on Prompt API?

Prompt API on W3C Web Machine Learning Community Groupin kokeellinen verkkoalusta-ehdotus, joka paljastaa selaimen tarjoaman suurten kielimallien rajapinnan JavaScriptille window.LanguageModel-rajapinnan kautta. Sivut luovat istunnon käyttämällä LanguageModel.create(), määrittävät sen valinnaisesti järjestelmäkehoteella ja kutsuvat sitten prompt() tai promptStreaming() saadakseen vastauksen.

Toisin kuin kutsuttaessa isännöityä LLM API:a, malli suoritetaan käyttäjän laitteella. Tämä tarkoittaa, että syötteet eivät koskaan poistu koneesta, sivu toimii offline-tilassa mallin välimuistiin tallentamisen jälkeen, eikä pyyntökohtaisia kustannuksia ole. Chromessa taustalla oleva malli on Gemini Nano, mutta API on tarkoituksella mallista riippumaton, joten muut selaimet voivat liittää eri toteutuksia.

Istunto on tilallinen: se seuraa keskustelun historiaa konteksti-ikkunan sisällä, joka mitataan tokeneissa. Kun ikkuna täyttyy, vanhimmat ei-järjestelmäviestit poistetaan automaattisesti (contextoverflow-tapahtuma laukeaa), ja voit tarkastella session.contextUsage ja session.contextWindow milloin tahansa nähdäksesi, kuinka paljon tilaa on jäljellä.

Työkalun kuvaus

Tämä leikkikenttä on interaktiivinen chat-pinta, joka on kytketty window.LanguageModel-rajapintaan. Sen avulla voit asettaa järjestelmäkehotteen, lähettää viestejä ja katsoa mallin suoratoistavan tokeneita reaaliajassa. Edistymispalkki näyttää mallin saatavuuden ja latausedistymisen, ja token-käyttöpalkki raportoi, kuinka paljon istunnon konteksti-ikkunasta kulutetaan.

Istunto luodaan laiskasti ensimmäisellä lähetyksellä ja käytetään uudelleen viestien välillä, kunnes muutat järjestelmäkehotteen, jolloin se tuhotaan ja luodaan uusi istunto uusilla ohjeilla.

Ominaisuudet

  • Suoratoistettavat vastaukset — käyttää promptStreaming() niin, että tokenit ilmestyvät chatiin niiden tuotannon mukaan.
  • Järjestelmäkehotteen editori — määritä pysyvä rooli tai käyttäytyminen, joka ehdollistaa jokaisen vastauksen.
  • Pysäytä-painike — keskeytä käynnissä oleva kehote AbortController-ohjaimella ilman istunnon purkamista.
  • Reaaliaikainen konteksti-käyttö — visualisoi contextUsage suhteessa contextWindow-arvoon, jotta näet, milloin keskustelu on ylittymässä.
  • Saatavuus ja latausedistyminen — näyttää availability()-tilan ja downloadprogress-tapahtumat mallia haettaessa.

Käyttötapaukset

  • Kehoteiden testaaminen paikallisesti — iteroi järjestelmäkehotteita ja muutaman laukaisun malleja ilman pilvi-API:n maksamista.
  • Laitteella olevan tekoälyn toteutettavuuden testaaminen — varmista, että Prompt API on saatavilla, katso konteksti-ikkunan koko ja vertaa vastenopeutta laitteistollasi.
  • Yksityisyyteen liittyvä luonnostelu — ideoi tai muotoile uudelleen tekstiä, jota ei pitäisi lähettää kolmannen osapuolen palvelimelle.

Vaatimukset

  • Selain, joka toteuttaa Prompt API:n. Chrome 138+ paljastaa sen kokeellisesti; vanhemmissa versioissa saatat joutua ottamaan sen käyttöön chrome://flags/#prompt-api-for-gemini-nano kautta ja lataamaan laitteella olevan mallin.
  • Turvallinen konteksti (HTTPS tai localhost).
  • Laite, joka täyttää mallin laitteistovaatimukset (riittävä levytila, RAM ja tuettu GPU/CPU). Ei-tuetuilla laitteilla availability() palauttaa unavailable.
  • Alkuperäinen kaistanleveys mallin lataamiseen. Myöhemmät istunnot käyttävät välimuistiin tallennettua mallia uudelleen.

Kuinka se toimii

  1. Liitettäessä työkalu tarkistaa typeof window.LanguageModel. Jos se puuttuu, varoitus korvaa chat-syötteen.
  2. LanguageModel.availability() raportoi yhden available, downloadable, downloading tai unavailable arvosta. Tulos näytetään edistymispalkissa.
  3. Kun painat ensimmäisen kerran Lähetä, työkalu kutsuu LanguageModel.create() käyttämällä monitor-ohjaimea, joka suoratoistaa downloadprogress-tapahtumia käyttöliittymään. Jos järjestelmäkehote on asetettu, se välitetään initialPrompts: [{ role: "system", content: ... }] kautta.
  4. Käyttäjän viesti lähetetään session.promptStreaming(text, { signal }) kautta. Palautettu ReadableStream<string> kulutetaan pala palalta ja lisätään avustajan viestiin.
  5. Jokaisen vastauksen jälkeen session.contextUsage ja session.contextWindow luetaan ja heijastetaan token-käyttöpalkissa.
  6. Pysäytä-painikkeen painaminen kutsuu controller.abort(), joka hylkää käynnissä olevan virran AbortError-virheellä, mutta jättää istunnon eloon seuraavaa kehotetta varten.
  7. Järjestelmäkehotteen muokkaaminen mitätöi välimuistiin tallennetun istunnon: olemassa oleva tuhotaan destroy() ja seuraava lähetys luo uuden istunnon päivitetyillä ohjeilla.

Vaihtoehdot selitettynä

  • Järjestelmäkehote — vapaamuotoinen ohje, joka välitetään ensimmäisenä system-roolisena viestinä. Se ehdollistaa kaikki myöhemmät vuorot. Jättäminen tyhjäksi luo istunnon ilman järjestelmäviestiä.
  • Lähetä / PysäytäLähetä lähettää syötteen user-viestinä. Pysäytä keskeyttää suoratoistettavan vastauksen poistamatta aiempia viestejä.
  • Token-käyttökäytetty / yhteensä tokenit nykyiselle istunnolle. Kun käytetty lähestyy yhteensä, vanhemmat käyttäjä/avustaja-parit poistetaan seuraavalla kehotteella.
  • Mallin tila — yhdistetty availability() ja downloadprogress luenta. Mallin latautuessa palkki animoituu ja näyttää prosenttiosuuden.

Rajoitukset

  • Prompt API on kokeellinen. Metodien nimet, vaihtoehdot (esim. inputUsage vs contextUsage) ja tapahtumasemantiikka voivat muuttua Chrome-versioiden välillä.
  • Tuloslaatu, tosiasiallisesti ja ohjeiden noudattaminen riippuvat kokonaan selaimen tarjoamasta mallista eivätkä ole taattuja.
  • Konteksti-ikkuna on pieni verrattuna isännöityihin LLM:iin. Pitkät keskustelut ylivuotavat ja hiljaisesti pudottavat varhaisimmat vuorot.
  • API ei ole paljastettu web-työntekijöille ja saattaa vaatia Permissions Policy (language-model) delegointia cross-origin-kehyksille.
  • Tämä työkalu tarkoituksella ei paljasta temperature, topK, työkalujen käyttöä, multimodaalisia syötteitä, strukturoitua tuotosta (responseConstraint) tai istunnon kloonaamista. Ne ovat osa spesifikaatiota, mutta pidetään pois leikkikentästä, jotta voidaan keskittyä tavalliseen chatiin.

Usein kysytyt kysymykset

Miksi se sanoo, että API ei ole tuettu? window.LanguageModel on määrittelemätön selaimessasi. Kokeile uusinta Chromea pöytäkoneella ja tarvittaessa ota Prompt API -lippu käyttöön ja odota laitteella olevan mallin latautumista chrome://components kautta.

Miksi ensimmäinen vastaus on hidas? Ensimmäinen kutsu voi laukaista mallin latauksen (katso edistymispalkki) ja istunnon luomisen. Myöhemmät kehoteet käyttävät samaa istuntoa uudelleen ja alkavat suoratoistaa lähes välittömästi.

Jättääkö kehotteeni laitteen? Ei. Malli suoritetaan paikallisesti. Tekstiäsi ei lähetetä mihinkään palvelimelle tämän työkalun avulla.

Mitä tapahtuu, kun konteksti täyttyy? Istunto laukeaa contextoverflow-tapahtumaan ja poistaa vanhimmat ei-järjestelmä vuorot tehdäkseen tilaa. Järjestelmäkehote säilytetään.

Miksi järjestelmäkehotteen muuttaminen poisti vastaustyyli keskustelun puolivälissä? Järjestelmäkehotteen muokkaaminen tuhoaa nykyisen istunnon ja luo uuden seuraavalla lähettämisellä. Uudella istunnolla ei ole muistia aiemmista vuoroista.