Start · Sprachen · JavaScript · Referenz · LanguageModel.contextUsage

LanguageModel.contextUsage

Eigenschaft

Gibt die Anzahl der Token zurück, die die aktuelle <code>LanguageModel</code>-Sitzung im Kontextfenster belegt, einschließlich Systemprompt, früheren Prompts und Antworten.

seit JavaScript Experimentell: Chrome 138+ (Erweiterungen, Origin Kategorie: webapi

Signatur

LanguageModel.contextUsage

Beschreibung

Die schreibgeschützte Eigenschaft contextUsage einer LanguageModel-Sitzung (Prompt API, eingebaute KI im Browser) gibt an, wie viele Token die Sitzung im Kontextfenster des Modells gerade belegt. Mitgezählt werden alle Inhalte, die das Modell für die Unterhaltung im Gedächtnis behält: der Systemprompt und initialPrompts aus LanguageModel.create(), alle bisherigen Eingaben über prompt(), promptStreaming() und append() sowie die Antworten des Modells.

Zusammen mit contextWindow, der Obergrenze an Token für die Sitzung, sehen Sie so, wie viel Platz noch übrig ist: session.contextWindow - session.contextUsage. Damit können Sie eine Füllstandsanzeige bauen, vor langen Eingaben warnen oder rechtzeitig eine neue Sitzung starten, bevor das Modell ältere Nachrichten verwirft.

Der Wert wird nach jeder abgeschlossenen Interaktion neu berechnet. Wie viele Token eine bestimmte Eingabe zusätzlich belegen würde, bevor Sie sie abschicken, erfahren Sie mit der Methode measureContextUsage(). Wenn das Kontextfenster überläuft, löst die Sitzung das Ereignis contextoverflow aus.

Rückgabewert

Typ
number
Beschreibung
Anzahl der Token, die die Sitzung gerade im Kontextfenster belegt. Direkt nach create() ohne Systemprompt ist der Wert 0 oder sehr klein.

Beispiele

Belegung nach einem Prompt auslesen

const session = await LanguageModel.create({
  initialPrompts: [
    { role: 'system', content: 'Du bist ein hilfsbereiter Assistent und antwortest kurz auf Deutsch.' }
  ]
});

console.log('Start:', session.contextUsage);

await session.prompt('Erkläre in zwei Sätzen, was ein Promise ist.');

console.log(`Belegt: ${session.contextUsage} von ${session.contextWindow} Token`);
Start: 21 Belegt: 94 von 9216 Token

Füllstandsanzeige für eine Chat-Oberfläche

const session = await LanguageModel.create();
const meter = document.querySelector('#context-meter'); // <meter>-Element

const updateMeter = () => {
  meter.max = session.contextWindow;
  meter.value = session.contextUsage;
  meter.title = `${Math.round((session.contextUsage / session.contextWindow) * 100)} % belegt`;
};

document.querySelector('#chat-form').addEventListener('submit', async (event) => {
  event.preventDefault();
  const input = event.target.elements.message;
  const answer = await session.prompt(input.value);
  document.querySelector('#log').append(answer, document.createElement('br'));
  input.value = '';
  updateMeter();
});

updateMeter();

Vor dem Senden prüfen, ob die Eingabe noch passt

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

  if (needed > free) {
    console.warn(`Zu wenig Platz: ${needed} Token nötig, ${free} frei. Starte neue Sitzung.`);
    session.destroy();
    session = await LanguageModel.create();
  }
  return { session, answer: await session.prompt(text) };
};

let session = await LanguageModel.create();
({ session } = await sendSafely(session, 'Fasse den folgenden Artikel zusammen: …'));
console.log(session.contextUsage);

// Wichtig · Fallstricke

  • Experimentell: Die Prompt API gibt es bisher nur in Chromium-Browsern (Chrome für Erweiterungen, im Web über einen Origin Trial bzw. Flags). Firefox und Safari unterstützen sie nicht. Prüfen Sie vorher mit 'LanguageModel' in self und LanguageModel.availability(), ob die API verfügbar ist.
  • Umbenennung: In älteren Chrome-Versionen und Anleitungen heißt die Eigenschaft inputUsage, die Obergrenze inputQuota, die Messmethode measureInputUsage() und das Ereignis quotaoverflow. Wenn Sie ältere Versionen unterstützen müssen, fragen Sie beide Namen ab, z. B. session.contextUsage ?? session.inputUsage.
  • Die Token-Anzahl hängt vom Modell und seinem Tokenizer ab. Sie lässt sich nicht verlässlich aus der Zeichenzahl ableiten, und derselbe Text kann in verschiedenen Browsern oder Modellversionen unterschiedlich viele Token ergeben.
  • Während eine Antwort über promptStreaming() noch läuft, ist der Wert möglicherweise noch nicht aktuell. Lesen Sie ihn erst aus, wenn der Stream vollständig abgearbeitet ist.
  • Sitzungen, die mit clone() erzeugt werden, übernehmen den bisherigen Verlauf und damit auch die Belegung. Nach destroy() ist die Sitzung nicht mehr nutzbar.