Signatur
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
"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);
}
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);
// Wichtig · Fallstricke
- Schreibgeschützt: Eine Zuweisung wie
summarizer.type = 'headline'ändert nichts (im Strict Mode gibt es einenTypeError). Für einen anderen Typ musst du eine neue Instanz mitSummarizer.create()erzeugen und die alte mitdestroy()freigeben. - Ungültige Werte: Wird
create()ein unbekannter Typ übergeben, schlägt der Aufruf mit einemTypeErrorfehl. 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 mitSummarizer.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.