Start · Sprachen · JavaScript · Referenz · LanguageModel

LanguageModel

Schnittstelle

Die <code>LanguageModel</code>-Schnittstelle der Prompt API ist eine Sitzung mit einem Sprachmodell, das der Browser lokal auf dem Gerät mitbringt (z. B. Gemini Nano).

seit JavaScript Experimentell: Chrome 138+ für Erweiterungen, im W Kategorie: webapi

Signatur

interface LanguageModel extends EventTarget

Beschreibung

LanguageModel ist der Einstiegspunkt der Prompt API. Webseiten und Browser-Erweiterungen schicken damit Text an ein Sprachmodell, das der Browser selbst bereitstellt. Je nach Umgebung gehen auch Bilder und Audio. Die Verarbeitung läuft komplett auf dem Gerät. Es fallen keine Server- oder API-Kosten an, die Eingaben verlassen den Rechner nicht, und nach dem einmaligen Herunterladen des Modells funktioniert alles auch offline. Gut eignet sich die API zum Klassifizieren, Zusammenfassen, Umformulieren, Extrahieren strukturierter Daten und für kleine Chat-Assistenten. Für präzises Faktenwissen oder lange Denkketten ist das kleine Modell dagegen nicht gemacht.

Es gibt keinen öffentlichen Konstruktor. Zuerst prüft man mit der statischen Methode LanguageModel.availability(options), ob ein Modell nutzbar ist. Das Ergebnis ist "unavailable", "downloadable", "downloading" oder "available". Danach erzeugt LanguageModel.create(options) eine Sitzung. Dabei lassen sich ein System-Prompt und Beispiel-Dialoge (initialPrompts), die erwarteten Ein- und Ausgabearten, ein AbortSignal und ein Download-Monitor übergeben.

Wichtige Instanz-Mitglieder:

  • prompt(input, options): liefert die vollständige Antwort als Promise<string>. Mit responseConstraint (JSON-Schema oder RegExp) lässt sich die Ausgabe auf ein festes Format zwingen.
  • promptStreaming(input, options): gibt einen ReadableStream<string> zurück, der die Antwort Stück für Stück liefert.
  • append(input): fügt dem Kontext Nachrichten hinzu, ohne eine Antwort anzufordern.
  • measureInputUsage(input), inputUsage, inputQuota: messen, wie viele Token eine Eingabe braucht, wie viele bereits verbraucht sind und wie groß das Kontextfenster ist.
  • clone() kopiert eine Sitzung samt Verlauf, destroy() gibt die Ressourcen frei.
  • Das Ereignis quotaoverflow (bzw. onquotaoverflow) feuert, wenn ältere Nachrichten aus dem Kontext fallen, weil das Kontingent überschritten wurde.

Jede Sitzung merkt sich den ganzen Gesprächsverlauf. Für unabhängige Aufgaben erzeugt man deshalb getrennte Sitzungen oder klont eine vorbereitete Basis-Sitzung. So beeinflussen sich die Aufgaben nicht gegenseitig und der Kontext bleibt klein.

Parameter

Name Typ Default Beschreibung
$options.initialPrompts Array<{role: "system"|"user"|"assistant", content: string|Array}> [] Startkontext der Sitzung, der nur an create() übergeben wird. Die Rolle "system" ist nur als erster Eintrag erlaubt. Paare aus user und assistant dienen als Few-Shot-Beispiele.
$options.expectedInputs Array<{type: "text"|"image"|"audio", languages?: string[]}> [{type: "text"}] Eingabearten und Sprachen (BCP-47), die man verwenden will. Gibt man sie auch an availability(), lässt sich vorab prüfen, ob die Kombination unterstützt wird.
$options.expectedOutputs Array<{type: "text", languages?: string[]}> [{type: "text"}] Erwartete Ausgabesprache(n), z. B. [{ type: "text", languages: ["de"] }].
$options.temperature number Modellstandard Steuert, wie zufällig die Antworten ausfallen. Ist nur zusammen mit topK gültig. Im Web teils nicht verfügbar (nur in Erweiterungen).
$options.topK number Modellstandard Anzahl der Token-Kandidaten pro Schritt. Ist nur zusammen mit temperature gültig.
$options.signal AbortSignal Bricht das Erzeugen der Sitzung oder den Download des Modells ab.
$options.monitor (m: CreateMonitor) => void Callback, der ein EventTarget erhält. Über das Ereignis downloadprogress (e.loaded von 0 bis 1) lässt sich der Modell-Download verfolgen.

Rückgabewert

Typ
Promise<LanguageModel>
Beschreibung
LanguageModel.create() gibt ein Promise zurück, das mit einer einsatzbereiten Sitzung erfüllt wird. Ist die Konfiguration nicht verfügbar, wird es mit NotSupportedError abgelehnt, bei fehlender Berechtigung mit NotAllowedError.