Publicado em 11 de novembro de 2024 e atualizado pela última vez em 20 de maio de 2025
Explicação | Web | Extensões | Status do Chrome | Intenção |
---|---|---|---|---|
GitHub | Ver | Intent de envio |
Você pode oferecer aos usuários a capacidade de resumir artigos longos, documentos complexos ou até mesmo conversas de chat animadas em resumos concisos e inteligentes.
A API Summarizer pode ser usada para gerar diferentes tipos de resumos em diversos comprimentos e formatos, como frases, parágrafos, listas com marcadores e muito mais. Acreditamos que essa API é útil nos seguintes cenários:
- Resumir os pontos principais de um artigo ou de uma conversa no chat.
- Sugerir títulos e cabeçalhos para artigos.
- Criar um resumo conciso e informativo de um texto longo.
- Gerar um teaser para um livro com base em uma resenha.
Primeiros passos
A API Summarizer está disponível no Chrome 138 estável.
Execute a detecção de recursos para saber se o navegador oferece suporte à API Summarizer.
if ('Summarizer' in self) {
// The Summarizer API is supported.
}
Analisar os requisitos de hardware
As APIs Language Detector e Translator funcionam em computadores somente no Chrome.
As APIs Prompt, Summarizer, Writer e Rewriter funcionam no Chrome quando as seguintes condições são atendidas:
- Sistema operacional: Windows 10 ou 11, macOS 13 ou mais recente (Ventura e versões mais recentes) ou Linux. O Chrome para Android, iOS e ChromeOS ainda não são compatíveis com nossas APIs com suporte do Gemini Nano.
- Armazenamento: pelo menos 22 GB no volume que contém seu perfil do Chrome.
- GPU: estritamente mais de 4 GB de VRAM.
- Rede: dados ilimitados ou uma conexão ilimitada.
- GPU: estritamente mais de 4 GB de VRAM.
- Rede: dados ilimitados ou uma conexão ilimitada.
Esses requisitos existem para você no processo de desenvolvimento e para os usuários que trabalham com os recursos que você cria.
Download do modelo
A API Summarizer usa um modelo treinado para gerar resumos de alta qualidade. A API está integrada ao Chrome, e o Gemini Nano é o modelo que é feito o download na primeira vez que um site usa essa API.
Para determinar se o modelo está pronto para uso, chame a função
Summarizer.availability()
assíncrona. Ele retorna uma promessa com os
seguintes valores.
"unavailable"
significa que a implementação não oferece suporte às opções solicitadas."downloadable"
significa que a implementação oferece suporte às opções solicitadas, mas primeiro o navegador precisa fazer o download de algo, como um modelo (no caso do Chrome, Gemini Nano) ou um ajuste fino para o modelo."downloading"
significa que a implementação oferece suporte às opções solicitadas, mas precisa concluir um download em andamento antes de continuar."available"
significa que a implementação oferece suporte às opções solicitadas e o resumo pode continuar.
Para acionar o download do modelo e criar o resumo, chame a função
Summarizer.create()
assíncrona. Se a resposta para availability()
foi
downloadable
ou downloading
, é recomendável detectar o progresso
do download. Assim, você pode informar ao usuário e indicar que o download
pode levar algum tempo para ser concluído antes que a síntese ocorra.
const summarizer = await Summarizer.create({
monitor(m) {
m.addEventListener('downloadprogress', (e) => {
console.log(`Downloaded ${e.loaded * 100}%`);
});
}
});
Funções da API
A função create()
permite configurar um novo objeto de resumo de acordo com suas
necessidades. Ele usa um objeto options
opcional com os seguintes parâmetros:
sharedContext
: contexto compartilhado adicional que pode ajudar o resumidor.type
: o tipo de resumo, com os valores permitidoskey-points
(padrão),tl;dr
,teaser
eheadline
. Consulte a tabela a seguir para obter detalhes.format
: o formato da síntese, com os valores permitidosmarkdown
(padrão) eplain-text
.length
: o comprimento da síntese, com os valores permitidosshort
,medium
(padrão) elong
. O significado desses comprimentos varia de acordo com otype
solicitado. Por exemplo, na implementação do Chrome, um breve resumo de pontos-chave consiste em três tópicos e um resumo curto é uma frase.
A tabela a seguir demonstra os diferentes tipos de resumos e as respectivas durações. As durações representam o valor máximo possível, já que, às vezes, os resultados podem ser mais curtos.
Tipo | Significado | Comprimento | ||||||
---|---|---|---|---|---|---|---|---|
"tl;dr" |
O resumo precisa ser curto e direto, fornecendo uma visão geral rápida da entrada, adequada para um leitor ocupado. |
|
||||||
"teaser" |
O resumo deve se concentrar nas partes mais interessantes ou intrigantes do texto, projetado para atrair o leitor a ler mais. |
|
||||||
"key-points" |
O resumo precisa extrair os pontos mais importantes da entrada, apresentados como uma lista com marcadores. |
|
||||||
"headline" |
O resumo precisa conter o ponto principal da entrada em uma única frase, no formato de um título de artigo. |
|
O exemplo a seguir demonstra como inicializar o resumidor.
const options = {
sharedContext: 'This is a scientific article',
type: 'key-points',
format: 'markdown',
length: 'medium',
};
const availability = await Summarizer.availability();
let summarizer;
if (availability === 'unavailable') {
// The Summarizer API isn't usable.
return;
}
if (availability === 'available') {
// The Summarizer API can be used immediately .
summarizer = await Summarizer.create(options);
} else {
// The Summarizer API can be used after the model is downloaded.
summarizer = await Summarizer.create(options);
summarizer.addEventListener('downloadprogress', (e) => {
console.log(`Downloaded ${e.loaded * 100}%`);
});
await summarizer.ready;
}
Executar o resumo
Há duas maneiras de executar o resumidor: streaming e lote (sem streaming).
Resumo em lote
Com a síntese em lote, o modelo processa a entrada como um todo e produz a saída.
Para receber um resumo do lote, chame a função summarize()
. O primeiro
argumento é o texto que você quer resumir. O segundo argumento opcional
é um objeto com um campo context
. Esse campo permite adicionar detalhes de segundo plano
que podem melhorar a síntese.
const longText = document.querySelector('article').innerHTML;
const summary = await summarizer.summarize(longText, {
context: 'This article is intended for a tech-savvy audience.',
});
Resumo de streaming
A síntese de streaming oferece resultados em tempo real.
A saída é atualizada continuamente à medida que a entrada é adicionada e ajustada. Para receber um
resumo de streaming, chame summarizeStreaming()
em vez de summarize()
.
const longText = document.querySelector('article').innerHTML;
const summary = await summarizer.summarizeStreaming(longText, {
context: 'This article is intended for junior developers.',
});
Demonstração
Teste a API Summarizer no Summarizer API Playground.
Esforço de padronização
Estamos trabalhando para padronizar a API Summarizer e garantir a compatibilidade entre navegadores.
Nossa proposta de API recebeu apoio da comunidade e foi transferida para o W3C Web Incubator Community Group para mais discussões. A equipe do Chrome solicitou feedback do W3C Technical Architecture Group e pediu a Mozilla e ao WebKit as posições dos padrões.
Participe do esforço de padronização entrando no grupo da comunidade do Web Incubator.
Compartilhar feedback
Queremos saber o que você está criando com a API Summarizer. Compartilhe seus sites e aplicativos da Web com a gente no X, YouTube e LinkedIn.
Para enviar feedback sobre a implementação do Chrome, envie um relatório de bug ou uma solicitação de recurso.