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

Cecilia Cong
Cecilia Cong
Hadyan Andika
Hadyan Andika

公開日: 2025 年 5 月 15 日、最終更新日: 2026 年 5 月 27 日

e コマース サイトや旅行サイトなど、ユーザー レビューのあるウェブサイトには、大量の情報が含まれていることがよくあります。そのため、ユーザーは多くのレビューを読み解いて購入を決定するのに時間がかかることがあります。レビューの概要を提供することで、ユーザーはフィードバックを理解しやすくなり、時間を節約できます。

redBusMiravia が Summarizer API を使用して意思決定と購入体験を改善した方法をご確認ください。Miravia がレビューの概要を追加したことで、商品ページとサイト全体のコンバージョン率が向上しました。

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

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

redBus は、お客様が最適なバスのオプションを決定するのに役立ちます

redBus はインド最大のバス会社で、3,000 万人を超える顧客を抱え、全国の約 10,000 の都市や町でバスサービスを提供しています。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> は、快適さ、清潔さ、スタッフのサービスについて一般的に高評価を得ています。遅延、運転手の態度(失礼)、アメニティの不足(ライブ トラッキング、ブランケット)、不快感(シートのサイズ、ショック アブソーバーの不良)などの軽微な問題が発生したという報告もあります。

このレビューは、リクエストされた要件を満たしており、肯定的な点と否定的な点が短い段落にまとめられているため、308 件の個別のレビューよりもはるかに読みやすくなっています。

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

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

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

「以前は、商品レビューの主な長所と短所を把握するには、詳細ページの個々のコメントを多数読み込む必要がありました。ユーザーが顧客の全体的な感情をすばやく把握できるように、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 unavailable, throw an error with the message from deviceCheck
    throw new Error(
      message ||
        'AI summarization tools are not supported on this device or browser.'
    );
  }
};

コンバージョン率が向上

Summarizer API が本番環境で利用可能になって以来、Miravia は、要約が次の結果につながることを確認しています。

  • 商品ページのコンバージョン率が 12.4% 向上。
  • ウェブサイト全体のコンバージョン率が 3.3% 向上しました。

ベスト プラクティス

レビュー入力がトークン上限を超える場合は、次の軽減策を実施します。

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

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

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

常に、使いやすくコミュニケーションしやすいインターフェースを作成するように努める必要があります。

  • モデルのダウンロードの進行状況バーを実装し、レスポンスの遅延を軽減します。
  • モデルのダウンロードに関する透明性を考慮します。Bright Sites は、リソースの使用に関する透明性と同意を確保するため、モデルのダウンロードについてユーザーに通知しました。これにより、ユーザーは続行する前に同意または拒否できます。

結論と推奨事項

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

Summarizer API が他のユースケースにどのように役立つかについては、また、要約 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 氏に感謝いたします。