Data publikacji: 11 listopada 2024 r., ostatnia aktualizacja: 20 maja 2025 r.
Objaśnienie | Sieć | Rozszerzenia | Stan Chrome | Intencja |
---|---|---|---|---|
MDN | Wyświetl | Intencja dostawy |
Możesz zaoferować użytkownikom możliwość przekształcania długich artykułów, złożonych dokumentów, a nawet żywych rozmów na czacie w zwięzłe i przydatne podsumowania.
Interfejs Summarizer API może służyć do generowania różnych typów streszczeń o zróżnicowanej długości i formatach, takich jak zdania, akapity, wypunktowane listy itp. Uważamy, że ten interfejs API jest przydatny w takich sytuacjach:
- podsumowanie kluczowych informacji z artykułu lub rozmowy na czacie;
- sugerowanie tytułów i nagłówków artykułów;
- tworzenie zwięzłego i pełnego informacji podsumowania długiego tekstu.
- Generowanie zapowiedzi książki na podstawie recenzji.
Rozpocznij
Interfejs Summarizer API jest dostępny od wersji Chromium 138 stabilnej.
Wykonaj wykrywanie funkcji, aby sprawdzić, czy przeglądarka obsługuje interfejs Summarizer API.
if ('Summarizer' in self) {
// The Summarizer API is supported.
}
Wymagania sprzętowe
Interfejsy Language Detector i Translator API działają na komputerach tylko w Chrome.
Interfejsy Prompt API, Summarizer API, Writer API i Rewriter API działają w Chrome, gdy są spełnione te warunki:
- System operacyjny: Windows 10 lub 11, macOS 13 lub nowszy (Ventura lub nowszy) lub Linux. Chrome na Androida, iOS i ChromeOS nie są jeszcze obsługiwane przez nasze interfejsy API obsługiwane przez Gemini Nano.
- Pamięć: co najmniej 22 GB na woluminie zawierającym profil Chrome.
- GPU więcej niż 4 GB pamięci VRAM.
- Sieć: nieograniczona transmisja danych lub nielimitowane połączenie.
Te wymagania obowiązują w procesie tworzenia aplikacji oraz w przypadku użytkowników, którzy korzystają z Twoich funkcji.
Pobieranie modelu
Interfejs Summarizer API korzysta z modelu wytrenowanego pod kątem generowania wysokiej jakości streszczeń. Interfejs API jest wbudowany w Chrome, a Gemini Nano to model pobierany po raz pierwszy, gdy witryna używa tego interfejsu API.
Aby sprawdzić, czy model jest gotowy do użycia, wywołaj asynchroniczną funkcję Summarizer.availability()
. Zwraca obietnicę z tymi wartościami:
"unavailable"
oznacza, że implementacja nie obsługuje ��ądanych opcji."downloadable"
oznacza, że implementacja obsługuje żądane opcje, ale najpierw przeglądarka musi pobrać coś, np. model (w przypadku Chrome jest to Gemini Nano) lub dostosować model."downloading"
oznacza, że implementacja obsługuje żądane opcje, ale musi najpierw dokończyć bieżące pobieranie."available"
oznacza, że implementacja obsługuje żądane opcje i sumator może kontynuować.
Aby wywołać pobieranie modelu i utworzyć funkcję podsumowującą, wywołaj asynchroniczną funkcję Summarizer.create()
. Jeśli odpowiedź na availability()
to downloadable
lub downloading
, zalecamy sprawdzenie postępu pobierania. W ten sposób możesz poinformować użytkownika i wskazywać, że pobieranie może zająć trochę czasu, zanim nastąpi podsumowanie.
const summarizer = await Summarizer.create({
monitor(m) {
m.addEventListener('downloadprogress', (e) => {
console.log(`Downloaded ${e.loaded * 100}%`);
});
}
});
Funkcje interfejsu API
Funkcja create()
umożliwia skonfigurowanie nowego obiektu summarizer zgodnie z Twoimi potrzebami. Przyjmuje opcjonalny obiekt options
z tymi parametrami:
sharedContext
: dodatkowy udostępniony kontekst, który może pomóc narzędziu do streszczania.type
: typ podsumowania, którego dozwolone wartości tokey-points
(domyślnie),tldr
,teaser
iheadline
. Szczegółowe informacje znajdziesz w poniższej tabeli.format
: format podsumowania z dozwolonymi wartościamimarkdown
(domyślnie) iplain-text
.length
: długość podsumowania, z dozwolonymi wartościamishort
,medium
(domyślna) ilong
. Znaczenie tych długości zależy od żądanego typu danychtype
. Na przykład w przypadku przeglądarki Chrome krótkie podsumowanie najważniejszych informacji składa się z 3 punktów, a krótkie podsumowanie to jedno zdanie.
Po ustawieniu parametrów nie można ich zmienić. Jeśli chcesz zmodyfikować parametry, utwórz nowy obiekt summarizer.
Tabela poniżej przedstawia różne typy podsumowań i ich długości. Długości odnoszą się do maksymalnej możliwej wartości, ponieważ czasami wyniki mogą być krótsze.
Typ | Znaczenie | Długość | ||||||
---|---|---|---|---|---|---|---|---|
"tldr" |
Podsumowanie powinno być krótkie i właściwe, aby w sposób zwięzły i jasny przedstawić informacje. |
|
||||||
"teaser" |
Podsumowanie powinno skupiać się na najciekawszych lub najbardziej intrygujących częściach danych wejściowych, aby zachęcić czytelnika do przeczytania więcej. |
|
||||||
"key-points" |
Podsumowanie powinno zawierać najważniejsze punkty z danych wejściowych, przedstawione w postaci listy wypunktowanej. |
|
||||||
"headline" |
Podsumowanie powinno zawierać główną treść wpisu w jednym zdaniu w formacie nagłówka artykułu. |
|
Poniższy przykład pokazuje, jak zainicjować funkcję podsumowującą.
const options = {
sharedContext: 'This is a scientific article',
type: 'key-points',
format: 'markdown',
length: 'medium',
};
const availability = await Summarizer.availability();
let summarizer;
if (availability === 'unavailable') {
// The Summarizer API isn't usable.
return;
}
if (availability === 'available') {
// The Summarizer API can be used immediately .
summarizer = await Summarizer.create(options);
} else {
// The Summarizer API can be used after the model is downloaded.
summarizer = await Summarizer.create(options);
summarizer.addEventListener('downloadprogress', (e) => {
console.log(`Downloaded ${e.loaded * 100}%`);
});
await summarizer.ready;
}
Uruchamianie podsumowania
Istnieją 2 sposoby uruchomienia narzędzia do podsumowywania: strumieniowo i wsadowo (bez przesyłania strumieniowego).
Streszczenia zbiorcze
W przypadku zbiorczego podsumowywania model przetwarza dane wejściowe jako całość, a następnie generuje dane wyjściowe.
Aby uzyskać podsumowanie partii, wywołaj funkcję summarize()
. Pierwszy argument to tekst, który chcesz streścić. Drugi, opcjonalny argument jest obiektem z polem context
. W tym polu możesz dodać szczegóły, które mogą poprawić podsumowanie.
const longText = document.querySelector('article').innerHTML;
const summary = await summarizer.summarize(longText, {
context: 'This article is intended for a tech-savvy audience.',
});
Podsumowanie transmisji
Strumieniowanie podsumowań zapewnia wyniki w czasie rzeczywistym.
Dane wyjściowe są aktualizowane na bieżąco w miarę dodawania i dostosowywania danych wejściowych. Aby uzyskać podsumowanie strumieniowego przesyłania danych, wywołaj summarizeStreaming()
zamiast summarize()
.
const longText = document.querySelector('article').innerHTML;
const summary = await summarizer.summarizeStreaming(longText, {
context: 'This article is intended for junior developers.',
});
Prezentacja
Interfejs Summarizer API możesz wypróbować w Summarizer API Playground.
Standaryzacja
Pracujemy nad ujednoliceniem interfejsu Summarizer API, aby zapewnić zgodność między przeglądarkami.
Nasza propozycja interfejsu API uzyskała wsparcie społeczności i została przeniesiona do grupy społecznościowej W3C Web Incubator w celu dalszych dyskusji. Zespół Chrome poprosił o opinię W3C Technical Architecture Group oraz Mozilla i WebKit o ich stanowisko w sprawie standardów.
Aby wziąć udział w tworzeniu standardów, dołącz do grupy społecznościowej Web Incubator Community Group.
Podziel się opinią
Chcemy zobaczyć, co tworzysz za pomocą interfejsu Summarizer API. Udostępniaj nam swoje witryny i aplikacje internetowe na X, YouTube i LinkedIn.
Aby przekazać opinię na temat implementacji Chrome, prześlij raport o błędzie lub prośbę o dodanie funkcji.