Start · Sprachen · JavaScript · Referenz · Summarizer.length

Summarizer.length

Eigenschaft

Schreibgeschützte Eigenschaft, die die bei <code>Summarizer.create()</code> gewählte relative Länge der Zusammenfassungen angibt: <code>"short"</code>, <code>"medium"</code> oder <code>"long"</code>.

seit JavaScript Chrome/Edge 138+ (Summarizer API, experimentell, k Kategorie: webapi

Signatur

get Summarizer.prototype.length

Beschreibung

Die Eigenschaft length einer Summarizer-Instanz gibt an, wie lang die vom eingebauten Sprachmodell erzeugten Zusammenfassungen ungefähr werden. Der Wert wird einmalig über die Option length von Summarizer.create() festgelegt und lässt sich danach nicht mehr ändern. Fehlt die Option, gilt "medium".

Die Länge ist relativ. Was "short", "medium" und "long" konkret bedeuten, hängt vom type des Summarizers ab. In Chrome gelten ungefähr diese Werte:

  • "tldr" und "teaser": 1, 3 bzw. 5 Sätze
  • "key-points": 3, 5 bzw. 7 Stichpunkte
  • "headline": etwa 12, 17 bzw. 22 Wörter

Die Eigenschaft ist vor allem nützlich, wenn eine Instanz weitergereicht oder zwischengespeichert wird. So kann man prüfen, ob ein vorhandener Summarizer die gewünschte Konfiguration hat, oder die Länge in der Oberfläche anzeigen. Wird eine andere Länge gebraucht, muss man mit Summarizer.create() eine neue Instanz erzeugen.

Rückgabewert

Typ
"short" | "medium" | "long"
Beschreibung
Die bei der Erzeugung festgelegte relative Länge der Zusammenfassung. Ohne Angabe ist der Wert "medium".

Beispiele

Summarizer mit kurzer Länge erzeugen und Wert auslesen

if ('Summarizer' in self) {
  const availability = await Summarizer.availability({ type: 'tldr', length: 'short' });

  if (availability !== 'unavailable') {
    const summarizer = await Summarizer.create({
      type: 'tldr',
      format: 'plain-text',
      length: 'short'
    });
    console.log(summarizer.type, summarizer.length);
  }
} else {
  console.log('Summarizer API wird nicht unterstützt');
}
tldr short

Standardwert, wenn keine Länge angegeben wird

const summarizer = await Summarizer.create({ type: 'key-points' });
console.log(summarizer.length); // Standardwert

const text = document.querySelector('article').innerText;
const summary = await summarizer.summarize(text);
console.log(summary);
medium (Markdown-Liste mit ca. 5 Stichpunkten)

Summarizer-Instanzen pro Länge zwischenspeichern

const cache = new Map();

const getSummarizer = async (length = 'medium') => {
  const cached = cache.get(length);
  // Nur wiederverwenden, wenn die Konfiguration passt
  if (cached?.length === length) return cached;

  const summarizer = await Summarizer.create({ type: 'teaser', length });
  cache.set(length, summarizer);
  return summarizer;
};

const lang = await getSummarizer('long');
console.log(`Länge: ${lang.length}`);
const teaser = await lang.summarize('Langer Blogartikel …');
console.log(teaser);
Länge: long (Teaser mit ca. 5 Sätzen)

// Wichtig · Fallstricke

  • Schreibgeschützt: Eine Zuweisung wie summarizer.length = 'long' hat keine Wirkung und wirft im Strict Mode einen TypeError. Für eine andere Länge muss man eine neue Instanz erzeugen und die alte mit destroy() freigeben.
  • Verwechslungsgefahr: Summarizer.length direkt am Konstruktor ist Function.prototype.length, also die Anzahl der Parameter der Funktion, und nicht die Zusammenfassungslänge. Die hier beschriebene Eigenschaft liest man immer an einer Instanz, zum Beispiel an summarizer.length.
  • Nur Richtwert: Die Länge steuert das Modell, ist aber keine harte Grenze. Die tatsächliche Zahl der Sätze oder Wörter kann abweichen.
  • Kompatibilität: Die API ist experimentell. Sie ist bisher nur in Chromium-Browsern auf dem Desktop verfügbar (Chrome ab 138) und braucht ein lokal heruntergeladenes Modell (Gemini Nano). Firefox und Safari unterstützen sie nicht. Immer vorher mit 'Summarizer' in self und Summarizer.availability() prüfen. Für create() ist bei einem nötigen Modell-Download eine Nutzeraktivierung (User Activation) erforderlich.
  • Ungültige Werte für die Option length (etwa "xl") führen in create() zu einem TypeError.