Veröffentlicht: 12. März 2025, zuletzt aktualisiert: 28. Mai 2025
Erklärung | Web | Erweiterungen | Chrome-Status | Absicht |
---|---|---|---|---|
MDN | Ansicht | Intent to Ship |
Mit der Summarizer API können Sie Zusammenfassungen von Informationen in verschiedenen Längen und Formaten erstellen. Sie können die Funktion mit Gemini Nano in Chrome oder anderen in Browsern integrierten Sprachmodellen verwenden, um lange oder komplizierte Texte prägnant zusammenzufassen.
Wenn die Verarbeitung clientseitig erfolgt, können Sie Daten lokal verarbeiten. So lassen sich vertrauliche Daten schützen und die Verfügbarkeit kann skaliert werden. Das Kontextfenster ist jedoch viel kleiner als bei serverseitigen Modellen, was bedeutet, dass sehr große Dokumente möglicherweise nicht zusammengefasst werden können. Um dieses Problem zu beheben, können Sie die Zusammenfassung von Zusammenfassungen verwenden.
Was ist die Zusammenfassung von Zusammenfassungen?
Wenn Sie die Zusammenfassung von Zusammenfassungen verwenden möchten, teilen Sie den Eingabeinhalt an wichtigen Stellen auf und fassen Sie jeden Teil unabhängig zusammen. Sie können die Ausgaben der einzelnen Teile zusammenfügen und dann diesen zusammengefügten Text in einer endgültigen Zusammenfassung zusammenfassen.

Inhalte sinnvoll aufteilen
Es ist wichtig, dass Sie sich überlegen, wie Sie einen langen Text aufteilen, da verschiedene Strategien zu unterschiedlichen Ausgaben bei LLMs führen können. Im Idealfall sollte Text aufgeteilt werden, wenn sich das Thema ändert, z. B. in einem neuen Abschnitt eines Artikels oder in einem Absatz. Es ist wichtig, den Text nicht mitten in einem Wort oder Satz aufzuteilen. Daher können Sie die Zeichenanzahl nicht als einzige Richtlinie für die Aufteilung verwenden.
Dazu gibt es viele Möglichkeiten. Im folgenden Beispiel haben wir den Recursive Text Splitter aus LangChain.js verwendet, der Leistung und Ausgabequalität in Einklang bringt. Das sollte für die meisten Arbeitslasten funktionieren.
Beim Erstellen einer neuen Instanz gibt es zwei wichtige Parameter:
chunkSize
ist die maximale Anzahl von Zeichen, die in jedem Split zulässig ist.chunkOverlap
ist die Anzahl der Zeichen, die sich zwischen zwei aufeinanderfolgenden Aufteilungen überschneiden sollen. So wird sichergestellt, dass jeder Chunk einen Teil des Kontexts des vorherigen Chunks enthält.
Teilen Sie den Text mit splitText()
auf, um ein Array von Strings mit den einzelnen Chunks zurückzugeben.
Bei den meisten LLMs wird das Kontextfenster als Anzahl von Tokens und nicht als Anzahl von Zeichen angegeben. Ein Token enthält durchschnittlich 4 Zeichen. In unserem Beispiel umfasst chunkSize
3.000 Zeichen, was etwa 750 Tokens entspricht.
Tokenverfügbarkeit ermitteln
Wenn Sie ermitteln möchten, wie viele Tokens für eine Eingabe verfügbar sind, verwenden Sie die Methode measureInputUsage()
und das Attribut inputQuota
. In diesem Fall ist die Implementierung unbegrenzt, da Sie nicht wissen können, wie oft die Zusammenfassung ausgeführt wird, um den gesamten Text zu verarbeiten.
Zusammenfassungen für jeden Split generieren
Nachdem Sie festgelegt haben, wie der Inhalt aufgeteilt wird, können Sie mit der Summarizer API Zusammenfassungen für die einzelnen Teile erstellen.
Erstellen Sie eine Instanz des Summarizer mit der Funktion create()
. Um so viel Kontext wie möglich beizubehalten, haben wir den Parameter format
auf plain-text
, type
auf tldr
und length
auf long
festgelegt.
Generieren Sie dann die Zusammenfassung für jeden Split, der durch RecursiveCharacterTextSplitter
erstellt wurde, und verketten Sie die Ergebnisse zu einem neuen String.
Wir haben jede Zusammenfassung durch eine neue Zeile getrennt, um die Zusammenfassung für jeden Teil deutlich zu kennzeichnen.
Diese neue Zeile ist zwar nicht wichtig, wenn die Schleife nur einmal ausgeführt wird, aber sie ist nützlich, um zu ermitteln, wie jede Zusammenfassung zum Tokenwert für die endgültige Zusammenfassung beiträgt. In den meisten Fällen sollte diese Lösung für mittelange und lange Inhalte funktionieren.
Rekursive Zusammenfassung von Zusammenfassungen
Wenn Sie sehr viel Text haben, kann die Länge der zusammengefügten Zusammenfassung das verfügbare Kontextfenster überschreiten, was dazu führt, dass die Zusammenfassung fehlschlägt. Um dieses Problem zu beheben, können Sie die Zusammenfassungen rekursiv zusammenfassen.

Wir erfassen weiterhin die von RecursiveCharacterTextSplitter
generierten ersten Splits. Anschließend wird in der Funktion recursiveSummarizer()
der Zusammenfassungsprozess basierend auf der Zeichenlänge der verketteten Splits durchlaufen. Wenn die Zeichenlänge der Zusammenfassungen 3000
überschreitet, werden sie in fullSummaries
verkettet. Wenn das Limit nicht erreicht wird, wird die Zusammenfassung als partialSummaries
gespeichert.
Sobald alle Zusammenfassungen generiert wurden, werden die endgültigen Teilzusammenfassungen der vollständigen Zusammenfassung hinzugefügt. Wenn in fullSummaries
nur eine Zusammenfassung vorhanden ist, ist keine zusätzliche Rekursion erforderlich. Die Funktion gibt eine endgültige Zusammenfassung zurück. Wenn mehr als eine Zusammenfassung vorhanden ist, wird die Funktion wiederholt und die Teilergebnisse werden weiter zusammengefasst.
Wir haben diese Lösung mit dem Internet Relay Chat (IRC) RFC getestet, der 110.030 Zeichen und 17.560 Wörter umfasst. Die Summarizer API hat die folgende Zusammenfassung erstellt:
Internet Relay Chat (IRC) ist eine Möglichkeit, online in Echtzeit über Textnachrichten zu kommunizieren. Sie können in Kanälen chatten oder private Nachrichten senden und Befehle verwenden, um den Chat zu steuern und mit dem Server zu interagieren. Es ist wie ein Chatroom im Internet, in dem Sie Nachrichten eingeben und die Nachrichten anderer sofort sehen können.
Das ist ziemlich effektiv. Und es sind nur 309 Zeichen.
Beschränkungen
Mit der Technik „Zusammenfassung von Zusammenfassungen“ können Sie das Kontextfenster eines Client-seitigen Modells nutzen. Obwohl clientseitige KI viele Vorteile bietet, können folgende Probleme auftreten:
- Weniger genaue Zusammenfassungen: Bei der Rekursion kann sich der Zusammenfassungsprozess unendlich oft wiederholen und jede Zusammenfassung ist weiter vom Originaltext entfernt. Das bedeutet, dass das Modell möglicherweise eine Zusammenfassung erstellt, die zu oberflächlich ist, um nützlich zu sein.
- Langsamere Leistung: Das Erstellen jeder Zusammenfassung dauert eine Weile. Da es bei längeren Texten unendlich viele mögliche Zusammenfassungen gibt, kann dieser Ansatz mehrere Minuten dauern.
Hier finden Sie eine Demo des Summarizer-Tools und den vollständigen Quellcode.
Feedback geben
Verwenden Sie die Zusammenfassung von Zusammenfassungen-Technik mit unterschiedlich langen Eingabetexten, verschiedenen Aufteilungsgrößen und verschiedenen Überlappungslängen mit der Summarizer API.
- Wenn Sie Feedback zur Implementierung von Chrome geben möchten, melden Sie einen Fehler oder stellen Sie eine Anfrage zu einem Feature.
- Dokumentation auf MDN lesen
- Sie können sich mit dem Chrome AI-Team über den Zusammenfassungsprozess oder andere integrierte KI-Funktionen austauschen.