A API Summarizer ajuda a redBus e a Miravia a criar resumos úteis das avaliações dos usuários

Cecilia Cong
Cecilia Cong
Hadyan Andika
Hadyan Andika

Publicado em 15 de maio de 2025

Sites com avaliações de usuários, como sites de e-commerce ou de viagens, geralmente têm um volume enorme de informações. Isso pode fazer com que os usuários percam muito tempo analisando muitas avaliações para decidir sobre uma compra. Fornecer resumos de avaliações pode ajudar os usuários a entender o feedback e economizar tempo. Saiba como a redBus e a Miravia usam a API Summarizer para melhorar a tomada de decisões e a experiência de compra.

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

A API Summarizer permite gerar diferentes tipos de resumos em vários comprimentos e formatos, como frases, parágrafos, listas com marcadores e muito mais. Essa API, como muitas das nossas APIs de IA integradas, usa modelos de linguagem grandes para realizar inferência. No Chrome, nosso modelo é o Gemini Nano.

A redBus ajuda os clientes a decidir a melhor opção de ônibus

A redBus é a maior operadora de ônibus da Índia, com mais de 30 milhões de clientes, oferecendo serviços de ônibus em aproximadamente 10.000 cidades, conectadas em todo o país. Com os dados e o feedback, a redBus percebeu que as avaliações geradas pelos usuários desempenham um papel importante para ajudar os clientes a determinar qual rota e qual ônibus é melhor para as necessidades de viagem. A redBus recebe um grande volume de avaliações, e cada uma é específica para os pontos e horários de chegada e partida.

Para ajudar os clientes a entenderem de forma geral algumas cidades ou rotas, eles usam a API Summarizer para apresentar insights importantes de avaliações relevantes.

Um cliente procura uma rota de Bangalore para Mangaluru. O resumo analisa as avaliações disponíveis e captura uma visão geral útil para ajudar os clientes a encontrar o melhor ônibus para a viagem.

"A API Summarizer conseguiu criar resumos de qualidade com nosso grande número de avaliações e permutações de consultas de pesquisa do usuário. Esse recurso do lado do cliente removeu a complexidade técnica e o custo de negócios adicional que estariam presentes em uma alternativa do lado do servidor. Isso é importante para nós porque esse caso de uso faz parte do funil de conversão."

— Amit Kumar, gerente sênior de engenharia, redBus

A granularidade das avaliações armazenadas no back-end da redBus, combinada com o enorme número de permutações possíveis nas consultas de pesquisa do usuário, com variáveis como horários de partida e chegada, ponto de embarque específico na cidade e diferentes operadores de ônibus, dificulta a identificação de insights específicos das avaliações. Com esse volume de dados, um resumo do lado do servidor para cada consulta de pesquisa seria proibitivo.

Para gerar resumos eficazes, a redBus fornece o seguinte contexto à API Summarizer, além das avaliações do cliente:

//Context to provide a useful summary
const promptContext =
  'Summarize the following reviews in 30 words or less.' +
  'Focus on key positives and negatives, such as comfort, maintenance,' +
  'pricing, and cleanliness. Reviews are separated by {end}.' +
  'Give the summary in just one paragraph.';

Os resumos melhoram a tomada de decisão do cliente, sem custos comerciais e complexidade técnica adicionais. Além disso, a redBus pode personalizar o resumo para as preferências de viagem dos usuários conectados, como conforto do assento ou disponibilidade de Wi-Fi. Inferência do lado do cliente, o que significa que essa pesquisa e resumo continuam privados para o usuário.

Confira um exemplo de código curto que verifica a disponibilidade do Summarizer, fornece contexto e recupera avaliações com base na consulta de pesquisa do usuário.

// The Summarizer API is available
if ('Summarizer' in self) {
  try {
    const available = await Summarizer.availability();
    let summarizer;
    if (available === 'unavailable') {
      return null;
    }
    if (available === 'available') {
      //model is already available, use immediately
      summarizer = await Summarizer.create();
    } else {
      //trigger model download and wait
      summarizer = await Summarizer.create();
    }

    // Context to provide a useful summary
    const promptContext =
      'Summarize the following reviews in 30 words or less.' +
      'Focus on key positives and negatives, such as comfort, maintenance,' +
      'pricing, and cleanliness. Reviews are separated by {end}.' +
      'Give the summary in just one paragraph.';

    // Retrieve the reviews to be summarized based on user's search query
    let reviews = getIndividualBusReviews();
    if (reviews) {
      const reviewSummary = await summarizer.summarize(reviews, {
        context: promptContext
      });
    }
  } catch (e) {
    console.error("SUMMARIZER_API_ERROR: ", e);
    return null
  }
}

Com a pesquisa de exemplo de Bangalore para Mangaluru, a saída do resumo é a seguinte:

<Bus Provider X> geralmente recebeu avaliações positivas por conforto, limpeza e atendimento da equipe. Alguns problemas menores, como atrasos, comportamento do motorista (grosseiro), falta de comodidades (rastreamento em tempo real, cobertores) e desconforto (tamanho do assento, amortecedores ruins).

Essa avaliação atende aos requisitos solicitados, com pontos positivos e negativos em um parágrafo curto, que é muito mais fácil de ler do que as 308 avaliações individuais disponíveis.

Resumo das avaliações de e-commerce da Miravia

A Miravia é uma plataforma de e-commerce líder na Espanha, com milhões de usuários ativos por mês. Sempre que os usuários filtram as avaliações (por exemplo, pela classificação do produto), um novo resumo é gerado. Isso fornece uma visão geral sucinta do feedback do cliente, destacando preocupações e recomendações.

Os usuários podem gerar resumos de avaliações de produtos para diferentes classificações.

"Antes, para entender os principais prós e contras nas avaliações de produtos, os usuários precisavam ler vários comentários individuais na página de detalhes. Para ajudar os usuários a entender rapidamente o sentimento geral do cliente, lançamos a API Summarizer. Esse resumo é atualizado dinamicamente sempre que um usuário filtra as avaliações (por exemplo, por classificação por estrelas ou outros critérios), fornecendo uma visão geral rápida e abrangente do feedback relevante dos compradores."

— Ziyi Liang, engenheiro de software sênior, Miravia

Inicialmente, o recurso de resumo de avaliações do usuário do Miravia dependia de um serviço de IA do lado do servidor. Eles descobriram que o Gemini Nano com IA do lado do cliente pode gerar resultados semelhantes, com uma redução nos custos de manutenção. Essa vantagem é particularmente clara para itens populares e de venda rápida, com avaliações sempre atualizadas.

Embora a implementação da Miravia exija a busca e a resumo da análise em tempo real, independentemente de a inferência ocorrer no servidor ou no navegador, a IA do lado do cliente é consideravelmente mais eficiente à medida que a frequência aumenta. Eles estão satisfeitos com a performance geral.

Primeiro, a Miravia verifica a compatibilidade com recursos e dispositivos.

// Compatibility check for device with built-in AI
export const deviceCheck = async () => {
  // Query the browser's AI capabilities
  const availability = await Summarizer.availability();

  // Case 1: Device doesn't support AI summarization
  if (availability === 'unavailable') {
    return {
      summarizationAvailable: false,
      message:
        'AI summarization tools are not supported on this device, or the appropriate permissions have not be set.',
    };
  }

  // Case 2: Device supports AI but requires model download
  if (availability === 'downloadable') {
    // Try to trigger an installation
    Summarizer.create();

    return {
      summarizationAvailable: false,
      message: 'Installing in the background. This may take a few minutes...',
    };
  }

  // Case 3: Device supports AI summarization
  return {
    summarizationAvailable: true,
    message: 'Ready for use.',
  };
};

Em seguida, o Miravia resume as avaliações disponíveis. As avaliações são combinadas com um período adicional para tornar a entrada mais coerente.

/**
 * Summarizes a list of reviews using Chrome's Built-in AI
 * @param {Array<string>} reviewContentList - Array of review texts to summarize
 * @returns {Promise<string>} The generated summary text
 * @throws {Error} If summarization is not available or fails
 */
export const reviewSummarize = async (reviewContentList) => {
  // Validate input
  if (!Array.isArray(reviewContentList) || !reviewContentList.length) {
    throw new Error('Please provide a non-empty array of reviews to summarize');
  }

  // Check device compatibility
  const { summarizationAvailable, message } = await deviceCheck();

  if (summarizationAvailable) {
    try {
      // Configure and create the summarizer with appropriate parameters
      const summarizer = await Summarizer.create({
        type: 'tl;dr',
        length: 'short',
        sharedContext:
          'Summarize the given user reviews. Maintain a polite and formal tone.',
      });

      // Generate the summary from the joined review texts
      const summary = await summarizer.summarize(reviewContentList.join('. '));

      // Return the generated summary
      return summary;
    } catch (error) {
      // Handle any errors during summarization
      throw new Error(`Summarization failed: ${error.message}`);
    }
  } else {
    // If summarization is not available, throw an error with the message from deviceCheck
    throw new Error(
      message ||
        'AI summarization tools are not supported on this device or browser.'
    );
  }
};

Práticas recomendadas

Se a entrada de revisão exceder o limite de tokens, siga estas mitigações:

  • Use uma amostra menor (como as quatro avaliações mais recentes) para a API. Isso ajuda a gerar resultados mais rápidos. Consulte nossas orientações sobre como dimensionar a síntese do lado do cliente.
  • O QuotaExceededError fornece mais informações sobre os tokens solicitados na entrada. O objeto summarizer tem uma propriedade inputQuota que indica o limite de tokens da API. Isso permite feedback em tempo real e desativa a funcionalidade se a entrada exceder o limite.

Considere uma abordagem híbrida para garantir uma experiência perfeita para todos os usuários. Na primeira vez que uma API AI integrada é chamada, o navegador precisa fazer o download do modelo.

  • A Miravia usou um modelo do lado do servidor para fornecer um resumo inicial enquanto o modelo era transferido por download. Quando o modelo integrado ficou pronto, o site passou a realizar a inferência do lado do cliente.

Sempre tente criar uma interface amigável e comunicativa:

  • Implemente uma barra de progresso para downloads de modelos e mitigue os atrasos de resposta.
  • Considere a transparência sobre o download do modelo. O Bright Sites notificou os usuários sobre o download do modelo para permitir a transparência e o consentimento do uso do recurso. Assim, os usuários podem aceitar ou recusar antes de continuar.

Conclusões e recomendações

Esses exemplos reais da redBus e da Miravia demonstram como a API Summarizer ajudou os usuários a tomar decisões informadas rapidamente, fornecendo resumos concisos e relevantes de avaliações de usuários. A capacidade da API de funcionar no lado do cliente, sem custos comerciais adicionais e baixa complexidade técnica, faz dela uma opção viável para casos de uso semelhantes em que as informações precisam ser resumidas. Todas as APIs de IA integradas permitem casos de uso práticos da IA do lado do cliente.

Quer saber como a API Summarizer pode ajudar em outros casos de uso? Também compartilhamos como a API Summarizer ajuda a aumentar o engajamento com os artigos.

Você está desenvolvendo algo novo com essas APIs? Compartilhe com a gente em @ChromiumDev no X ou Chromium para desenvolvedores no LinkedIn.

Recursos

Agradecimentos

Agradecemos a Makakhov Andrey e Ziyi Liang da Miravia (grupo Alibaba), Amit Kumar da redBus, Swetha Gopalakrishnan, Alexandra Klepper, Thomas Steiner e Kenji Baheux por ajudar a escrever e analisar este documento.