Riepilogo in Chrome con l'AI integrata

Data di pubblicazione: 11 novembre 2024

Immagina di poter offrire ai tuoi utenti la possibilità di riassumere articoli lunghi, documenti complessi o persino conversazioni vivaci in chat in modo conciso e perspicace.

L'API Summarizer può essere utilizzata per generare diversi tipi di riepiloghi in vari formati e lunghezze, ad esempio frasi, paragrafi, elenchi puntati e altro ancora. Riteniamo che questa API sia utile nei seguenti scenari:

  • Riassumere i punti chiave di un articolo o di una conversazione in chat.
  • Suggerire titoli e intestazioni per gli articoli.
  • Creare un riepilogo conciso e informativo di un testo lungo.
  • Generazione di un teaser per un libro basato su una recensione.

Disponibilità

Registrati per la prova dell'origine

Per iniziare a utilizzare l'API Summarizer:

  1. Accetta le Norme relative agli usi vietati dell'IA generativa di Google.
  2. Vai alla prova dell'origine dell'API Summarizer.
  3. Fai clic su Registrati e compila il modulo.
    • Nel campo Origine web, fornisci l'origine o l'ID estensione, chrome-extension://YOUR_EXTENSION_ID.
  4. Per inviare, fai clic su Registrati.
  5. Copia il token fornito e aggiungilo a ogni pagina web dell'origine o del file per l'estensione su cui vuoi attivare la prova.
  6. Inizia a utilizzare l'API Summarizer.

Scopri di più su come iniziare a utilizzare le prove dell'origine.

Limitazioni durante la prova dell'origine

Durante la prova dell'origine, l'API Summarizer supporta solo il riassunto di testi in inglese, poiché la qualità del modello è stata testata approfonditamente solo su contenuti in inglese. Abbiamo intenzione di rimuovere questa limitazione dopo aver testato altre lingue per verificarne la qualità e la sicurezza e quando l'API sarà disponibile a livello globale.

Aggiungere il supporto a localhost

Per accedere all'API Summarizer su localhost durante la prova dell'origine, devi avere Chrome Canary. Poi segui questi passaggi:

  1. Apri Chrome Canary su una di queste piattaforme: Windows, Mac o Linux.
  2. Vai a chrome://flags/#summarization-api-for-gemini-nano.
  3. Seleziona Attivata.
  4. Fai clic su Riavvia o riavvia Chrome.

Utilizzare l'API Summarizer

Innanzitutto, esegui il rilevamento delle funzionalità per verificare se il browser supporta l'API Summarizer.

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

Download del modello

L'API Summarizer utilizza un potente modello di IA addestrato per generare riepiloghi di alta qualità. Sebbene l'API sia integrata in Chrome, il modello viene scaricato separatamente la prima volta che un sito web utilizza l'API.

Per determinare se il modello è pronto per l'uso, chiama la funzione asincrona ai.summarizer.capabilities(). Restituisce un oggetto AISummarizerCapabilities con un campo available che può assumere tre possibili valori:

  • no: il browser corrente supporta l'API Summarizer, ma al momento non può essere utilizzato. Ciò potrebbe essere dovuto a una serie di motivi, ad esempio a uno spazio su disco disponibile insufficiente per scaricare il modello.
  • readily: il browser corrente supporta l'API Summarizer e può essere utilizzato subito.
  • after-download: il browser corrente supporta l'API Summarizer, ma deve prima scaricare il modello.

Per attivare il download del modello e creare il riepilogatore, chiama la funzione asincrona ai.summarizer.create(). Se la risposta a capabilities() è stata after-download, è buona norma ascoltare l'avanzamento del download. In questo modo, puoi informare l'utente nel caso in cui il download richieda tempo.

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

Funzioni API

La funzione create() consente di configurare un nuovo oggetto di riepilogo in base alle tue esigenze. Accetta un oggetto options facoltativo con i seguenti parametri:

  • sharedContext: contesto condiviso aggiuntivo che può aiutare il riassunto.
  • type: il tipo di riepilogo, con i valori consentiti key-points (predefinito), tl;dr, teaser e headline.
  • format: il formato del riepilogo, con i valori consentiti markdown (predefinito) e plain-text.
  • length: la lunghezza del riepilogo, con i valori consentiti short, medium (predefinito) e long. Il significato di queste lunghezze varia a seconda del type richiesto. Ad esempio, nell'implementazione di Chrome, un breve riepilogo dei punti chiave è costituito da tre punti elenco e un riepilogo breve è costituito da una frase; un riepilogo dei punti chiave lungo è costituito da sette punti elenco e un riepilogo lungo è costituito da un paragrafo.

L'esempio seguente mostra come inizializzare il riepilogatore.

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

Esegui il riepilogatore

Esistono due modi per eseguire il riepilogatore: in streaming e non in streaming.

Riepilogo non in streaming

Con il riepilogo non in streaming, il modello elabora l'input nel suo complesso e poi produce l'output.

Per ottenere un riepilogo non in streaming, chiama la funzione summarize() asincrona del riepilogatore. Il primo argomento della funzione è il testo da riepilogare. Il secondo argomento facoltativo è un oggetto con un campo context. Questo campo ti consente di aggiungere dettagli di contesto che potrebbero migliorare il riepilogo.

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

Riepilogo dello streaming

Il riepilogo in streaming offre risultati in tempo reale. L'output si aggiorna continuamente man mano che l'input viene aggiunto e modificato.

Per ottenere un riepilogo dello streaming, chiama la funzione summarizeStreaming() del riepilogatore. Quindi, esegui l'iterazione sui segmenti di testo disponibili nello 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() restituisce un ReadableStream, in cui i segmenti di risposta si basano l'uno sull'altro in modo sequenziale. Ciò significa che ogni risposta contiene l'intero riepilogo generato fino a quel momento, non solo il segmento successivo, che non è il comportamento previsto.

Abbiamo intenzione di allinearci ad altre API di streaming sulla piattaforma, in cui i segmenti sono parti successive di un singolo stream lungo. Per il momento, per ottenere il comportamento previsto, puoi implementare quanto segue:

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

Puoi provare l'API Summarizer nel playground dell'API Summarizer.

Impegno di standardizzazione

Stiamo lavorando per standardizzare l'API Summarizer, in modo da garantire la compatibilità tra browser.

La nostra proposta di API ha ricevuto il supporto della community ed è stata trasferita al gruppo della community W3C Web Incubator per ulteriori discussioni. Il team di Chrome ha richiesto un feedback al W3C Technical Architecture Group e a Mozilla e WebKit per conoscere le loro posizioni in merito agli standard.

Partecipare e condividere feedback

Inizia subito a testare l'API Summarizer partecipando alla prova dell'origine e condividi il tuo feedback. Il tuo feedback può influire direttamente sulla modalità di creazione e implementazione delle versioni future di questa API e di tutte le API di IA integrate.