Start · Sprachen · JavaScript · Referenz · LanguageModel.contextWindow

LanguageModel.contextWindow

Eigenschaft

Gibt die maximale Anzahl an Token zurück, die das Kontextfenster einer <code>LanguageModel</code>-Sitzung insgesamt aufnehmen kann (schreibgeschützt).

seit JavaScript Experimentell: Chrome 138+ (Prompt API, zunächst f Kategorie: webapi

Signatur

get LanguageModel.prototype.contextWindow

Beschreibung

Die schreibgeschützte Eigenschaft contextWindow einer LanguageModel-Sitzung der Prompt API gibt an, wie viele Token das Kontextfenster dieser Sitzung insgesamt fassen kann. Dazu zählen alle Anfangs-Prompts (initialPrompts), Systemanweisungen, bisherige Nutzereingaben und die Antworten des Modells.

Zusammen mit contextUsage (bereits belegte Token) lässt sich berechnen, wie viel Platz noch frei ist: session.contextWindow - session.contextUsage. Mit measureContextUsage() ermitteln Sie vorab, wie viele Token ein geplanter Prompt belegen würde. So können Sie rechtzeitig entscheiden, ob Sie den Verlauf kürzen, eine neue Sitzung starten oder den Nutzer warnen.

Der Wert ist für die Lebensdauer der Sitzung fest und hängt vom Modell und vom Browser ab (z. B. Gemini Nano in Chrome). Wird das Kontextfenster überschritten, verwirft der Browser die ältesten Nachrichten (außer dem Systemprompt) und löst das Ereignis contextoverflow aus.

Beispiele

Kontextfenster und Belegung einer Sitzung anzeigen

const session = await LanguageModel.create({
  initialPrompts: [
    { role: 'system', content: 'Du bist ein hilfreicher Assistent für Kochrezepte.' }
  ]
});

console.log(`Kontextfenster: ${session.contextWindow} Token`);
console.log(`Belegt: ${session.contextUsage} Token`);
console.log(`Frei: ${session.contextWindow - session.contextUsage} Token`);
Kontextfenster: 9216 Token Belegt: 32 Token Frei: 9184 Token

Vor dem Senden prüfen, ob der Prompt noch hineinpasst

const askSafely = async (session, text) => {
  const needed = await session.measureContextUsage(text);
  const free = session.contextWindow - session.contextUsage;

  if (needed > free) {
    console.warn(`Prompt zu groß: ${needed} Token benötigt, nur ${free} frei.`);
    // Neue Sitzung mit leerem Verlauf starten
    const fresh = await LanguageModel.create();
    session.destroy();
    return { session: fresh, answer: await fresh.prompt(text) };
  }
  return { session, answer: await session.prompt(text) };
};

let session = await LanguageModel.create();
const result = await askSafely(session, 'Fasse die Vorteile von Vollkornbrot zusammen.');
session = result.session;
console.log(result.answer);

Füllstandsanzeige mit Kompatibilitäts-Fallback

const getLimits = (session) => ({
  // Ältere Chrome-Versionen nutzen noch inputQuota/inputUsage
  total: session.contextWindow ?? session.inputQuota,
  used: session.contextUsage ?? session.inputUsage
});

const session = await LanguageModel.create();
session.addEventListener('contextoverflow', () => {
  console.warn('Kontextfenster voll – älteste Nachrichten wurden verworfen.');
});

await session.prompt('Erzähle mir etwas über die Alpen.');
const { total, used } = getLimits(session);
console.log(`Auslastung: ${Math.round((used / total) * 100)} %`);
Auslastung: 7 %

// Wichtig · Fallstricke

  • Experimentelle API: Die Prompt API gibt es bisher nur in Chromium-Browsern (Chrome-Erweiterungen, Origin Trial bzw. hinter Flags). Firefox und Safari unterstützen sie nicht. Prüfen Sie die Verfügbarkeit mit 'LanguageModel' in self und await LanguageModel.availability().
  • Umbenennung: In älteren Implementierungen hieß die Eigenschaft inputQuota, die Belegung inputUsage, die Messmethode measureInputUsage() und das Ereignis quotaoverflow. Für ältere Versionen sollten Sie einen Fallback einbauen.
  • Die Tokenzahl hängt vom Modell ab und ist nicht gleich der Zeichenzahl. Schätzen Sie daher nicht selbst, sondern nutzen Sie measureContextUsage().
  • Auch die Antworten des Modells belegen Platz im Kontext. Planen Sie deshalb ausreichend Reserve ein.
  • Nach destroy() lässt sich die Sitzung nicht mehr verwenden. Ein Klon über clone() übernimmt dasselbe Kontextfenster samt aktueller Belegung.