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.
  • Creazione di un riassunto conciso e informativo di un testo lungo.
  • Generazione di un teaser per un libro basato su una recensione.

Disponibilità

  • Partecipa alla prova dell'origine dell'API Summarizer, in esecuzione da Chrome 131 a Chrome 136, per testare l'API con utenti reali in produzione. Le prove dell'origine attivano la funzionalità per tutti gli utenti dell'origine su Chrome. Scopri come iniziare a utilizzare le prove delle origini.
    • Sebbene possano esserci limiti di utilizzo, puoi integrare queste funzionalità per i test in tempo reale e raccogliere il feedback degli utenti. L'obiettivo è fornire informazioni sulle future versioni di questa API, man mano che lavoriamo per una maggiore disponibilità.
  • Segui la nostra implementazione nello stato di Chrome.
  • La proposta dell'API Summarizer fa parte di una suite di API di scrittura ed è aperta alla discussione.
  • Partecipa al programma di anteprima per dare un'occhiata in anteprima alle nuove API di IA integrate e accedere alla discussione sulla nostra mailing list.

Limitazioni durante la prova dell'origine

Durante la prova dell'origine, l'API Summaryr supporta solo il riassunto dei testi in inglese, poiché la qualità del modello è stata testata accuratamente solo sui 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.

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ò può 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. È necessario 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 elenchi puntati e un breve riepilogo è costituito da una volta; un riepilogo dei punti chiave lungo è costituito da sette elenchi puntati 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 generatore di riassunti: 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 riassunto dei flussi di dati 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 dei 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 accumulano uno sull'altro. 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 Summaryr nel Playground dell'API Summaryr.

Impegno di standardizzazione

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

La nostra proposta per le API ha ricevuto l'assistenza dalla community ed è stata trasferita nel W3C Web Incubator Community Group 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.