Signatur
Beschreibung
Die statische Methode Summarizer.create() gehört zur Summarizer API, einem Teil der eingebauten KI-APIs des Browsers (in Chrome z. B. auf Basis von Gemini Nano). Sie gibt ein Promise zurück, das mit einem fertig konfigurierten Summarizer-Objekt erfüllt wird. Mit dessen Methoden summarize() und summarizeStreaming() fassen Sie anschließend Texte lokal auf dem Gerät zusammen, ohne Daten an einen Server zu schicken.
Über das Optionsobjekt legen Sie fest, wie zusammengefasst wird: die Art (type, z. B. Stichpunkte oder Überschrift), das Ausgabeformat (format), die Länge (length) sowie einen gemeinsamen Kontext (sharedContext), der für alle späteren Aufrufe gilt. Diese Einstellungen lassen sich nach dem Erstellen nicht mehr ändern – für eine andere Konfiguration erzeugen Sie eine neue Instanz.
Ist das Modell noch nicht auf dem Gerät vorhanden, startet create() den Download. Deshalb sollten Sie vorher mit Summarizer.availability() prüfen, ob das Modell "available", "downloadable", "downloading" oder "unavailable" ist. Den Fortschritt des Downloads verfolgen Sie über die Option monitor und das Ereignis downloadprogress. Muss ein Download ausgelöst werden, ist eine Benutzeraktivierung (z. B. ein Klick) erforderlich.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $options | Object | {} | Konfigurationsobjekt für den Summarizer. Alle Eigenschaften sind optional. |
| $options.type | "key-points" | "tldr" | "teaser" | "headline" | "key-points" | Art der Zusammenfassung: Stichpunkte, knappe Kurzfassung, neugierig machender Anreißer oder Überschrift. |
| $options.format | "markdown" | "plain-text" | "markdown" | Ausgabeformat der Zusammenfassung. |
| $options.length | "short" | "medium" | "long" | "short" | Gewünschte Länge; die genaue Bedeutung hängt von type ab (z. B. Anzahl der Stichpunkte oder Sätze). |
| $options.sharedContext | string | Hintergrundinformation, die bei allen Zusammenfassungen dieser Instanz berücksichtigt wird, z. B. Zielgruppe oder Textart. | |
| $options.expectedInputLanguages | string[] | BCP-47-Sprachcodes der zu erwartenden Eingabetexte, z. B. ["de", "en"]. |
|
| $options.expectedContextLanguages | string[] | Erwartete Sprachen von sharedContext und dem context einzelner Aufrufe. |
|
| $options.outputLanguage | string | Sprache, in der die Zusammenfassung ausgegeben werden soll, z. B. "de". |
|
| $options.monitor | (monitor: CreateMonitor) => void | Rückruffunktion, die ein CreateMonitor-Objekt erhält; darauf lässt sich das Ereignis downloadprogress abonnieren. |
|
| $options.signal | AbortSignal | Signal, mit dem sich das Erstellen (inklusive Modell-Download) abbrechen lässt. |
Rückgabewert
Promise, das mit einer neuen Summarizer-Instanz erfüllt wird, sobald das Modell geladen und einsatzbereit ist. Bei Fehlern wird es mit einer DOMException abgelehnt.Beispiele
Verfügbarkeit prüfen und Summarizer erstellen
const zusammenfassen = async (text) => {
if (!('Summarizer' in self)) {
console.log('Summarizer API wird nicht unterstützt.');
return;
}
const optionen = {
type: 'key-points',
format: 'plain-text',
length: 'short',
expectedInputLanguages: ['de'],
outputLanguage: 'de'
};
const status = await Summarizer.availability(optionen);
if (status === 'unavailable') {
console.log('Modell auf diesem Gerät nicht verfügbar.');
return;
}
const summarizer = await Summarizer.create(optionen);
const ergebnis = await summarizer.summarize(text);
console.log(ergebnis);
summarizer.destroy();
};
zusammenfassen(document.querySelector('article').innerText);
Modell-Download mit Fortschrittsanzeige nach Klick
const button = document.querySelector('#zusammenfassen');
const fortschritt = document.querySelector('progress');
button.addEventListener('click', async () => {
// Klick liefert die nötige Benutzeraktivierung für den Download
const summarizer = await Summarizer.create({
type: 'tldr',
length: 'medium',
sharedContext: 'Technischer Blogartikel für Webentwickler',
monitor(m) {
m.addEventListener('downloadprogress', (e) => {
fortschritt.value = e.loaded; // Wert zwischen 0 und 1
console.log(`Download: ${Math.round(e.loaded * 100)} %`);
});
}
});
const text = document.querySelector('#inhalt').textContent;
document.querySelector('#ausgabe').textContent = await summarizer.summarize(text);
});
Erstellen abbrechen und Überschrift streamen
const controller = new AbortController();
document.querySelector('#abbrechen').onclick = () => controller.abort();
try {
const summarizer = await Summarizer.create({
type: 'headline',
format: 'plain-text',
signal: controller.signal
});
const stream = summarizer.summarizeStreaming(
document.body.innerText,
{ context: 'Nachrichtenartikel', signal: controller.signal }
);
let ueberschrift = '';
for await (const teil of stream) {
ueberschrift += teil;
}
console.log(ueberschrift);
} catch (err) {
if (err.name === 'AbortError') {
console.log('Vom Benutzer abgebrochen.');
} else {
console.error(err.name, err.message);
}
}