Data publikacji: 11 listopada 2024 r.
Wyobraź sobie, że możesz zaoferować użytkownikom możliwość tworzenia długich artykułów, złożonych dokumentów, a nawet ożywionych rozmów na czacie w formie zwięzłych i wnikliwych podsumowań.
Interfejs Summarizer API może służyć do generowania różnego rodzaju podsumowań o różnej długości i formatach, takich jak zdania, akapity, listy punktowane itp. Uważamy, że ten interfejs API jest przydatny w tych sytuacjach:
- Podsumowanie najważniejszych 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 zwiastuna książki na podstawie recenzji książki.
Dostępność
- Dołącz do testowania origin interfejsu Summarizer API, które odbywa się w wersjach Chrome od 131 do 136, aby przetestować interfejs API z udziałem prawdziwych użytkowników w środowisku produkcyjnym. Testy wersji źródłowej umożliwiają korzystanie z funkcji wszystkim użytkownikom w źródle w Chrome. Dowiedz się, jak zacząć korzystać z testów pochodzenia.
- Chociaż mogą występować limity korzystania, możesz zintegrować te funkcje, aby przetestować je w produkcji i zebrać opinie użytkowników. Celem jest informowanie o kolejnych wersjach tego interfejsu API, ponieważ pracujemy nad zwiększeniem jego dostępności.
- Postępuj zgodnie z naszą implementacją na stronie Stan Chrome.
- Proponowana usługa API do podsumowywania jest częścią zestawu interfejsów API do pisania i jest otwarta na dyskusję.
- Dołącz do programu wczesnej wersji zapoznawczej, aby wcześniej zapoznać się z nowymi wbudowanymi interfejsami API AI i uzyskać dostęp do dyskusji na naszej liście mailingowej.
Ograniczenia w okresie próbnym
Podczas testowania origin interfejs Summarizer API obsługuje tylko streszczanie tekstów w języku angielskim, ponieważ jakość modelu została dokładnie przetestowana tylko w przypadku treści w tym języku. Zamierzamy znieść to ograniczenie, gdy przetestujemy dodatkowe języki pod kątem jakości i bezpieczeństwa, a interfejs API będzie dostępny dla wszystkich.
Korzystanie z interfejsu Summarizer API
Najpierw uruchom wykrywanie funkcji, aby sprawdzić, czy przeglądarka obsługuje interfejs Summarizer API.
if ('ai' in self && 'summarizer' in self.ai) {
// The Summarizer API is supported.
}
Pobieranie modelu
Interfejs Summarizer API korzysta z potężnego modelu AI, który został przeszkolony do generowania wysokiej jakości streszczeń. Chociaż interfejs API jest wbudowany w Chrome, model jest pobierany osobno przy pierwszym użyciu interfejsu API przez witrynę.
Aby sprawdzić, czy model jest gotowy do użycia, wywołaj asynchroniczną funkcję ai.summarizer.capabilities()
. Zwraca obiekt AISummarizerCapabilities
z polem available
, które może przyjmować 3 możliwe wartości:
no
: bieżąca przeglądarka obsługuje interfejs Summarizer API, ale nie można go obecnie używać. Może to być spowodowane wieloma czynnikami, np. niewystarczającą ilością wolnego miejsca na dysku do pobrania modelu.readily
: przeglądarka obsługuje interfejs Summarizer API i można go od razu używać.after-download
: bieżąca przeglądarka obsługuje interfejs Summarizer API, ale najpierw musisz pobrać model.
Aby aktywować pobieranie modelu i utworzyć podsumowanie, wywołaj funkcję asynchroniczną ai.summarizer.create()
. Jeśli odpowiedź na capabilities()
to after-download
, zalecamy sprawdzenie postępu pobierania. W ten sposób możesz poinformować użytkownika, jeśli pobieranie zajęło dużo czasu.
const summarizer = await ai.summarizer.create({
monitor(m) {
m.addEventListener('downloadprogress', (e) => {
console.log(`Downloaded ${e.loaded} of ${e.total} bytes.`);
});
}
});
Funkcje interfejsu API
Funkcja create()
pozwala skonfigurować nowy obiekt podsumowania zgodnie z potrzebami. Przyjmuje opcjonalny obiekt options
z tymi parametrami:
sharedContext
: dodatkowy udostępniony kontekst, który może ułatwić streszczenie.type
: typ podsumowania, którego dozwolone wartości tokey-points
(domyślnie),tl;dr
,teaser
iheadline
.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 może się różnić w zależności od żądanegotype
. Na przykład w przypadku Chrome krótkie podsumowanie kluczowych informacji składa się z 3 punktów, a krótkie podsumowanie to jedno zdanie. Długie podsumowanie kluczowych informacji składa się z 7 punktów, a długie podsumowanie to jeden akapit.
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 available = (await self.ai.summarizer.capabilities()).available;
let summarizer;
if (available === 'no') {
// The Summarizer API isn't usable.
return;
}
if (available === 'readily') {
// The Summarizer API can be used immediately .
summarizer = await self.ai.summarizer.create(options);
} else {
// The Summarizer API can be used after the model is downloaded.
summarizer = await self.ai.summarizer.create(options);
summarizer.addEventListener('downloadprogress', (e) => {
console.log(e.loaded, e.total);
});
await summarizer.ready;
}
Uruchamianie podsumowania
Istnieją 2 sposoby uruchomienia narzędzia do podsumowywania: z przesyłaniem strumieniowym i bez niego.
Podsumowanie bez strumieniowania
W przypadku podsumowywania niestrumieniowego model przetwarza dane wejściowe jako całość, a następnie generuje dane wyjściowe.
Aby uzyskać podsumowanie niestrumieniowe, wywołaj asynchroniczną funkcję summarize()
. Pierwszym argumentem funkcji jest tekst, który chcesz podsumować. Drugi, opcjonalny argument to obiekt 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
Podsumowywanie strumieniowania zapewnia wyniki w czasie rzeczywistym. Dane wyjściowe są aktualizowane na bieżąco w miarę dodawania i dostosowywania danych wejściowych.
Aby uzyskać podsumowanie strumieniowania, wywołaj funkcję summarizeStreaming()
. Następnie przejdź przez dostępne segmenty tekstu w strumieniach.
let result = '';
let previousChunk = '';
for await (const chunk of stream) {
const newChunk = chunk.startsWith(previousChunk)
? chunk.slice(previousChunk.length) : chunk;
console.log(newChunk);
result += newChunk;
previousChunk = chunk;
}
console.log(result);
Funkcja summarizeStreaming()
zwraca ReadableStream
, w którym segmenty odpowiedzi nakładają się na siebie. Oznacza to, że każda odpowiedź zawiera całe podsumowanie wygenerowane do tego momentu, a nie tylko następny segment, co nie jest zamierzone.
Chcemy dostosować się do innych interfejsów API do strumieniowego przesyłania danych na platformie, w których segmenty to kolejne części jednego długiego strumienia. Aby osiągnąć zamierzone zachowanie, możesz wdrożyć te rozwiązania:
let result = '';
let previousLength = 0;
for await (const segment of stream) {
const newContent = segment.slice(previousLength);
console.log(newContent);
previousLength = segment.length;
result += newContent;
}
console.log(result);
Prezentacja
Interfejs Summarizer API możesz wypróbować w Summarizer API Playground.
Standaryzacja
Pracujemy nad ujednoliceniem interfejsu Summarizer API, aby zapewnić zgodność z różnymi przeglądarkami.
Nasza propozycja interfejsu API otrzymała poparcie społeczności i została przeniesiona do grupy społeczności W3C Web Incubator w celu dalszego dyskusji. Zespół Chrome poprosił W3C Technical Architecture Group o opinię, a także Mozilla i WebKit o ich stanowisko w sprawie standardów.
Weź udział i podziel się opinią
Zacznij testować interfejs Summarizer API, dołączając do testu wersji źródłowej i przesyłając opinię. Twoja opinia może mieć bezpośredni wpływ na to, jak tworzymy i wdrażamy przyszłe wersje tego interfejsu API oraz wszystkie wbudowane interfejsy API AI.
- Aby przesłać opinię na temat implementacji Chrome, prześlij raport o błędzie lub prośbę o dodanie funkcji.
- Porozmawiaj o projektowaniu interfejsu Summarizer API na GitHubie, komentując istniejący problem lub otwierając nowy.
- Aby wziąć udział w pracach nad standardami, dołącz do grupy społecznościowej Web Incubator.