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 | 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 permitidoskey-points
(padrão),tldr
,teaser
eheadline
. Consulte a tabela a seguir para obter detalhes.format
: o formato do resumo, com os valores permitidosmarkdown
(padrão) eplain-text
.length
: o tamanho do resumo, com os valores permitidosshort
,medium
(padrão) elong
. Os significados variam dependendo dotype
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. |
|
||||||
"teaser" |
O resumo deve se concentrar nas partes mais interessantes ou intrigantes da entrada, projetadas 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 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.