Signatur
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ürtextContent, 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
"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.');
}
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);
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 selfundSummarizer.availability(). - Nicht nachträglich änderbar: Wer ein anderes Format braucht, muss mit
Summarizer.create()eine neue Instanz erzeugen. Nicht mehr benötigte Instanzen mitdestroy()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
innerHTMLeingefügt werden. Nutze einen Markdown-Parser zusammen mit einem Sanitizer (z. B. DOMPurify) oder die EigenschafttextContent. 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
summarizerfreigegeben werden.