Start · Sprachen · JavaScript · Referenz · Summarizer.inputQuota

Summarizer.inputQuota

Eigenschaft

Schreibgeschützte Zahl, die angibt, wie viele Eingabe-Einheiten (Tokens) eine <code>Summarizer</code>-Instanz pro Zusammenfassung höchstens verarbeiten kann.

seit JavaScript Chrome 138+ (Desktop); experimentell, nicht Baseli Kategorie: webapi

Signatur

Summarizer.inputQuota

Beschreibung

Die schreibgeschützte Eigenschaft inputQuota einer Summarizer-Instanz liefert das Eingabe-Limit, das das im Browser integrierte Sprachmodell (z. B. Gemini Nano in Chrome) für einen einzelnen Aufruf von summarize() oder summarizeStreaming() zur Verfügung stellt. Der Wert wird in einer implementierungsabhängigen Einheit angegeben – in der Praxis sind das Tokens, nicht Zeichen oder Wörter.

Wofür braucht man das? Lokale Modelle haben ein begrenztes Kontextfenster. Überschreitet der Eingabetext (inklusive sharedContext und dem pro Aufruf übergebenen context) dieses Limit, schlägt die Zusammenfassung mit einer QuotaExceededError-DOMException fehl. Mit inputQuota zusammen mit Summarizer.prototype.measureInputUsage() lässt sich vorab prüfen, ob ein Text passt, und langer Text kann gezielt in Abschnitte aufgeteilt werden.

Weil die Umrechnung von Zeichen in Tokens vom Modell abhängt, solltest du die Größe nie selbst schätzen, sondern immer measureInputUsage() nutzen und das Ergebnis mit inputQuota vergleichen. Der Wert ist pro Instanz fest und ändert sich während der Lebensdauer des Objekts nicht.

Rückgabewert

Typ
number
Beschreibung
Das maximale Eingabe-Kontingent (in der Regel in Tokens) für einen Zusammenfassungsaufruf. Kann laut Spezifikation auch Infinity sein, wenn die Implementierung kein Limit hat.

Beispiele

Kontingent einer Instanz auslesen

if ('Summarizer' in self) {
  const availability = await Summarizer.availability();
  if (availability !== 'unavailable') {
    const summarizer = await Summarizer.create({ type: 'tldr', length: 'short' });
    console.log(`Eingabe-Limit: ${summarizer.inputQuota} Tokens`);
    summarizer.destroy();
  }
} else {
  console.log('Summarizer API wird nicht unterstützt.');
}
Eingabe-Limit: 6000 Tokens

Vor dem Zusammenfassen prüfen, ob der Text passt

const summarizer = await Summarizer.create({
  type: 'key-points',
  format: 'markdown',
  sharedContext: 'Technischer Blogartikel'
});

const text = document.querySelector('article').innerText;
const usage = await summarizer.measureInputUsage(text);

if (usage <= summarizer.inputQuota) {
  const summary = await summarizer.summarize(text);
  console.log(summary);
} else {
  console.warn(`Text zu lang: ${usage} von ${summarizer.inputQuota} Tokens.`);
}
Text zu lang: 9120 von 6000 Tokens.

Langen Text abschnittsweise zusammenfassen

const summarizeLongText = async (paragraphs) => {
  const summarizer = await Summarizer.create({ type: 'tldr', length: 'medium' });
  const chunks = [];
  let current = '';

  for (const p of paragraphs) {
    const candidate = current ? `${current}\n\n${p}` : p;
    const usage = await summarizer.measureInputUsage(candidate);
    if (usage > summarizer.inputQuota && current) {
      chunks.push(current);
      current = p;
    } else {
      current = candidate;
    }
  }
  if (current) chunks.push(current);

  const partials = [];
  for (const chunk of chunks) {
    partials.push(await summarizer.summarize(chunk));
  }
  summarizer.destroy();
  return partials.join('\n');
};

const paragraphs = [...document.querySelectorAll('article p')].map((p) => p.innerText);
console.log(await summarizeLongText(paragraphs));

// Wichtig · Fallstricke

  • Einheit ist nicht Zeichen: inputQuota zählt modellabhängige Tokens. text.length mit dem Wert zu vergleichen ist falsch – immer measureInputUsage() verwenden.
  • Kontext zählt mit: Auch sharedContext aus create() und die context-Option eines einzelnen Aufrufs verbrauchen Kontingent. Übergib dieselben Optionen an measureInputUsage(text, { context }) wie an summarize().
  • Fehlerfall: Wird das Limit überschritten, wird das Promise von summarize() mit einer DOMException namens QuotaExceededError abgelehnt – fange sie mit try…catch ab.
  • Kompatibilität: Die Summarizer API ist experimentell und derzeit nur in Chrome (Desktop, ab Version 138) mit geeigneter Hardware verfügbar; sie setzt einen sicheren Kontext (HTTPS) voraus und kann per Permissions Policy (summarizer) eingeschränkt sein. Vorher mit 'Summarizer' in self und Summarizer.availability() prüfen.
  • Der konkrete Wert unterscheidet sich zwischen Browsern, Modellversionen und Geräten – nie hart kodieren.