Signatur
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`);
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)} %`);
// 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 selfundawait LanguageModel.availability(). - Umbenennung: In älteren Implementierungen hieß die Eigenschaft
inputQuota, die BelegunginputUsage, die MessmethodemeasureInputUsage()und das Ereignisquotaoverflow. 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 überclone()übernimmt dasselbe Kontextfenster samt aktueller Belegung.