Podsumowanie za pomocą wbudowanej AI

Data publikacji: 11 listopada 2024 r.

Objaśnienie Sieć Rozszerzenia Stan Chrome Podobne zamiary
GitHub Oznaczenia Testowanie wersji Origin Oznaczenia Testowanie wersji Origin Wyświetl Zamierzasz przeprowadzić eksperyment

Wyobraź sobie, że możesz zaoferować użytkownikom możliwość przekształcania długich artykułów, złożonych dokumentów, a nawet burzliwych rozmów na czacie w zwięzłe i przenikliwe podsumowania.

Interfejsu Summarizer API można używać 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 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 zapowiedzi książki na podstawie recenzji.

Rozpocznij

Dołącz do testowania origin interfejsu Summarizer API, które odbywa się w wersjach Chrome od 131 do 136. Testy wersji źródłowej umożliwiają oferowanie funkcji prawdziwym użytkownikom w źródle w Chrome.

Rejestracja w wersji próbnej origin

Aby zacząć korzystać z interfejsu Summarizer API:

  1. Potwierdź zasady Google dotyczące niedozwolonych zastosowań generatywnej AI.
  2. Przejdź do testowania origin interfejsu Summarizer API.
  3. Kliknij Zarejestruj się i wypełnij formularz.
    • W polu Źródło internetowe podaj źródło lub identyfikator rozszerzenia, chrome-extension://YOUR_EXTENSION_ID.
  4. Aby je przesłać, kliknij Zarejestruj.
  5. Skopiuj podany token i dodaj go do każdej strony internetowej w źródle lub pliku rozszerzenia, na której chcesz włączyć wersję próbną.
  6. Zacznij używać interfejsu Summarizer API.

Dowiedz się więcej o tym, jak rozpocząć okres próbny funkcji pochodzenia.

Ograniczenia w okresie próbnym

Podczas testowania origin interfejsu 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 większej liczby użytkowników.

Dodawanie obsługi w localhost

Aby uzyskać dostęp do interfejsu Summarizer API w localhost podczas testowania origin, musisz mieć Chrome Canary. Następnie wykonaj te czynności:

  1. Jedź do: chrome://flags/#summarization-api-for-gemini-nano.
  2. Kliknij Włączono.
  3. Kliknij Uruchom ponownie lub uruchom ponownie Chrome.

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: przeglądarka obsługuje interfejs Summarizer API, ale musi najpierw pobrać model.

Aby wywołać pobieranie modelu i utworzyć funkcję podsumowującą, wywołaj asynchroniczną funkcję ai.summarizer.create(). Jeśli odpowiedź na capabilities() to after-download, zalecamy sprawdzenie postępu pobierania. Dzięki temu możesz poinformować użytkownika, jeśli pobieranie trwa.

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() 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 podsumowywania.
  • type: typ podsumowania, którego dozwolone wartości to key-points (domyślnie), tl;dr, teaser i headline.
  • format: format podsumowania z dozwolonymi wartościami markdown (domyślnie) i plain-text.
  • length: długość podsumowania, z dozwolonymi wartościami short, medium (domyślna) i long. Znaczenie tych długości zależy od type. Na przykład w przypadku przeglądarki Chrome krótkie podsumowanie kluczowych punktów składa się z 3 punktów, a krótkie podsumowanie to jedno zdanie. Długie podsumowanie kluczowych punktów składa się z 7 punktów, a długie podsumowanie to 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 generowania podsumowania: z przesyłaniem strumieniowym i bez niego.

Podsumowanie bez strumieniowania

W przypadku podsumowywania niestrumieniowego model przetwarza dane wejściowe jako całość, a potem 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

Streszczony strumień danych zawiera 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 pożądanym działaniem.

Chcemy dostosować się do innych interfejsów API strumieniowania na platformie, w których segmenty są kolejnymi częściami 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.

Standardizacja

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 W3C Web Incubator Community Group w celu dalszej dyskusji. Zespół Chrome poprosił o opinię W3C Technical Architecture Group oraz MozillaWebKit o ich stanowisko w sprawie standardów.

Udział w badaniu i przesyłanie opinii

Zacznij testować interfejs Summarizer API, dołączając do testu wersji źródłowej i przesyłając opinię. Twoje opinie mogą mieć bezpośredni wpływ na sposób tworzenia i wdrażania przyszłych wersji tego interfejsu API oraz wszystkich wbudowanych interfejsów API AI.