Start · Sprachen · JavaScript · Referenz · Summarizer.type

Summarizer.type

Eigenschaft

Schreibgeschützte Eigenschaft, die den Zusammenfassungstyp eines <code>Summarizer</code>-Objekts liefert, z. B. <code>"key-points"</code>, <code>"tldr"</code>, <code>"teaser"</code> oder <code>"headline"</code>.

seit JavaScript Experimentell: Chrome/Edge 138+ (Desktop), nicht i Kategorie: webapi

Signatur

Summarizer.type

Beschreibung

Die Eigenschaft type gehört zum Summarizer-Interface der Summarizer API, einer der eingebauten KI-APIs des Browsers. Sie gibt an, welche Art von Zusammenfassung das Modell erzeugt. Der Wert wird einmalig beim Erzeugen über Summarizer.create({ type }) festgelegt und lässt sich danach nicht mehr ändern.

Mögliche Werte:

  • "key-points" (Standard): die wichtigsten Punkte als Aufzählung
  • "tldr": ein kurzer Überblick, gedacht für eilige Leser
  • "teaser": ein Anreißer, der zum Weiterlesen anregen soll
  • "headline": eine einzelne Überschrift, die den Kerngedanken wiedergibt

Nützlich ist type, wenn eine Anwendung mehrere Summarizer-Instanzen verwaltet (z. B. in einem Cache) oder wenn du die Ausgabe je nach Typ unterschiedlich darstellen willst, etwa als Liste bei "key-points" und als <h2> bei "headline". Wie lang die Ausgabe wird, hängt zusätzlich von length ab; ob sie als Markdown oder als reiner Text kommt, von format.

Rückgabewert

Typ
"key-points" | "tldr" | "teaser" | "headline"
Beschreibung
Der beim Erzeugen festgelegte Typ als String. Wurde keiner angegeben, ist der Wert "key-points".

Beispiele

Typ nach dem Erzeugen auslesen

if ('Summarizer' in self) {
  const summarizer = await Summarizer.create({
    type: 'tldr',
    format: 'plain-text',
    length: 'short'
  });
  console.log(summarizer.type);

  // Standardwert, wenn kein Typ angegeben wird
  const standard = await Summarizer.create();
  console.log(standard.type);
}
tldr key-points

Ausgabe je nach Typ unterschiedlich darstellen

const render = async (summarizer, text, ziel) => {
  const ergebnis = await summarizer.summarize(text);

  switch (summarizer.type) {
    case 'headline': {
      const h2 = document.createElement('h2');
      h2.textContent = ergebnis;
      ziel.replaceChildren(h2);
      break;
    }
    case 'key-points': {
      const ul = document.createElement('ul');
      for (const zeile of ergebnis.split('\n')) {
        const punkt = zeile.replace(/^[-*]\s*/, '').trim();
        if (!punkt) continue;
        const li = document.createElement('li');
        li.textContent = punkt;
        ul.append(li);
      }
      ziel.replaceChildren(ul);
      break;
    }
    default:
      ziel.textContent = ergebnis;
  }
};

const s = await Summarizer.create({ type: 'key-points', format: 'plain-text' });
await render(s, document.querySelector('article').innerText, document.querySelector('#zusammenfassung'));

Instanzen pro Typ zwischenspeichern

const cache = new Map();

const holeSummarizer = async (type) => {
  if (cache.has(type)) return cache.get(type);

  const verfuegbar = await Summarizer.availability({ type });
  if (verfuegbar === 'unavailable') {
    throw new Error(`Typ ${type} wird nicht unterstützt`);
  }

  const s = await Summarizer.create({ type });
  cache.set(s.type, s); // s.type bestätigt den tatsächlich verwendeten Typ
  return s;
};

const teaser = await holeSummarizer('teaser');
console.log(teaser.type, cache.size);
teaser 1

// Wichtig · Fallstricke

  • Schreibgeschützt: Eine Zuweisung wie summarizer.type = 'headline' ändert nichts (im Strict Mode gibt es einen TypeError). Für einen anderen Typ musst du eine neue Instanz mit Summarizer.create() erzeugen und die alte mit destroy() freigeben.
  • Ungültige Werte: Wird create() ein unbekannter Typ übergeben, schlägt der Aufruf mit einem TypeError fehl. Es wird also nicht still auf den Standardwert zurückgefallen.
  • Kompatibilität: Die API ist experimentell. Sie funktioniert nur in Chromium-basierten Desktop-Browsern (ab Chrome 138), in einem sicheren Kontext (HTTPS) und auf Geräten mit ausreichender Hardware. Beim ersten Aufruf muss eventuell erst ein Modell heruntergeladen werden. Prüfe deshalb vorher mit 'Summarizer' in self, ob die API vorhanden ist, und mit Summarizer.availability(), ob das Modell bereitsteht.
  • Wie "tldr", "teaser" usw. genau umgesetzt werden, hängt vom Modell ab. Der Typ legt nur den Stil fest; ein festes Ausgabeformat ist nicht garantiert.