組み込みの AI による要約

公開日: 2024 年 11 月 11 日、最終更新日: 2025 年 5 月 20 日

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

ユーザーは、長い記事、複雑なドキュメント、活発なチャットの会話などを、簡潔で洞察に満ちた要約にまとめることができます。

Summarizer API を使用すると、文、段落、箇条書きリストなど、さまざまな長さと形式のさまざまな種類の要約を生成できます。この API は、次のようなシナリオで役立ちます。

  • 記事やチャットの会話の要点をまとめる。
  • 記事のタイトルと見出しを提案します。
  • 長いテキストの簡潔で有益な要約を作成します。
  • 書評に基づいて書籍のティーザーを生成する。

始める

要約ツール API は Chrome 138 安定版から利用できます。

この API を使用する前に、Google の生成 AI の使用禁止に関するポリシーを確認してください。

機能検出を実行して、ブラウザが Summarizer API をサポートしているかどうかを確認します。

if ('Summarizer' in self) {
  // The Summarizer API is supported.
}

ハードウェア要件を確認する

Chrome でこれらの API を使用して機能を操作するデベロッパーとユーザーには、次の要件があります。他のブラウザでは動作要件が異なる場合があります。

言語検出 API と翻訳 API は、パソコン版 Chrome で動作します。これらの API はモバイル デバイスでは動作しません。Prompt API、Summarizer API、Writer API、Rewriter API は、次の条件を満たす場合に Chrome で動作します。

  • オペレーティング システム: Windows 10 または 11、macOS 13 以降(Ventura 以降)、Linux。Gemini Nano を使用する API は、Chrome for Android、iOS、ChromeOS ではまだサポートされていません。
  • ストレージ: Chrome プロファイルを含むボリュームに 22 GB 以上の空き容量が必要です。
  • GPU: 4 GB を超える VRAM。
  • ネットワーク: 無制限のデータ通信または従量制でない接続。

Gemini Nano の正確なサイズは、ブラウザがモデルを更新するにつれて変化する可能性があります。現在のサイズを確認するには、chrome://on-device-internals にアクセスして [モデルのステータス] に移動します。リストに表示された [ファイルパス] を開いて、モデルのサイズを確認します。

モデルのダウンロード

Summarizer API は、高品質の要約を生成するようにトレーニングされたモデルを使用します。この API は Chrome に組み込まれており、Gemini Nano はウェブサイトがこの API を初めて使用するときにダウンロードされるモデルです。

モデルを使用できる状態かどうかを判断するには、非同期の Summarizer.availability() 関数を呼び出します。次の値を含む Promise を返します。

  • "unavailable" は、実装がリクエストされたオプションをサポートしていないことを意味します。
  • "downloadable" は、実装がリクエストされたオプションをサポートしていることを意味しますが、まずブラウザがモデル(Chrome の場合は Gemini Nano)やモデルのファインチューニングなどの何かをダウンロードする必要があります。
  • "downloading" は、実装がリクエストされたオプションをサポートしているが、続行する前に進行中のダウンロードを完了する必要があることを意味します。
  • "available" は、実装がリクエストされたオプションをサポートしており、要約ツールが続行できることを意味します。

モデルのダウンロードをトリガーして要約ツールを作成するには、非同期の Summarizer.create() 関数を呼び出します。availability() のレスポンスが downloadable または downloading の場合、ダウンロードの進行状況をリッスンすることをおすすめします。これにより、ユーザーに通知し、要約が行われる前にダウンロードが完了するまでに時間がかかる可能性があることを示すことができます。

const summarizer = await Summarizer.create({
  monitor(m) {
    m.addEventListener('downloadprogress', (e) => {
      console.log(`Downloaded ${e.loaded * 100}%`);
    });
  }
});

API 関数

create() 関数を使用すると、ニーズに合わせて新しい要約オブジェクトを構成できます。次のパラメータを含むオプションの options オブジェクトを受け取ります。

  • sharedContext: 要約に役立つ追加の共有コンテキスト。
  • type: 要約のタイプ。使用できる値は key-points(デフォルト)、tldrteaserheadline です。詳細は下の表をご覧ください。
  • format: 要約の形式。使用できる値は markdown(デフォルト)と plain-text です。
  • length: 要約の長さ。使用できる値は shortmedium(デフォルト)、long です。これらの長さの意味は、リクエストされた type によって異なります。たとえば、Chrome の実装では、短い要約は 3 つの箇条書きで構成され、短い概要は 1 文です。

一度設定したパラメータは変更できません。パラメータを変更する必要がある場合は、新しい要約オブジェクトを作成します。

次の表に、さまざまな種類の要約とその長さを示します。長さは最大値を表します。結果が短くなることもあります。

タイプ 意味 長さ
"tldr" 要約は短く、要点を押さえたものにする必要があります。忙しい読者が入力内容を簡単に把握できるようにします。
short 1 文
3 文
long 5 文
"teaser" 要約は、入力の最も興味深い部分や魅力的な部分に焦点を当て、読者がもっと読みたいと思うように設計する必要があります。
short 1 文
3 文
long 5 文
"key-points" 要約では、入力から最も重要なポイントを抽出し、箇条書きで表示する必要があります。
short 3 つの箇条書き
5 個の箇条書き
long 7 つの箇条書き
"headline" 要約は、記事の見出しの形式で、入力の要点を 1 つの文に効果的に含める必要があります。
short 12 ワード
17 ワード
long 22 ワード

次の例は、要約ツールを初期化する方法を示しています。

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);

要約ツールを実行する

要約ツールを実行する方法は、ストリーミングとバッチ(非ストリーミング)の 2 つあります。

バッチ要約

バッチ要約では、モデルは入力を全体として処理し、出力を生成します。

バッチの概要を取得するには、summarize() 関数を呼び出します。最初の引数は、要約するテキストです。2 つ目の省略可能な引数は、context フィールドを含むオブジェクトです。このフィールドでは、要約の精度を高める可能性がある背景情報を追加できます。

const longText = document.querySelector('article').innerHTML;
const summary = await summarizer.summarize(longText, {
  context: 'This article is intended for a tech-savvy audience.',
});

ストリーミングの要約

ストリーミング要約では、結果がリアルタイムで提供されます。入力が追加、調整されると、出力は継続的に更新されます。ストリーミングの概要を取得するには、summarize() ではなく summarizeStreaming() を呼び出します。

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);
}

デモ

Summarizer API は、Summarizer API Playground で試すことができます。

標準化の労力

Google は、ブラウザ間の互換性を確保するため、要約ツール API の標準化に取り組んでいます。

API の提案はコミュニティの支持を得て、さらなる議論のために W3C Web Incubator Community Group に移行しました。Chrome チームは W3C Technical Architecture Group にフィードバックを求め、MozillaWebKit に標準化に関する立場を尋ねました。

Web Incubator Community Group に参加して、標準化の取り組みに参加します。

フィードバックを共有

Summarizer API を使用して構築したものをぜひお見せください。XYouTubeLinkedIn で、ウェブサイトやウェブ アプリケーションを共有してください。

Chrome の実装に関するフィードバックについては、バグレポートまたは機能リクエストを送信してください。