Samenvatting in Chrome met ingebouwde AI

Gepubliceerd: 11 november 2024

Stel u voor dat u uw gebruikers de mogelijkheid zou kunnen bieden om lange artikelen, complexe documenten of zelfs levendige chatgesprekken om te zetten in beknopte en verhelderende samenvattingen.

De Summarizer API kan worden gebruikt om verschillende soorten samenvattingen te genereren in verschillende lengtes en formaten, zoals zinnen, alinea's, lijsten met opsommingstekens en meer. Wij zijn van mening dat deze API nuttig is in de volgende scenario's:

  • Het samenvatten van de belangrijkste punten van een artikel of een chatgesprek.
  • Titels en koppen voor artikelen voorstellen.
  • Een beknopte en informatieve samenvatting maken van een lange tekst.
  • Op basis van een boekrecensie een teaser voor een boek genereren.

Beschikbaarheid

Meld u aan voor de origin-proefperiode

Volg deze stappen om de Summarizer API te gaan gebruiken:

  1. Erken het beleid van Google inzake verboden gebruik van generatieve AI .
  2. Ga naar de Summarizer API Origin-proefversie .
  3. Klik op Registreren en vul het formulier in.
    • Geef in het veld Weboorsprong uw herkomst- of extensie-ID op: chrome-extension://YOUR_EXTENSION_ID .
  4. Om te verzenden klikt u op Registreren .
  5. Kopieer het verstrekte token en voeg het toe aan elke webpagina op uw oorsprong of bestand voor uw extensie waarop u de proefversie wilt inschakelen.
  6. Begin met het gebruik van de Summarizer-API .

Lees meer over hoe u aan de slag kunt gaan met origin-proeven .

Beperkingen tijdens het herkomstproces

Tijdens de origin-proefperiode ondersteunt de Summarizer API alleen het samenvatten van Engelse teksten, omdat de modelkwaliteit alleen grondig werd getest op Engelse inhoud. We zijn van plan deze beperking op te heffen zodra we aanvullende talen op kwaliteit en veiligheid hebben getest en de API algemeen beschikbaar is.

Voeg ondersteuning toe aan localhost

Om tijdens de origin-proefperiode toegang te krijgen tot de Summarizer API op localhost , moet je Chrome Canary hebben. Volg vervolgens deze stappen:

  1. Open Chrome Canary op een van deze platforms: Windows, Mac of Linux.
  2. Ga naar chrome://flags/#summarization-api-for-gemini-nano .
  3. Selecteer Ingeschakeld .
  4. Klik op Opnieuw starten of start Chrome opnieuw.

Gebruik de Summarizer-API

Voer eerst functiedetectie uit om te zien of de browser de Summarizer API ondersteunt.

if ('ai' in self && 'summarizer' in self.ai) {
  // The Summarizer API is supported.
}

Model downloaden

De Summarizer API maakt gebruik van een krachtig AI-model dat is getraind om samenvattingen van hoge kwaliteit te genereren. Hoewel de API in Chrome is ingebouwd, wordt het model afzonderlijk gedownload wanneer een website de API voor het eerst gebruikt.

Om te bepalen of het model klaar is voor gebruik, roept u de asynchrone functie ai.summarizer.capabilities() aan. Het retourneert een AISummarizerCapabilities -object met een available veld dat drie mogelijke waarden kan aannemen:

  • no : De huidige browser ondersteunt de Summarizer API, maar kan momenteel niet worden gebruikt. Dit kan een aantal redenen hebben, zoals onvoldoende beschikbare schijfruimte om het model te downloaden.
  • readily : De huidige browser ondersteunt de Summarizer API en kan meteen worden gebruikt.
  • after-download : De huidige browser ondersteunt de Summarizer API, maar moet eerst het model downloaden.

Om het downloaden van het model te activeren en de samenvatter te maken, roept u de asynchrone functie ai.summarizer.create() aan. Als het antwoord op capabilities() after-download was, kunt u het beste luisteren naar de downloadvoortgang. Op deze manier kunt u de gebruiker informeren als het downloaden tijd kost.

const summarizer = await ai.summarizer.create({
  monitor(m) {
    m.addEventListener('downloadprogress', (e) => {
      console.log(`Downloaded ${e.loaded} of ${e.total} bytes.`);
    });
  }
});

API-functies

Met de create() functie kunt u een nieuw samenvattend object naar uw wensen configureren. Er is een optioneel options voor nodig met de volgende parameters:

  • sharedContext : Extra gedeelde context die de samenvatter kan helpen.
  • type : Het type samenvatting, met de toegestane waarden key-points (standaard), tl;dr , teaser en headline .
  • format : Het formaat van de samenvatting, met de toegestane waarden markdown (standaard) en plain-text .
  • length : De lengte van de samenvatting, met de toegestane waarden short , medium (standaard) en long . De betekenis van deze lengtes varieert afhankelijk van het gevraagde type . In de implementatie van Chrome bestaat een korte samenvatting van de belangrijkste punten bijvoorbeeld uit drie opsommingstekens, en een korte samenvatting uit één zin; een lange samenvatting van de belangrijkste punten bestaat uit zeven opsommingstekens, en een lange samenvatting uit een paragraaf.

In het volgende voorbeeld ziet u hoe u de samenvatter initialiseert.

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

Voer de samenvatting uit

Er zijn twee manieren om de samenvatting uit te voeren: streaming en niet-streaming.

Niet-streaming samenvatting

Bij niet-streaming-samenvatting verwerkt het model de invoer als geheel en produceert vervolgens de uitvoer.

Om een ​​niet-streaming samenvatting te krijgen, roept u de asynchrone summarize() aan. Het eerste argument voor de functie is de tekst die u wilt samenvatten. Het tweede, optionele argument is een object met een context . In dit veld kunt u achtergronddetails toevoegen die de samenvatting kunnen verbeteren.

const longText = document.querySelector('article').innerHTML;
const summary = await summarizer.summarize(longText, {
  context: 'This article is intended for a tech-savvy audience.',
});

Samenvatting van streaming

Streaming-samenvatting biedt resultaten in realtime. De uitvoer wordt voortdurend bijgewerkt naarmate de invoer wordt toegevoegd en aangepast.

Om een ​​streamingsamenvatting te krijgen, roept u de summarizeStreaming() functie aan. Herhaal vervolgens de beschikbare tekstsegmenten in de stream.

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

summarizeStreaming() retourneert een ReadableStream , waarin de antwoordsegmenten achtereenvolgens op elkaar voortbouwen. Dit betekent dat elk antwoord de volledige samenvatting bevat die tot dat moment is gegenereerd, en niet alleen het volgende segment, wat niet het beoogde gedrag is.

We zijn van plan om ons aan te passen aan andere streaming-API's op het platform, waarbij de segmenten opeenvolgende stukken van één lange stream zijn. Om het beoogde gedrag te bereiken, kunt u voorlopig het volgende implementeren:

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

Demo

U kunt de Summarizer API uitproberen in de Summarizer API Playground .

Standaardisatie-inspanning

We werken aan het standaardiseren van de Summarizer API, om compatibiliteit tussen browsers te garanderen.

Ons API-voorstel kreeg steun van de gemeenschap en is voor verdere discussie verplaatst naar de W3C Web Incubator Community Group . Het Chrome-team vroeg om feedback van de W3C Technical Architecture Group en vroeg Mozilla en WebKit naar hun standaardposities.

Doe mee en deel feedback

Begin nu met het testen van de Summarizer API door deel te nemen aan de origin-proefperiode en deel uw feedback. Uw input kan rechtstreeks van invloed zijn op de manier waarop we toekomstige versies van deze API en alle ingebouwde AI API's bouwen en implementeren.