Resumir com a IA integrada

Publicado em: 11 de novembro de 2024. Última atualização: 30 de julho de 2025

Explicação Web Extensões Status do Chrome Intenção
MDN Chrome 138 Chrome 138 Ver Intenção de envio

Você pode oferecer aos usuários a capacidade de destilar artigos longos, documentos complexos ou até mesmo conversas animadas em resumos concisos e perspicazes.

A API Summarizer pode ser usada para gerar diferentes tipos de resumos em vários tamanhos e formatos, como frases, parágrafos, listas com marcadores e muito mais. Acreditamos que essa API é útil nos seguintes cenários:

  • Resumir os principais pontos de um artigo ou de uma conversa por chat.
  • Sugerir títulos e cabeçalhos para artigos.
  • Criar um resumo conciso e informativo de um texto longo.
  • Gerar um teaser de um livro com base em uma resenha.

Primeiros passos

A API Summarizer está disponível a partir do Chrome 138 estável.

Antes de usar essa API, leia e concorde com a Política de uso proibido da IA generativa do Google.

Execute a detecção de recursos para saber se o navegador é compatível com a API Summarizer.

if ('Summarizer' in self) {
  // The Summarizer API is supported.
}

Revisar os requisitos de hardware

Os desenvolvedores e usuários que operam recursos usando essas APIs no Chrome precisam atender aos seguintes requisitos. Outros navegadores podem ter requisitos operacionais diferentes.

As APIs Language Detector e Translator funcionam no Chrome em computadores. Essas APIs não funcionam em dispositivos móveis. 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 posteriores) ou Linux. O Chrome para Android, iOS e ChromeOS ainda não é compatível com as APIs que usam o Gemini Nano.
  • Armazenamento: pelo menos 22 GB de espaço livre no volume que contém seu perfil do Chrome.
  • GPU: mais de 4 GB de VRAM.
  • Rede: dados ilimitados ou uma conexão ilimitada.

O tamanho exato do Gemini Nano pode variar conforme o navegador atualiza o modelo. Para determinar o tamanho atual, acesse chrome://on-device-internals e clique em Status do modelo. Abra o Caminho do arquivo listado para determinar o tamanho do modelo.

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 baixado na primeira vez que um site usa essa API.

Para determinar se o modelo está pronto para uso, chame a função assíncrona Summarizer.availability(). Se a resposta a availability() for downloadable, aguarde o progresso do download para informar o usuário, já que pode levar algum tempo.

const availability = await Summarizer.availability();

Para acionar o download do modelo e criar o resumo, verifique a ativação do usuário e chame a função assíncrona Summarizer.create().

// Proceed to request batch or streaming summarization
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 resumo.
  • type: o tipo de resumo, com os valores permitidos key-points (padrão), tldr, teaser e headline. Consulte a tabela a seguir para obter detalhes.
  • format: o formato do resumo, com os valores permitidos markdown (padrão) e plain-text.
  • length: o tamanho do resumo, com os valores permitidos short, medium (padrão) e long. Os significados variam dependendo do type solicitado. Por exemplo, na implementação do Chrome, um resumo curto de pontos principais consiste em três marcadores, e um resumo curto é uma frase.

Depois de definidos, os parâmetros não podem ser alterados. Crie um novo objeto de resumo se precisar fazer modificações nos parâmetros.

A tabela a seguir demonstra os diferentes tipos de resumos e os comprimentos correspondentes. Os comprimentos representam o valor máximo possível, já que, às vezes, os resultados podem ser mais curtos.

Tipo Significado Comprimento
"tldr" O resumo precisa ser curto e direto, oferecendo 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 da entrada, projetadas 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 tópicos
média 5 tópicos
long 7 tópicos
"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

Por exemplo, você pode inicializar um resumo para gerar um tamanho médio de pontos principais em Markdown.

const options = {
  sharedContext: 'This is a scientific article',
  type: 'key-points',
  format: 'markdown',
  length: 'medium',
  monitor(m) {
    m.addEventListener('downloadprogress', (e) => {
      console.log(`Downloaded ${e.loaded * 100}%`);
    });
  }
};

const availability = await Summarizer.availability();
if (availability === 'unavailable') {
  // The Summarizer API isn't usable.
  return;
}

// Check for user activation before creating the summarizer
if (navigator.userActivation.isActive) {
  const summarizer = await Summarizer.create(options);
}

Executar o resumo

Há duas maneiras de executar o resumo: streaming e lote (sem streaming).

Resumo em lote

Com o resumo em lote, o modelo processa a entrada como um todo e depois produz a saída.

Para receber um resumo em lote, chame a função summarize(). O primeiro argumento é o texto que você quer resumir. O segundo argumento, que é opcional, é um objeto com um campo context. Esse campo permite adicionar detalhes de contexto que podem melhorar o resumo.

const longText = document.querySelector('article').innerHTML;
const summary = await summarizer.summarize(longText, {
  context: 'This article is intended for a tech-savvy audience.',
});

Geração de resumos de streaming

O resumo por 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 stream = summarizer.summarizeStreaming(longText, {
  context: 'This article is intended for junior developers.',
});
for await (const chunk of stream) {
  console.log(chunk);
}

Demonstração

Teste a API Summarizer no Playground da API Summarizer.

Esforço de padronização

Estamos trabalhando para padronizar a API Summarizer para compatibilidade entre navegadores.

A API Summarizer e outras APIs de assistência de escrita foram adotadas pelo Grupo de trabalho WebML do W3C. Pedimos à Mozilla e ao WebKit as posições deles sobre padrões.

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, registre um relatório de bug ou uma solicitação de recurso.