Resumir com a IA integrada

Publicado em 11 de novembro de 2024, atualizado pela última vez em 30 de julho de 2025

Browser Support

  • Chrome: 138.
  • Edge: 138.
  • Firefox: not supported.
  • Safari: not supported.

Source

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

A API Summarizer pode ser usada para gerar diferentes tipos de resumos em vários comprimentos 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 uma conversa de 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

Os requisitos a seguir existem para desenvolvedores e usuários que operam recursos usando estas APIs no Chrome. Outros navegadores podem ter requisitos operacionais diferentes.

As APIs Language Detector e Translator funcionam no Chrome para computadores. Essas APIs não funcionam em dispositivos móveis.

A API Prompt, a API Summarizer, a API Writer, a API Rewriter e a API Proofreader 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); Linux; ou ChromeOS (da plataforma 16389.0.0 e versões mais recentes) em Chromebook Plus dispositivos. O Google Chrome para Android, iOS e ChromeOS em dispositivos que não são Chromebook Plus ainda não tem suporte das 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 ou CPU: os modelos integrados podem ser executados com GPU ou CPU.
    • GPU: mais de 4 GB de VRAM.
    • CPU: 16 GB de RAM ou mais e 4 núcleos de CPU ou mais.
    • Observação: a API Prompt com entrada de áudio requer uma GPU.
  • Rede: dados ilimitados ou uma conexão não limitada.

O tamanho exato do Gemini Nano pode variar à medida que o navegador atualiza o modelo. Para determinar o tamanho atual, acesse chrome://on-device-internals.

Download do modelo

A API Summarizer usa um modelo treinado para gerar resumos de alta qualidade. A API é 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, ouça o progresso do download para informar o usuário sobre o progresso, já que isso 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. Ela 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 detalhes.
  • format: o formato do resumo, com os valores permitidos markdown (padrão) e plain-text.
  • length: o comprimento do resumo, com os valores permitidos short (padrão), medium e long. Os significados desses comprimentos 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.
  • preference: um mecanismo para os desenvolvedores indicarem se priorizam a execução rápida ou recursos abrangentes.
    • auto: o navegador equilibra a velocidade de execução com a capacidade de resumo e pode ajustar dinamicamente o processamento interno com base no ambiente, nas restrições do sistema ou no contexto.
    • speed: o navegador precisa priorizar a baixa latência e a execução rápida. Essa abordagem prioriza a performance, o que pode limitar a capacidade de resumo, resultando em uma extração menos detalhada ou uma síntese mais simples do texto de origem.
    • capability: o navegador precisa priorizar a abrangência e a coerência do resumo, e um modelo que ofereça mais flexibilidade em termos de tipos de resumo e outras opções configuráveis. Essa abordagem se concentra em capturar com precisão o contexto sutil e produzir resumos altamente refinados, o que pode resultar em maior latência e velocidades de execução mais lentas.

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 de a entrada, adequada para um leitor ocupado.
short Uma frase
média 3 frases
long 5 frases
"teaser" O resumo precisa 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 5 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

Por exemplo, você pode inicializar um resumo para gerar um comprimento 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);
}

Atribuir idiomas esperados

A API Summarizer aceita "en", "ja", "es", "de" e "fr". O suporte para outros idiomas está em desenvolvimento.`"Defina os idiomas de entrada, saída e contexto esperados ao criar sua sessão. Isso permite que o navegador rejeite a solicitação se não puder oferecer suporte a uma combinação de idiomas específica.

const summarizer = await Summarizer.create({
  type: 'key-points',
  expectedInputLanguages: ['en', 'ja', 'es'],
  outputLanguage: 'es',
  expectedContextLanguages: ['en'],
  sharedContext: 'These are requests to summarize articles from a multilanguage newspaper. The users expect a response in Spanish.',
});

Há duas maneiras de executar o resumo: streaming e lote (saída baseada em solicitação).

Resumo em lote

Com o resumo em lote, o modelo processa a entrada como um todo e 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 opcional é um objeto com um campo context. Esse campo permite adicionar detalhes de plano de fundo 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.',
});

Resumo de stream

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

Demonstração

Você pode testar a API Summarizer no Summarizer API Playground.

Política de permissões, iframes e Web Workers

Por padrão, a API Summarizer está disponível apenas para janelas de nível superior e para iframes de mesma origem. O acesso à API pode ser delegado a iframes de origem cruzada usando o atributo da Política de permissões allow="":

<!--
  The hosting site at https://main.example.com can grant a cross-origin iframe
  at https://cross-origin.example.com/ access to the Summarizer API by
  setting the `allow="summarizer"` attribute.
-->
<iframe src="https://cross-origin.example.com/" allow="summarizer"></iframe>

A API Summarizer não está disponível no momento em Web Workers. Isso ocorre devido à complexidade de estabelecer um documento responsável para cada worker, a fim de verificar o status da Política de permissões.

Compartilhar feedback

Queremos saber o que você está criando com a API Summarizer. Compartilhe seus sites e aplicativos da Web conosco no X, YouTube, e LinkedIn.

Para feedback sobre a implementação do Chrome, registre um relatório de bugs ou uma solicitação de recurso.