Podsumowania w Chrome z wbudowaną AI

Data publikacji: 11 listopada 2024 r.

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 teasera książki na podstawie recenzji.

Dostępność

Rejestrowanie się 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 przesłać dane, 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.

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 wszystkich.

Dodawanie obsługi 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. Otwórz Chrome Canary na jednej z tych platform: Windows, Mac lub Linux.
  2. Jedź do: chrome://flags/#summarization-api-for-gemini-nano.
  3. Kliknij Włączono.
  4. 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 wynikać z różnych powodów, np. z niewystarczającej 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 zajmuje 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() 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 generowania podsumowania.
  • type: typ podsumowania, z dozwolonymi wartościami key-points (domyślna), tl;dr, teaserheadline.
  • 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 Chrome krótkie podsumowanie kluczowych informacji składa się z 3 punktów, a krótkie podsumowanie – z 1 zdania. Długie podsumowanie kluczowych informacji składa się z 7 punktów, a długie podsumowanie – z 1 akapitu.

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 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

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 przesyłania strumieniowego 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.

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ł W3C Technical Architecture Group o opinię, a także MozillaWebKit o ich stanowisko w sprawie standardów.

Udział w testach i przesyłanie opinii

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.