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 consentitikey-points
(predefinito),tl;dr
,teaser
eheadline
.format
: il formato del riepilogo, con i valori consentitimarkdown
(predefinito) eplain-text
.length
: la lunghezza del riepilogo, con i valori consentitishort
,medium
(predefinito) elong
. Il significato di queste lunghezze varia a seconda deltype
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.
- Per feedback sull'implementazione di Chrome, invia una segnalazione di bug o una richiesta di funzionalità.
- Parla della progettazione dell'API Summaryr in GitHub commentando un problema esistente o aprine uno nuovo.
- Partecipa al progetto relativo agli standard entrando a far parte del gruppo della community Web Incubator.