Resumir com a IA integrada

Publicado em 11 de novembro de 2024. Última atualização: 20 de maio 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(). Ela retorna uma promessa com os seguintes valores.

  • "unavailable" significa que a implementação não é compatível com as opções solicitadas.
  • "downloadable" significa que a implementação oferece suporte às opções solicitadas, mas primeiro o navegador precisa baixar algo, como um modelo (no caso do Chrome, o Gemini Nano) ou um ajuste refinado 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 aceita as opções solicitadas e o resumo pode continuar.

Para acionar o download do modelo e criar o resumo, chame a função assíncrona Summarizer.create(). Se a resposta a availability() foi downloadable ou downloading, é recomendável ouvir o progresso do download. Assim, você pode informar ao usuário que o download pode levar algum tempo para ser concluído antes que o resumo seja gerado.

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

O exemplo a seguir demonstra como inicializar o resumo.

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;
}
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 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 pediu feedback ao Grupo de Arquitetura Técnica do W3C e solicitou à Mozilla e ao WebKit as posições deles sobre os padrões.

Participe do esforço de padrões entrando no Web Incubator Community Group (em inglês).

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.