公開日: 2024 年 11 月 11 日
長い記事、複雑なドキュメント、活発なチャット会話を簡潔で洞察に満ちた要約にまとめる機能をユーザーに提供できるとしたらどうでしょう。
Summarizer API を使用すると、さまざまな長さと形式(文、段落、箇条書きリストなど)でさまざまなタイプの要約を生成できます。この API は、次のようなシナリオで役立ちます。
- 記事やチャット会話の要点をまとめる。
- 記事のタイトルと見出しの候補を表示する。
- 長いテキストの簡潔で有益な要約を作成する。
- 書籍のレビューに基づいて書籍の予告編を生成している。
対象
- Chrome 131 ~ Chrome 136 で実施される Summarizer API オリジン トライアルに参加できます。オリジン トライアルでは、オリジンの実際のユーザーに Chrome で機能を提供できます。
- 実装の進捗状況については、Chrome のステータスをご覧ください。
- Summarizer API の提案は、一連の書き込み API の一部であり、議論の対象となっています。
- 早期プレビュー プログラムに参加して、新しい組み込み AI API をいち早くお試しください。また、メーリング リストでのディスカッションにもご参加いただけます。
オリジン トライアルに登録する
Summarizer API の使用を開始する手順は次のとおりです。
- Google の生成 AI の使用禁止に関するポリシーに同意します。
- Summarizer API オリジン トライアルに移動します。
- [登録] をクリックし、フォームに入力します。
- [ウェブ オリジン] フィールドに、オリジンまたは拡張機能 ID
chrome-extension://YOUR_EXTENSION_ID
を指定します。
- [ウェブ オリジン] フィールドに、オリジンまたは拡張機能 ID
- 送信するには、[登録] をクリックします。
- 提供されたトークンをコピーし、トライアルを有効にするオリジンまたは拡張機能のファイルのすべてのウェブページに追加します。
- 拡張機能を作成する場合は、拡張機能の送信元トライアルの手順に沿って操作します。
- Summarizer API の使用を開始する。
詳しくは、オリジン トライアルの利用を開始する方法をご覧ください。
オリジン トライアルの制限事項
オリジン トライアルでは、モデルの品質が英語コンテンツでのみ徹底的にテストされているため、Summarizer API は英語テキストの要約のみをサポートしています。品質と安全性について追加の言語をテストし、API が広く利用可能になったら、この制限を解除する予定です。
localhost のサポートを追加
オリジン トライアル中に localhost
で Summarizer API にアクセスするには、Chrome Canary が必要です。次に、次の手順を実施します。
- Windows、Mac、Linux のいずれかのプラットフォームで Chrome Canary を開きます。
chrome://flags/#summarization-api-for-gemini-nano
に向かいます。- [有効] を選択します。
- [再起動] をクリックするか、Chrome を再起動します。
Summarizer API を使用する
まず、機能検出を実行して、ブラウザが Summarizer API をサポートしているかどうかを確認します。
if ('ai' in self && 'summarizer' in self.ai) {
// The Summarizer API is supported.
}
モデルのダウンロード
Summarizer API は、高品質な要約を生成するようにトレーニングされた強力な AI モデルを使用します。API は Chrome に組み込まれていますが、ウェブサイトが API を初めて使用するときにモデルが個別にダウンロードされます。
モデルの使用準備ができているかどうかを確認するには、非同期 ai.summarizer.capabilities()
関数を呼び出します。available
フィールドを持つ AISummarizerCapabilities
オブジェクトを返します。このフィールドには、次の 3 つの値を指定できます。
no
: 現在のブラウザは Summarizer API をサポートしていますが、現時点では使用できません。モデルをダウンロードするための空きディスク容量が不足しているなど、さまざまな原因が考えられます。readily
: 現在のブラウザは Summarizer API をサポートしており、すぐに使用できます。after-download
: 現在のブラウザは Summarizer API をサポートしていますが、まずモデルをダウンロードする必要があります。
モデルのダウンロードをトリガーして要約ツールを作成するには、非同期の ai.summarizer.create()
関数を呼び出します。capabilities()
へのレスポンスが after-download
だった場合は、ダウンロードの進行状況をリッスンすることをおすすめします。これにより、ダウンロードに時間がかかる場合はユーザーに通知できます。
const summarizer = await ai.summarizer.create({
monitor(m) {
m.addEventListener('downloadprogress', (e) => {
console.log(`Downloaded ${e.loaded} of ${e.total} bytes.`);
});
}
});
API 関数
create()
関数を使用すると、ニーズに合わせて新しい要約オブジェクトを構成できます。次のパラメータを持つ省略可能な options
オブジェクトを受け取ります。
sharedContext
: 要約ツールに役立つ追加の共有コンテキスト。type
: 要約のタイプ。有効な値はkey-points
(デフォルト)、tl;dr
、teaser
、headline
です。format
: 要約の形式。使用できる値はmarkdown
(デフォルト)とplain-text
です。length
: 要約の長さ。使用できる値はshort
、medium
(デフォルト)、long
です。これらの長さの意味は、リクエストされたtype
によって異なります。たとえば、Chrome の実装では、短い要約は 3 つの箇条書きで構成され、短い要約は 1 文で構成されます。長い要約は 7 つの箇条書きで構成され、長い要約は 1 つの段落で構成されます。
次の例は、要約ツールを初期化する方法を示しています。
const options = {
sharedContext: 'This is a scientific article',
type: 'key-points',
format: 'markdown',
length: 'medium',
};
const available = (await self.ai.summarizer.capabilities()).available;
let summarizer;
if (available === 'no') {
// The Summarizer API isn't usable.
return;
}
if (available === 'readily') {
// The Summarizer API can be used immediately .
summarizer = await self.ai.summarizer.create(options);
} else {
// The Summarizer API can be used after the model is downloaded.
summarizer = await self.ai.summarizer.create(options);
summarizer.addEventListener('downloadprogress', (e) => {
console.log(e.loaded, e.total);
});
await summarizer.ready;
}
要約ツールを実行する
要約ツールを実行するには、ストリーミングと非ストリーミングの 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.',
});
ストリーミングの要約
ストリーミングの要約では、結果がリアルタイムで提供されます。入力が追加または調整されると、出力が継続的に更新されます。
ストリーミング サマリーを取得するには、サマライザの summarizeStreaming()
関数を呼び出します。次に、ストリーム内の使用可能なテキスト セグメントを反復処理します。
let result = '';
let previousChunk = '';
for await (const chunk of stream) {
const newChunk = chunk.startsWith(previousChunk)
? chunk.slice(previousChunk.length) : chunk;
console.log(newChunk);
result += newChunk;
previousChunk = chunk;
}
console.log(result);
summarizeStreaming()
は ReadableStream
を返します。この場合、レスポンス セグメントは互いに連続して構築されます。つまり、各レスポンスには、次のセグメントだけでなく、その時点で生成されたサマリー全体が含まれます。これは意図した動作ではありません。
セグメントは単一の長いストリームの連続した部分であるため、プラットフォーム上の他のストリーミング API と整合させる予定です。現時点では、意図した動作を実現するために、次を実装します。
let result = '';
let previousLength = 0;
for await (const segment of stream) {
const newContent = segment.slice(previousLength);
console.log(newContent);
previousLength = segment.length;
result += newContent;
}
console.log(result);
デモ
Summarizer API は、Summarizer API Playground で試すことができます。
標準化の取り組み
Google は、クロスブラウザの互換性を確保するため、Summarizer API の標準化に取り組んでいます。
Google の API 提案はコミュニティのサポートを受け、W3C ウェブ インキュベーター コミュニティ グループに移行され、さらに議論されています。Chrome チームは W3C 技術アーキテクチャ グループにフィードバックをリクエストし、Mozilla と WebKit に標準に関する立場を尋ねました。
参加してフィードバックを共有する
オリジン トライアルに参加して Summarizer API のテストを始め、フィードバックをお寄せください。ご意見は、この API の今後のバージョンとすべての組み込み AI API の構築と実装に直接影響します。
- Chrome の実装に関するフィードバックについては、バグの報告または機能リクエストを送信してください。
- GitHub で Summarizer API の設計についてディスカッションする。既存の問題にコメントするか、新しい問題を作成します。
- Web Incubator コミュニティ グループに参加して、標準化の取り組みに参加してください。