Vad är Prompt API?

Prompt API är ett experimentellt webbplattformsförslag från W3C Web Machine Learning Community Group som exponerar en webbläsarlevererad stor språkmodell för JavaScript genom ett window.LanguageModel-gränssnitt. Sidor skapar en session med LanguageModel.create(), konfigurerar den valfritt med en systemprompt och anropar sedan prompt() eller promptStreaming() för att få ett svar.

Till skillnad från att anropa ett värdbaserat LLM API körs modellen på användarens enhet. Det betyder att indata aldrig lämnar maskinen, sidan fungerar offline när modellen är cachad och det finns inga kostnader per begäran. I Chrome är den underliggande modellen Gemini Nano, men API:et är avsiktligt modellagnostiskt så andra webbläsare kan ansluta olika implementeringar.

En session är tillståndsbaserad: den spårar konversationshistoriken inom ett kontextfönster mätt i tokens. När fönstret fylls upp evikteras de äldsta icke-systemmeddelanden automatiskt (en contextoverflow-händelse utlöses) och du kan inspektera session.contextUsage och session.contextWindow när som helst för att se hur mycket utrymme som är kvar.

Verktygsbeskrivning

Den här lekplatsen är en interaktiv chattyta kopplad till window.LanguageModel. Den låter dig ställa in en systemprompt, skicka meddelanden och se modellen strömma tokens tillbaka i realtid. En förloppsindikator visar modellens tillgänglighet och nedladdningsförlopp, och en tokenanvändningsindikator rapporterar hur mycket av sessionens kontextfönster som förbrukas.

Sessionen skapas lat vid första sändning och återanvänds mellan meddelanden tills du ändrar systemprompt, då den förstörs och en ny skapas med de nya instruktionerna.

Funktioner

  • Strömningsvar — använder promptStreaming() så tokens visas i chatten när de produceras.
  • Systemprompt-redigerare — definiera en beständig roll eller beteende som villkorar varje svar.
  • Stoppknapp — avbryt en pågående prompt med en AbortController utan att förstöra sessionen.
  • Live-kontextanvändning — visualiserar contextUsage mot contextWindow så du kan se när konversationen är på väg att överflöda.
  • Tillgänglighet och nedladdningsförlopp — visar availability()-tillstånd och downloadprogress-händelser medan modellen hämtas.

Användningsfall

  • Testa prompts lokalt — iterera på systemprompts och few-shot-mönster utan att betala för ett moln-API.
  • Testa genomförbarhet för AI på enheten — verifiera att Prompt API är tillgängligt, se hur stort kontextfönstret är och benchmarka svarshastighet på din hårdvara.
  • Sekretessöm utkastning — brainstorm eller omformulera text som inte bör skickas till en tredjepartsserver.

Krav

  • En webbläsare som implementerar Prompt API. Chrome 138+ exponerar det experimentellt; i äldre versioner kan du behöva aktivera det via chrome://flags/#prompt-api-for-gemini-nano och ha modellen på enheten nedladdad.
  • En säker kontext (HTTPS eller localhost).
  • En enhet som uppfyller modellens maskinvarukrav (tillräckligt diskutrymme, RAM och en GPU/CPU som stöds). På enheter som inte stöds returnerar availability() unavailable.
  • Initial bandbredd för att ladda ned modellen. Efterföljande sessioner återanvänder den cachade modellen.

Hur det fungerar

  1. Vid montering kontrollerar verktyget typeof window.LanguageModel. Om det saknas ersätter en varning chattinmatningen.
  2. LanguageModel.availability() rapporterar ett av available, downloadable, downloading eller unavailable. Resultatet visas i förloppsindikationen.
  3. Första gången du trycker på Skicka anropar verktyget LanguageModel.create() med en monitor som strömmar downloadprogress-händelser till gränssnittet. Om en systemprompt är inställd skickas den via initialPrompts: [{ role: "system", content: ... }].
  4. Användarmeddelandet skickas genom session.promptStreaming(text, { signal }). Den returnerade ReadableStream<string> förbrukas bit för bit och läggs till assistentmeddelandet.
  5. Efter varje svar läses session.contextUsage och session.contextWindow och återspeglas i tokenanvändningsindikatorn.
  6. Att trycka på Stopp anropar controller.abort(), vilket avvisar den pågående strömmen med ett AbortError medan sessionen förblir aktiv för nästa prompt.
  7. Redigering av systemprompt ogiltigförklarar den cachade sessionen: den befintliga destroy()-as och nästa sändning skapar en ny session med de uppdaterade instruktionerna.

Alternativ förklarade

  • Systemprompt — en fri instruktion som skickas som det första system-rollmeddelandet. Det villkorar alla efterföljande omgångar. Om du lämnar det tomt skapas en session utan systemmeddelande.
  • Skicka / StoppSkicka skickar inmatningen som ett user-meddelande. Stopp avbryter strömningssvaret utan att ta bort tidigare meddelanden.
  • Tokenanvändninganvänd / totalt tokens för den aktuella sessionen. När använd närmar sig totalt kommer äldre användar-/assistentpar att evikteras vid nästa prompt.
  • Modellstatus — kombinerad avläsning av availability() och downloadprogress. Medan modellen laddar ned animeras stapeln och visar en procentsats.

Begränsningar

  • Prompt API är experimentell. Metodnamn, alternativ (t.ex. inputUsage vs contextUsage) och händelsesemantik kan ändras mellan Chrome-versioner.
  • Utgångskvalitet, faktiskhet och instruktionsföljning beror helt på webbläsarlevererad modell och är inte garanterade.
  • Kontextfönstret är litet jämfört med värdbaserade LLM:er. Långa konversationer kommer att överflöda och tyst släppa de tidigaste omgångarna.
  • API:et exponeras inte för webworkers och kan kräva Permissions Policy (language-model)-delegering på cross-origin iframes.
  • Det här verktyget exponerar avsiktligt inte temperature, topK, toolanvändning, multimodala inmatningar, strukturerad utmatning (responseConstraint) eller sessionskloningen. De är en del av specifikationen men hålls utanför lekplatsen för att fokusera på vanlig chat.

Vanliga frågor

Varför säger det att API:et inte stöds? window.LanguageModel är odefinierad i din webbläsare. Prova den senaste Chrome på skrivbordet och aktivera vid behov Prompt API-flaggan och vänta på att modellen på enheten laddar ned via chrome://components.

Varför är det första svaret långsamt? Det första anropet kan utlösa en modellnedladdning (se förloppsindikationen) och ett sessionsskapandesteg. Senare prompts återanvänder samma session och börjar strömma nästan omedelbar.

Lämnar min prompt enheten? Nej. Modellen körs lokalt. Din text skickas inte till någon server av det här verktyget.

Vad händer när kontexten fylls upp? Sessionen utlöser en contextoverflow-händelse och evikterar de äldsta icke-systemomgångarna för att göra plats. Systemprompt bevaras.

Varför rensade ändring av systemprompt svarsstilen mitt i konversationen? Redigering av systemprompt förstör den aktuella sessionen och skapar en ny vid nästa sändning. Den nya sessionen har ingen minne av tidigare omgångar.