Resumir com a IA integrada

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 Atrás de uma sinalização Teste do Origin Atrás de uma sinalização Teste do Origin 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 permitidos key-points (padrão), tl;dr, teaser e headline. Consulte a tabela a seguir para obter detalhes.
  • format: o formato da síntese, com os valores permitidos markdown (padrão) e plain-text.
  • length: o comprimento da síntese, com os valores permitidos short, medium (padrão) e long. O significado desses comprimentos varia de acordo com o type 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.
short Uma frase
média 3 frases
long Cinco frases
"teaser" O resumo deve se concentrar nas partes mais interessantes ou intrigantes do texto, projetado para atrair o leitor a ler mais.
short Uma frase
média 3 frases
long Cinco frases
"key-points" O resumo precisa extrair os pontos mais importantes da entrada, apresentados como uma lista com marcadores.
short 3 marcadores
média 5 marcadores
long 7 marcadores
"headline" O resumo precisa conter o ponto principal da entrada em uma única frase, no formato de um título de artigo.
short 12 palavras
média 17 palavras
long 22 palavras

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.