Data di pubblicazione: 12 marzo 2025
Spiegazione | Web | Estensioni | Stato di Chrome | Intenzione |
---|---|---|---|---|
GitHub | Visualizza | Intento di partecipare a un esperimento |
L'API Summarizer ti aiuta a generare riepiloghi di informazioni in vari formati e lunghezze. Utilizzalo con Gemini Nano in Chrome per eseguire deduzioni lato client e spiegare in modo conciso testi complicati o lunghi.
Se eseguita lato client, puoi lavorare con i dati localmente, il che ti consente di mantenere al sicuro i dati sensibili e di offrire disponibilità su larga scala. Tuttavia, la finestra di contesto è molto più piccola rispetto ai modelli lato server, il che significa che i documenti molto grandi potrebbero essere difficili da riassumere. Per risolvere questo problema, puoi utilizzare la tecnica del riepilogo dei riepiloghi.
Che cos'è il riepilogo dei riepiloghi?
Per utilizzare la tecnica del riepilogo dei riepiloghi, suddividi i contenuti di input in punti chiave, quindi riassumi ogni parte in modo indipendente. Puoi concatenare gli output di ogni parte, quindi riassumere questo testo concatenato in un riepilogo finale.

Suddividi i contenuti in modo ponderato
È importante considerare come suddividere un lungo testo, poiché la suddivisione in posizioni diverse può portare a risultati radicalmente diversi da Gemini Nano o altri LLM. Idealmente, i testi dovrebbero essere suddivisi quando c'è un cambio di argomento, ad esempio una nuova sezione di un articolo, o in un paragrafo. È importante evitare di suddividere il testo nel mezzo di una parola o di una frase, il che significa che non puoi impostare un numero di caratteri come unica linea guida per la suddivisione.
Esistono molti modi per farlo, senza intervento manuale. Nell'esempio seguente abbiamo utilizzato lo strumento di suddivisione del testo ricorsivo di LangChain.js, che bilancia le prestazioni e la qualità dell'output. Questo dovrebbe funzionare per la maggior parte dei carichi di lavoro.
Quando crei una nuova istanza, sono disponibili due parametri chiave:
chunkSize
è il numero massimo di caratteri consentiti in ogni suddivisione.chunkOverlap
è la quantità di caratteri da sovrapporre tra due suddivisioni consecutive. Ciò garantisce che ogni blocco abbia parte del contesto del blocco precedente.
Dividi il testo con splitText()
per restituire un array di stringhe con ogni blocco.
La finestra di contesto della maggior parte degli LLM è espressa come numero di token anziché come numero di caratteri. In media, un token contiene 4 caratteri, quindi puoi stimare il numero di token utilizzati da un input dividendo il numero di caratteri per 4.
Nel nostro esempio, chunkSize
è composto da 3000 caratteri, ovvero circa
750 token.
Generare riepiloghi per ogni suddivisione
Una volta configurata la suddivisione dei contenuti, puoi generare i riepiloghi per ogni parte con l'API Summarizer.
Crea un'istanza del riepilogatore con la funzione create()
. Per mantenere il contesto il più possibile, abbiamo impostato il parametro format
su plain-text
, type
su
tl;dr
e length
su long
.
Quindi, genera il riepilogo per ogni suddivisione creata da
RecursiveCharacterTextSplitter
e concatena i risultati in una nuova stringa.
Abbiamo separato ogni riepilogo con una nuova riga per identificare chiaramente il riepilogo di ogni parte.
Sebbene questa nuova riga non sia importante quando viene eseguito questo ciclo una sola volta, è utile per determinare in che modo ogni riepilogo si aggiunge al valore del token per il riepilogo finale. Nella maggior parte dei casi, questa soluzione dovrebbe funzionare per i contenuti di durata media e lunga.
Riepilogo ricorsivo dei riepiloghi
Quando il testo è eccessivamente lungo, la lunghezza del riepilogo concatenato potrebbe essere superiore alla finestra di contesto disponibile, causando il fallimento del riepilogo. Per risolvere il problema, puoi riepilogare in modo ricorsivo i riepiloghi.

Raccogliamo comunque le suddivisioni iniziali generate da
RecursiveCharacterTextSplitter
. Poi, nella funzione recursiveSummarizer()
,
eseguiamo il ciclo del processo di sintesi in base alla lunghezza dei caratteri delle
suddivisioni concatenate. Se la lunghezza dei riepiloghi supera 3000
,
li concatenamo in fullSummaries
. Se il limite non viene raggiunto, il riepilogo viene salvato come partialSummaries
.
Una volta generati tutti i riepiloghi, i riepiloghi parziali finali vengono aggiunti al riepilogo completo. Se in fullSummaries
è presente un solo riepilogo, non è necessaria alcuna re-creazione. La funzione restituisce un riepilogo finale. Se sono presenti più di un riepilogo, la funzione si ripete e continua a riepilogare i riepiloghi parziali.
Abbiamo testato questa soluzione con la RFC di Internet Relay Chat (IRC), che ha ben 110.030 caratteri, tra cui 17.560 parole. L'API Summarizer ha fornito il seguente riepilogo:
Internet Relay Chat (IRC) è un modo per comunicare online in tempo reale utilizzando messaggi di testo. Puoi chattare nei canali o inviare messaggi privati e utilizzare i comandi per controllare la chat e interagire con il server. È come una chat su internet in cui puoi digitare e vedere immediatamente i messaggi degli altri.
È molto efficace. Inoltre, è composto da soli 309 caratteri.
Limitazioni
La tecnica di riepilogo dei riepiloghi ti consente di operare all'interno della finestra di contesto di un modello di dimensioni del cliente. Sebbene esistano molti vantaggi per l'IA lato client, potresti riscontrare quanto segue:
- Riassunti meno accurati: con la ricorsione, la ripetizione del processo di riassunto è potenzialmente infinita e ogni riassunto è più lontano dal testo originale. Ciò significa che il modello potrebbe generare un riepilogo finale troppo superficiale per essere utile.
- Rendimento più lento: la generazione di ogni riepilogo richiede tempo. Anche in questo caso, con un numero infinito di possibili riepiloghi nei testi più lunghi, questo approccio potrebbe richiedere diversi minuti.
Abbiamo una demo del riepilogatore disponibile e puoi visualizzare il codice sorgente completo.
Condividi il tuo feedback
Prova a utilizzare la tecnica di riepilogo dei riepiloghi con testi di input di diverse lunghezze, dimensioni di suddivisione diverse e lunghezze di sovrapposizione diverse per determinare cosa funziona meglio per i tuoi casi d'uso.
Inizia subito a testare l'API Summarizer partecipando alla prova dell'origine e condividi il tuo feedback. Il tuo contributo può influire direttamente sul modo in cui sviluppiamo e implementiamo le versioni future di questa API e di tutte le API di IA integrate.
- Per inviare feedback sull'implementazione di Chrome, invia una segnalazione di bug o una richiesta di funzionalità.
- Discutere del design dell'API Summarizer su GitHub commentando un problema esistente o aprendone uno nuovo.
- Partecipa al progetto relativo agli standard entrando a far parte del gruppo della community Web Incubator.
- Chatta con il team di AI di Chrome in merito alla procedura di riassunto o per qualsiasi altra domanda sull'AI integrata.