Was ist die Prompt API?

Die Prompt API ist ein experimenteller Webplattform-Vorschlag der W3C Web Machine Learning Community Group, der ein vom Browser bereitgestelltes großes Sprachmodell JavaScript über eine window.LanguageModel-Schnittstelle zugänglich macht. Seiten erstellen eine Session mit LanguageModel.create(), konfigurieren sie optional mit einem System-Prompt und rufen dann prompt() oder promptStreaming() auf, um eine Antwort zu erhalten.

Im Gegensatz zum Aufrufen einer gehosteten LLM API läuft das Modell auf dem Gerät des Benutzers. Das bedeutet, dass Eingaben die Maschine nie verlassen, die Seite offline funktioniert, sobald das Modell gecacht ist, und es keine Pro-Request-Kosten gibt. In Chrome ist das zugrunde liegende Modell Gemini Nano, aber die API ist absichtlich modellunabhängig, sodass andere Browser unterschiedliche Implementierungen einbinden können.

Eine Session ist zustandsbehaftet: Sie verfolgt den Gesprächsverlauf innerhalb eines Kontextfensters, das in Tokens gemessen wird. Wenn das Fenster voll ist, werden die ältesten Nicht-System-Nachrichten automatisch entfernt (ein contextoverflow-Event wird ausgelöst), und Sie können session.contextUsage und session.contextWindow jederzeit überprüfen, um zu sehen, wie viel Platz noch verfügbar ist.

Tool-Beschreibung

Dieser Playground ist eine interaktive Chat-Oberfläche, die mit window.LanguageModel verbunden ist. Sie können einen System-Prompt festlegen, Nachrichten senden und das Modell in Echtzeit Tokens zurückstreamen sehen. Eine Fortschrittsleiste zeigt die Modellverfügbarkeit und den Download-Fortschritt an, und eine Token-Nutzungsleiste zeigt, wie viel des Kontextfensters der Session verbraucht wird.

Die Session wird beim ersten Senden träge erstellt und über Nachrichten hinweg wiederverwendet, bis Sie den System-Prompt ändern. Dann wird sie zerstört und eine neue mit den neuen Anweisungen erstellt.

Funktionen

  • Streaming-Antworten — verwendet promptStreaming(), sodass Tokens im Chat erscheinen, während sie produziert werden.
  • System-Prompt-Editor — definieren Sie eine persistente Rolle oder ein Verhalten, das jede Antwort beeinflusst.
  • Stop-Schaltfläche — brechen Sie einen laufenden Prompt mit einem AbortController ab, ohne die Session zu beenden.
  • Live-Kontextnutzung — visualisiert contextUsage gegen contextWindow, sodass Sie sehen können, wenn das Gespräch kurz vor einem Überlauf steht.
  • Verfügbarkeit und Download-Fortschritt — zeigt availability()-Status und downloadprogress-Events an, während das Modell abgerufen wird.

Anwendungsfälle

  • Prompts lokal testen — iterieren Sie über System-Prompts und Few-Shot-Muster, ohne für eine Cloud API zu bezahlen.
  • On-Device-AI-Machbarkeit testen — überprüfen Sie, ob die Prompt API verfügbar ist, sehen Sie, wie groß das Kontextfenster ist, und benchmarken Sie die Antwortgeschwindigkeit auf Ihrer Hardware.
  • Datenschutzsensitives Verfassen — brainstormen oder umformulieren Sie Text, der nicht an einen Server eines Drittanbieters gesendet werden sollte.

Anforderungen

  • Ein Browser, der die Prompt API implementiert. Chrome 138+ stellt sie experimentell zur Verfügung; in älteren Versionen müssen Sie sie möglicherweise über chrome://flags/#prompt-api-for-gemini-nano aktivieren und das On-Device-Modell herunterladen.
  • Ein sicherer Kontext (HTTPS oder localhost).
  • Ein Gerät, das die Hardware-Anforderungen des Modells erfüllt (ausreichend Speicherplatz, RAM und eine unterstützte GPU/CPU). Auf nicht unterstützten Geräten gibt availability() unavailable zurück.
  • Anfängliche Bandbreite zum Herunterladen des Modells. Nachfolgende Sessions verwenden das gecachte Modell wieder.

Funktionsweise

  1. Bei der Bereitstellung prüft das Tool typeof window.LanguageModel. Falls nicht vorhanden, ersetzt eine Warnung die Chat-Eingabe.
  2. LanguageModel.availability() gibt einen von available, downloadable, downloading oder unavailable zurück. Das Ergebnis wird in der Fortschrittsleiste angezeigt.
  3. Wenn Sie zum ersten Mal Senden drücken, ruft das Tool LanguageModel.create() mit einem monitor auf, der downloadprogress-Events zur UI streamt. Wenn ein System-Prompt gesetzt ist, wird er über initialPrompts: [{ role: "system", content: ... }] übergeben.
  4. Die Benutzernachricht wird über session.promptStreaming(text, { signal }) gesendet. Der zurückgegebene ReadableStream<string> wird Chunk für Chunk verbraucht und an die Assistenten-Nachricht angehängt.
  5. Nach jeder Antwort werden session.contextUsage und session.contextWindow gelesen und in der Token-Nutzungsleiste reflektiert.
  6. Das Drücken von Stop ruft controller.abort() auf, was den laufenden Stream mit einem AbortError ablehnt, während die Session für den nächsten Prompt erhalten bleibt.
  7. Das Bearbeiten des System-Prompts invalidiert die gecachte Session: die vorhandene wird destroy()-ed und der nächste Senden erstellt eine neue Session mit den aktualisierten Anweisungen.

Optionen erklärt

  • System-Prompt — eine freie Anweisung, die als erste system-Rolle-Nachricht übergeben wird. Sie beeinflusst alle nachfolgenden Züge. Wenn Sie sie leer lassen, wird eine Session ohne System-Nachricht erstellt.
  • Senden / StopSenden sendet die Eingabe als user-Nachricht. Stop bricht die Streaming-Antwort ab, ohne vorherige Nachrichten zu löschen.
  • Token-Nutzungused / total Tokens für die aktuelle Session. Wenn used sich total nähert, werden ältere Benutzer-/Assistenten-Paare beim nächsten Prompt entfernt.
  • Modellstatus — kombinierte Anzeige von availability() und downloadprogress. Während das Modell heruntergeladen wird, animiert sich die Leiste und zeigt einen Prozentsatz.

Einschränkungen

  • Die Prompt API ist experimentell. Methodennamen, Optionen (z. B. inputUsage vs contextUsage) und Event-Semantik können sich zwischen Chrome-Versionen ändern.
  • Ausgabequalität, Faktizität und Anweisungsbefolgung hängen vollständig vom vom Browser bereitgestellten Modell ab und sind nicht garantiert.
  • Das Kontextfenster ist klein im Vergleich zu gehosteten LLMs. Lange Gespräche werden überlasten und löschen stillschweigend die frühesten Züge.
  • Die API wird nicht Web Workers zugänglich gemacht und erfordert möglicherweise Permissions Policy (language-model)-Delegierung auf Cross-Origin-iframes.
  • Dieses Tool stellt absichtlich temperature, topK, Tool-Nutzung, multimodale Eingaben, strukturierte Ausgabe (responseConstraint) oder Session-Klonen nicht zur Verfügung. Sie sind Teil der Spezifikation, werden aber aus dem Playground herausgehalten, um sich auf einfachen Chat zu konzentrieren.

Häufig gestellte Fragen

Warum sagt es, dass die API nicht unterstützt wird? window.LanguageModel ist in Ihrem Browser nicht definiert. Versuchen Sie die neueste Chrome auf dem Desktop und aktivieren Sie bei Bedarf das Prompt API-Flag und warten Sie, bis das On-Device-Modell über chrome://components heruntergeladen wird.

Warum ist die erste Antwort langsam? Der erste Aufruf kann einen Modell-Download (beobachten Sie die Fortschrittsleiste) und einen Session-Erstellungsschritt auslösen. Spätere Prompts verwenden dieselbe Session wieder und beginnen fast sofort zu streamen.

Verlässt mein Prompt das Gerät? Nein. Das Modell läuft lokal. Ihr Text wird von diesem Tool nicht an einen Server gesendet.

Was passiert, wenn der Kontext voll ist? Die Session löst ein contextoverflow-Event aus und entfernt die ältesten Nicht-System-Züge, um Platz zu schaffen. Der System-Prompt wird beibehalten.

Warum hat das Ändern des System-Prompts den Antwortstil mitten im Gespräch gelöscht? Das Bearbeiten des System-Prompts zerstört die aktuelle Session und erstellt beim nächsten Senden eine neue. Die neue Session hat keine Erinnerung an vorherige Züge.