Start · Sprachen · JavaScript · Referenz · Summarizer.create()

Summarizer.create()

Methode

Erstellt asynchron eine neue <code>Summarizer</code>-Instanz, mit der sich Texte über ein im Browser eingebautes KI-Modell zusammenfassen lassen.

seit JavaScript Chrome/Edge 138+ (Desktop); experimentell, nicht B Kategorie: webapi

Signatur

Summarizer.create(options)

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

Typ
Promise<Summarizer>
Beschreibung
Ein 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);
- Kernaussage 1 … - Kernaussage 2 … - Kernaussage 3 …

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);
});
Download: 0 % Download: 47 % Download: 100 %

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);
  }
}
Neue Browser-API ermöglicht lokale Textzusammenfassung