Publicado em 11 de novembro de 2024
Imagine que você pudesse oferecer aos seus 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.
Disponibilidade
- Participe do teste de origem da API Summarizer, executado no Chrome 131 a 136. Com os testes de origem, você pode oferecer o recurso a usuários reais na origem, no Chrome.
- Siga nossa implementação no Status do Chrome.
- A proposta da API Summarizer faz parte de um pacote de APIs de gravação e está aberta para discussão.
- Participe do programa de prévia antecipada para conferir as novas APIs de IA integradas e participar da discussão na nossa lista de e-mails.
Inscrever-se no teste de origem
Para começar a usar a API Summarizer, siga estas etapas:
- Confirme que você leu e aceitou a Política de uso proibido da IA generativa do Google.
- Acesse o teste de origem da API Summarizer.
- Clique em Registrar e preencha o formulário.
- No campo Origem da Web, informe o ID da
origem
ou da extensão,
chrome-extension://YOUR_EXTENSION_ID
.
- No campo Origem da Web, informe o ID da
origem
ou da extensão,
- Para enviar, clique em Registrar.
- Copie o token fornecido e adicione-o a todas as páginas da Web na origem ou
no arquivo da extensão em que você quer ativar o teste.
- Se você estiver criando uma extensão, siga as instruções do teste de origem de extensões.
- Comece a usar a API Summarizer.
Saiba mais sobre como começar a usar os testes de origem.
Limitações durante o teste de origem
Durante o teste de origem, a API Summarizer só oferece suporte a resumos de textos em inglês, porque a qualidade do modelo foi testada apenas em conteúdo em inglês. Nossa intenção é remover essa limitação depois de testar outras línguas para garantir a qualidade e a segurança e quando a API estiver disponível para todos.
Adicionar suporte ao localhost
Para acessar a API Summarizer em localhost
durante o teste de origem, você precisa
ter o Chrome Canary. Em seguida, siga estas
etapas:
- Abra o Chrome Canary em uma destas plataformas: Windows, Mac ou Linux.
- Acesse
chrome://flags/#summarization-api-for-gemini-nano
. - Selecione Ativado.
- Clique em Reiniciar ou reinicie o Chrome.
Usar a API Summarizer
Primeiro, execute a detecção de recursos para saber se o navegador oferece suporte à API Summarizer.
if ('ai' in self && 'summarizer' in self.ai) {
// The Summarizer API is supported.
}
Download do modelo
A API Summarizer usa um modelo de IA poderoso treinado para gerar resumos de alta qualidade. Embora a API esteja integrada ao Chrome, o modelo é transferido por download separadamente na primeira vez que um site usa a API.
Para determinar se o modelo está pronto para uso, chame a função
ai.summarizer.capabilities()
assíncrona. Ele retorna um
objeto AISummarizerCapabilities
com um campo available
que pode ter três
valores possíveis:
no
: o navegador atual oferece suporte à API Summarizer, mas ela não pode ser usada no momento. Isso pode acontecer por vários motivos, como espaço em disco insuficiente para fazer o download do modelo.readily
: o navegador atual oferece suporte à API Summarizer e pode ser usado imediatamente.after-download
: o navegador atual oferece suporte à API Summarizer, mas precisa fazer o download do modelo primeiro.
Para acionar o download do modelo e criar o resumo, chame a função
ai.summarizer.create()
assíncrona. Se a resposta para capabilities()
foi
after-download
, a prática recomendada é detectar o progresso do download. Dessa forma,
é possível informar o usuário caso o download demore.
const summarizer = await ai.summarizer.create({
monitor(m) {
m.addEventListener('downloadprogress', (e) => {
console.log(`Downloaded ${e.loaded} of ${e.total} bytes.`);
});
}
});
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 permitidoskey-points
(padrão),tl;dr
,teaser
eheadline
.format
: o formato da síntese, com os valores permitidosmarkdown
(padrão) eplain-text
.length
: o comprimento da síntese, com os valores permitidosshort
,medium
(padrão) elong
. O significado desses comprimentos varia de acordo com otype
solicitado. Por exemplo, na implementação do Chrome, um resumo curto de pontos-chave consiste em três tópicos e um resumo curto é uma frase. Um resumo longo de pontos-chave tem sete tópicos e um resumo longo é um parágrafo.
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 available = (await self.ai.summarizer.capabilities()).available;
let summarizer;
if (available === 'no') {
// The Summarizer API isn't usable.
return;
}
if (available === 'readily') {
// The Summarizer API can be used immediately .
summarizer = await self.ai.summarizer.create(options);
} else {
// The Summarizer API can be used after the model is downloaded.
summarizer = await self.ai.summarizer.create(options);
summarizer.addEventListener('downloadprogress', (e) => {
console.log(e.loaded, e.total);
});
await summarizer.ready;
}
Executar o resumo
Há duas maneiras de executar o resumo: streaming e não streaming.
Resumo sem streaming
Com a síntese sem streaming, o modelo processa a entrada como um todo e produz a saída.
Para receber um resumo sem streaming, chame a função summarize()
assíncrona do resumidor. O primeiro argumento da função é 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 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 a função summarizeStreaming()
do resumidor. Em seguida, itere sobre os segmentos de texto disponíveis no stream.
let result = '';
let previousChunk = '';
for await (const chunk of stream) {
const newChunk = chunk.startsWith(previousChunk)
? chunk.slice(previousChunk.length) : chunk;
console.log(newChunk);
result += newChunk;
previousChunk = chunk;
}
console.log(result);
summarizeStreaming()
retorna um ReadableStream
, em que os segmentos
de resposta são criados sucessivamente. Isso significa que cada resposta contém o
resumo completo gerado até aquele ponto, não apenas o próximo segmento, que não
é o comportamento pretendido.
Pretendemos nos alinhar a outras APIs de streaming na plataforma, em que os segmentos são partes sucessivas de um único stream longo. Por enquanto, para alcançar o comportamento desejado, implemente o seguinte:
let result = '';
let previousLength = 0;
for await (const segment of stream) {
const newContent = segment.slice(previousLength);
console.log(newContent);
previousLength = segment.length;
result += newContent;
}
console.log(result);
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 Grupo da comunidade do Incubator da Web do W3C 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.
Participar e compartilhar feedback
Comece a testar a API Summarizer agora mesmo participando do teste de origem e compartilhe seu feedback. Sua contribuição pode afetar diretamente a forma como criamos e implementamos versões futuras dessa API e de todas as APIs de IA integradas.
- Para enviar feedback sobre a implementação do Chrome, envie um relatório de bug ou uma solicitação de recurso.
- Discuta o design da API Summarizer no GitHub comentando em um problema existente ou abrindo um novo.
- Participe do esforço de padronização entrando no grupo da comunidade do Web Incubator.