Summarizer API は、redBus と Miravia が有用なユーザー レビューの要約を作成できるようにします。

Cecilia Cong
Cecilia Cong
Hadyan Andika
Hadyan Andika

公開日: 2025 年 5 月 15 日

e コマース サイトや旅行サイトなど、ユーザーのレビューがあるウェブサイトには、膨大な量の情報が含まれていることがよくあります。そのため、ユーザーは多くのレビューを精査して購入を決定するのに時間がかかってしまいます。レビューの概要を提供することによって、ユーザーがフィードバックを理解し、時間を節約できます。redBus と Miravia が Summarizer API を使用して意思決定と購入体験を改善する方法をご覧ください。

商品の解説 ウェブ 拡張機能 Chrome のステータス インテント
MDN Chrome 138 Chrome 138 表示 発送の意向

Summarizer API を使用すると、さまざまな長さと形式(文、段落、箇条書きリストなど)でさまざまなタイプの要約を生成できます。この API は、多くの組み込み AI API と同様に、大規模言語モデルを使用して推論を行います。Chrome では、モデルは Gemini Nano です。

redBus は、お客様が最適なバスを選択できるように支援します

redBus はインド最大のバス事業者で、3,000 万人以上の顧客を抱え、全国に約 1 万の都市や町にバスサービスを提供しています。redBus は、データとフィードバックから、ユーザー作成のレビューが、旅行のニーズに最適なルートやバスをお客様が判断するうえで重要な役割を果たしていることを認識しました。redBus には大量のレビューが寄せられ、各レビューは正確な到着地と出発地、時刻に固有のものです。

特定の都市やルートの概要をユーザーに伝えるため、Summarizer API を使用して、関連するレビューから重要な分析情報を提示しています。

お客様がバンガロールからマンガロールへのルートを検索しています。要約ツールは、利用可能なレビューを確認し、お客様が旅に最適なバスを見つけるのに役立つ概要を取得します。

「Summarizer API は、多数のレビューとユーザーの検索クエリの組み合わせから質の高い要約を作成できました。このクライアントサイド機能により、サーバーサイドの代替手段に伴う技術的な複雑さと追加のビジネス コストが解消されました。このユースケースはコンバージョン ファネルの一部であるため、これは重要です。」

- Amit Kumar、redBus シニア エンジニアリング マネージャー

redBus のバックエンドに保存されているレビューの粒度と、ユーザーの検索クエリで可能な組み合わせの膨大な数(出発時間と到着時間、市内の特定の乗車地点、さまざまなバス事業者などの変数)により、レビューから特定の分析情報を抽出することは困難です。このような大量のデータでは、各検索クエリのサーバーサイドの概要を作成するとコストが高くなります。

効果的な要約を生成するため、redBus は、顧客レビューに加えて、次のコンテキストを Summarizer API に提供します。

//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.';

要約を使用すると、ビジネス上の追加費用や技術的な複雑さなしに、お客様の意思決定を改善できます。また、redBus では、ログインしたユーザーの旅行の好み(座席の快適性や Wi-Fi の利用可否など)に合わせて概要をカスタマイズできます。クライアントサイドで推論されるため、この検索と概要はユーザーに非公開のままになります。

以下は、ユーザーの検索クエリに基づいて、要約ツールの可用性を確認、コンテキストを提供、レビューを取得するショートコードのサンプルです。

// 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
  }
}

バンガロールからマンガロールへの検索例では、要約ツールの出力は次のようになります。

<Bus Provider X> は、快適性、清潔さ、スタッフのサービスについて、概ね好評を得ています。遅延、運転手の態度(失礼)、設備の不足(ライブ トラッキング、ブランケット)、不快感(座席のサイズ、ショック アブソーバーの不備)などの軽微な問題が発生したという報告もあります。

このレビューは、要件を満たしており、長所と短所が 1 つの短い段落にまとめられているため、308 件の個別のレビューよりも読みやすいです。

Miravia の e コマース レビューの要約

Miravia は、月間数百万人のアクティブ ユーザーを抱える、スペインの大手 e コマース プラットフォームです。ユーザーがレビューをフィルタするたびに(商品の評価など)、新しい概要が生成されます。これにより、お客様のフィードバックの概要を簡単に把握し、懸念事項と推奨事項をハイライト表示できます。

ユーザーは、さまざまな評価の商品レビューの概要を生成できます。

「以前は、商品レビューの主要な長所と短所を把握するには、詳細ページで多数の個別のコメントを読み通す必要がありました。ユーザーが顧客の全体的な感情をすばやく把握できるように、Summarizer API が導入されました。この概要は、ユーザーがレビューをフィルタするたびに(星の数やその他の条件でフィルタする場合など)動的に更新され、関連する購入者のフィードバックについて迅速かつ包括的な概要を提供します。」

- Miravia シニア ソフトウェア エンジニア、Ziyi Liang

当初、Miravia のユーザー レビューの要約機能は、サーバーサイドの AI サービスに依存していました。クライアントサイド AI を実行する Gemini Nano は、メンテナンス費用を削減しながら同等の結果を提供できることがわかりました。このメリットは、レビューが絶えず更新される人気商品や、売れ筋商品で特に顕著です。

Miravia の実装では、サーバーまたはブラウザで推論が行われるかどうかにかかわらず、リアルタイムのレビューの取得と要約が必要ですが、頻度が高くなるとクライアントサイド AI の効率が大幅に向上します。全体的なパフォーマンスに満足している。

まず、Miravia は機能とデバイスの互換性を確認します。

// 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.',
  };
};

次に、Miravia は利用可能なレビューを要約します。入力内容の整合性を高めるために、クチコミはピリオドで区切って表示されます。

/**
 * 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.'
    );
  }
};

ベスト プラクティス

レビュー入力がトークンの上限を超える場合は、次の緩和策を講じます。

  • より小さいサンプル(直近の 4 件のレビューなど)を API に使用します。これにより、より迅速に結果を生成できます。クライアントサイドの要約をスケーリングするに関するガイダンスをご覧ください。
  • QuotaExceededError は、入力でリクエストされたトークンの詳細情報を提供します。summarizer オブジェクトには、API のトークン上限を示す inputQuota プロパティがあります。これにより、リアルタイムのフィードバックが可能になり、入力が上限を超えると機能を無効にできます。

すべてのユーザーにシームレスなエクスペリエンスを提供するために、ハイブリッド アプローチを検討することをおすすめします。組み込み AI API が初めて呼び出されると、ブラウザはモデルをダウンロードする必要があります。

  • Miravia は、モデルのダウンロード中にサーバーサイド モデルを使用して最初の概要を提供しました。組み込みモデルの準備が整うと、サイトはクライアントサイドで推論の実行に切り替わりました。

常に、親しみやすく、コミュニケーションをとりやすいインターフェースを作成するようにしてください。

  • モデルのダウンロードに進行状況バーを実装し、レスポンスの遅延を軽減します。
  • モデルのダウンロードの透明性について検討してください。Bright Sites は、リソースの使用の透明性と同意を可能にするために、モデルのダウンロードについてユーザーに通知していました。ユーザーは、続行する前に承諾または拒否できます。

結論と推奨事項

redBus と Miravia の実際の例は、Summarizer API がユーザーのレビューの簡潔で関連性の高い要約を提供することで、ユーザーが十分な情報に基づいて迅速に判断できるようにした方法を示しています。この API は、追加のビジネス費用をかけることなく、技術的な複雑さを低く抑えながらクライアントサイドで動作できるため、情報を要約する必要がある同様のユースケースに適しています。すべての組み込み AI API は、実用的なクライアントサイド AI ユースケースを可能にします。

Summarizer API が他のユースケースにどのように役立つかについては、また、Summarizer API が記事のエンゲージメントを高める方法についても説明しました。

これらの API を使用して新しいものを構築しようとしていますか?X の@ChromiumDev または LinkedIn の Chromium for Developers でぜひお寄せください。

リソース

謝辞

このドキュメントの作成とレビューにご協力いただいた、Miravia(Alibaba Group)の Makakhov Andrey 氏と Ziyi Liang 氏、redBus の Amit Kumar 氏、Swetha Gopalakrishnan 氏、Alexandra Klepper 氏、Thomas Steiner 氏、Kenji Baheux 氏に感謝いたします。