Start · Sprachen · JavaScript · Referenz · Summarizer.format

Summarizer.format

Eigenschaft

Schreibgeschützte Eigenschaft, die das Textformat (<code>"markdown"</code> oder <code>"plain-text"</code>) angibt, in dem ein <code>Summarizer</code> seine Zusammenfassungen liefert.

seit JavaScript Chrome 138+ (Desktop), experimentell – nicht Basel Kategorie: webapi

Signatur

Summarizer.format

Beschreibung

Die Eigenschaft format einer Summarizer-Instanz gibt an, in welchem Textformat die Zusammenfassungen von summarize() und summarizeStreaming() zurückkommen. Der Wert wird einmal beim Erzeugen über Summarizer.create({ format }) festgelegt und lässt sich danach nicht mehr ändern.

Mögliche Werte sind:

  • "markdown" (Standard): Die Zusammenfassung kann Markdown-Syntax enthalten, etwa Aufzählungen (- ), Überschriften oder Hervorhebungen (**fett**). Das ist vor allem beim Typ "key-points" nützlich.
  • "plain-text": Die Zusammenfassung enthält reinen Text ohne Auszeichnung. Das eignet sich für textContent, Tooltips, Benachrichtigungen oder für die Weitergabe an andere Systeme.

Die Eigenschaft hilft vor allem dann, wenn ein Summarizer an anderer Stelle erzeugt wurde, etwa in einer Hilfsfunktion oder einem Cache. Dann kann man vor der Ausgabe prüfen, ob das Ergebnis erst noch in HTML umgewandelt werden muss oder direkt als Text angezeigt werden kann.

Rückgabewert

Typ
"markdown" | "plain-text"
Beschreibung
Das beim Erzeugen festgelegte Ausgabeformat als String. Ohne ausdrückliche Angabe lautet der Wert "markdown".

Beispiele

Format beim Erzeugen festlegen und auslesen

if ('Summarizer' in self) {
  const availability = await Summarizer.availability({ format: 'plain-text' });

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

Standardwert ohne Angabe von format

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

// Die Eigenschaft ist schreibgeschützt; die Zuweisung wird ignoriert
// (im Strict Mode, z. B. in ES-Modulen, wird ein TypeError geworfen)
try {
  summarizer.format = 'plain-text';
} catch (err) {
  console.log(err.name);
}
console.log(summarizer.format);
markdown TypeError markdown

Ausgabe je nach Format sicher darstellen

// Minimaler, sicherer Markdown-Renderer nur für Aufzählungen
const renderBulletList = (markdown) => {
  const ul = document.createElement('ul');
  for (const line of markdown.split('\n')) {
    const text = line.replace(/^\s*[-*]\s+/, '').replace(/\*\*/g, '').trim();
    if (!text) continue;
    const li = document.createElement('li');
    li.textContent = text; // kein innerHTML → kein XSS
    ul.append(li);
  }
  return ul;
};

const showSummary = async (summarizer, text, target) => {
  const summary = await summarizer.summarize(text);
  target.replaceChildren();

  if (summarizer.format === 'markdown') {
    target.append(renderBulletList(summary));
  } else {
    target.textContent = summary;
  }
};

const summarizer = await Summarizer.create({ type: 'key-points', format: 'markdown' });
const article = document.querySelector('article').innerText;
await showSummary(summarizer, article, document.querySelector('#summary'));

// Wichtig · Fallstricke

  • Kompatibilität: Die Summarizer API gehört zu den eingebauten KI-APIs von Chrome (ab Version 138, nur Desktop, mit Hardware-Voraussetzungen) und ist experimentell. Firefox und Safari unterstützen sie derzeit nicht. Prüfe deshalb immer vorher mit 'Summarizer' in self und Summarizer.availability().
  • Nicht nachträglich änderbar: Wer ein anderes Format braucht, muss mit Summarizer.create() eine neue Instanz erzeugen. Nicht mehr benötigte Instanzen mit destroy() freigeben.
  • Keine Garantie: Auch bei "plain-text" kann das Sprachmodell gelegentlich Markdown-ähnliche Zeichen wie - oder * ausgeben. Bei "markdown" ist die Syntax nicht immer vollständig oder gültig.
  • Sicherheit: Die Ausgabe eines Modells ist nicht vertrauenswürdig. Markdown darf nie ungeprüft per innerHTML eingefügt werden. Nutze einen Markdown-Parser zusammen mit einem Sanitizer (z. B. DOMPurify) oder die Eigenschaft textContent. Sonst drohen XSS-Angriffe über manipulierte Eingabetexte (Prompt-Injection).
  • Die Summarizer API steht nur in sicheren Kontexten (HTTPS) zur Verfügung. In iframes muss sie über die Berechtigungsrichtlinie summarizer freigegeben werden.