Podsumowanie za pomocą wbudowanej AI

Data publikacji: 11 listopada 2024 r.

Objaśnienie Sieć Rozszerzenia Stan Chrome Intencja
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, listy wypunktowane 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

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, wykonaj te czynności:

  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ódłowej witrynie lub pliku rozszerzenia, w 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 wszystkich.

Dodawanie obsługi w przypadku localhost

Aby uzyskać dostęp do interfejsu Summarizer API w localhost podczas wersji próbnej 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.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 zanim będzie można cokolwiek zrobić, musi pobrać coś (np. model uczenia maszynowego lub dostosowanie).
  • "downloading" oznacza, że implementacja obsługuje żądane opcje, ale musi najpierw dokończyć bieżące pobieranie.
  • "available" oznacza, że implementacja obsługuje żądane opcje bez konieczności pobierania nowych plików.

Aby wywołać pobieranie modelu i utworzyć funkcję podsumowującą, wywołaj asynchroniczną funkcję ai.summarizer.create(). Jeśli odpowiedź na availability() to downloadable lub downloading, najlepiej poczekać na zakończenie 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 * 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, 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 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ę do podsumowywania.

const options = {
  sharedContext: 'This is a scientific article',
  type: 'key-points',
  format: 'markdown',
  length: 'medium',
};

const availability = await self.ai.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 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(`Downloaded ${e.loaded * 100}%`);
  });
  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 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.

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