組み込みの AI による要約

公開日: 2024 年 11 月 11 日、最終更新日: 2025 年 7 月 30 日

Browser Support

  • Chrome: 138.
  • Edge: behind a flag.
  • Firefox: not supported.
  • Safari: not supported.

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

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

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

始める

Summarizer API は Chrome 138 安定版から利用できます。

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

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

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

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

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

Language Detector APITranslator API は、パソコン版 Chrome で動作します。これらの API はモバイル デバイスでは動作しません。

Prompt APISummarizer APIWriter APIRewriter APIProofreader API は、次の条件を満たす場合に Chrome で動作します。

  • オペレーティング システム: Windows 10 または 11、macOS 13 以降(Ventura 以降)、 Linux、またはChromebook Plus デバイスの ChromeOS(プラットフォーム 16389.0.0 以降)。 Gemini Nano を使用する API は、Android、iOS、Chromebook Plus 以外のデバイスの ChromeOS 用 Chrome ではまだサポートされていません 。
  • ストレージ: Chrome プロファイルを含むボリュームに 22 GB 以上の空き容量。
  • GPU または CPU: 組み込みモデルは GPU または CPU で実行できます。
    • GPU: 4 GB を超える VRAM。
    • CPU: 16 GB 以上の RAM と 4 個以上の CPU コア。
    • : 音声入力を使用する Prompt API には GPU が必要です。
  • ネットワーク: 無制限のデータまたは従量制課金ではない接続。

Gemini Nano の正確なサイズは、ブラウザがモデルを更新するにつれて変わる可能性があります。現在のサイズを確認するには、chrome://on-device-internals にアクセスしてください。

モデルのダウンロード

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

モデルを使用できる状態かどうかを確認するには、非同期の Summarizer.availability() 関数を呼び出します。 availability() のレスポンスが downloadable の場合は、ダウンロードの進捗状況をリッスンして、進捗状況をユーザーに通知します。時間がかかる場合があります。

const availability = await Summarizer.availability();

モデルのダウンロードをトリガーしてサマライザーを作成するには、 ユーザーのアクティベーションを確認してから、 非同期の Summarizer.create() 関数を呼び出します。

// Proceed to request batch or streaming summarization
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: 要約の長さ。使用できる値は short(デフォルト)、mediumlong です。これらの長さの意味は、リクエストされた type によって異なります。たとえば、Chrome の実装では、短いキーポイントの要約は 3 つの箇条書きで構成され、短い要約は 1 文です。
  • preference: デベロッパーが高速実行と包括的な機能のどちらを優先するかを示すメカニズム。
    • auto: ブラウザは実行速度と要約機能のバランスを取り、環境、システムの制約、コンテキストに基づいて内部処理を動的に調整することがあります。
    • speed: ブラウザは低レイテンシと高速実行を優先する必要があります。 このアプローチではパフォーマンスが優先されるため、要約機能が制限され、ソーステキストの抽出が細かく行われなかったり、合成が単純になったりする可能性があります。
    • capability: ブラウザは、要約の包括性と一貫性、および要約タイプやその他の構成可能なオプションに関して柔軟性の高いモデルを優先する必要があります。このアプローチでは、微妙なコンテキストを正確に捉え、高度に洗練された要約を作成することに重点を置いているため、レイテンシが高くなり、実行速度が遅くなる可能性があります。

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

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

タイプ 意味 長さ
"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 ワード

たとえば、サマライザーを初期化して、Markdown で中程度の長さのキーポイントを出力できます。

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

// Check for user activation before creating the summarizer
if (navigator.userActivation.isActive) {
  const summarizer = await Summarizer.create(options);
}

想定される言語を割り当てる

Summarizer API は複数の言語をサポートしています。セッションを作成するときに、想定される入力言語、出力言語、コンテキスト言語を設定します。これにより、特定の言語の組み合わせをブラウザがサポートできない場合、ブラウザはリクエストを拒否できます。

const summarizer = await Summarizer.create({
  type: 'key-points',
  expectedInputLanguages: ['en', 'ja', 'es'],
  outputLanguage: 'es',
  expectedContextLanguages: ['en'],
  sharedContext: 'These are requests to summarize articles from a multilanguage newspaper. The users expect a response in Spanish.',
});

サマライザーを実行するには、ストリーミングとバッチ(リクエスト ベースの出力)の 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 Playground で Summarizer API を試すことができます。

権限ポリシー、iframe、ウェブワーカー

デフォルトでは、Summarizer API はトップレベル ウィンドウとその同一オリジンの iframe でのみ使用できます。権限ポリシーの allow="" 属性を使用すると、API へのアクセスをクロスオリジン iframe に委任できます。

<!--
  The hosting site at https://main.example.com can grant a cross-origin iframe
  at https://cross-origin.example.com/ access to the Summarizer API by
  setting the `allow="summarizer"` attribute.
-->
<iframe src="https://cross-origin.example.com/" allow="summarizer"></iframe>

現時点では、Summarizer API はウェブワーカーでは使用できません。これは、権限ポリシーのステータスを確認するために、各ワーカーの責任あるドキュメントを確立することが複雑であるためです。

フィードバックを共有

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

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