公開日: 2025 年 10 月 22 日
| 商品の解説 | ウェブ | 拡張機能 | Chrome のステータス | インテント |
|---|---|---|---|---|
| GitHub | 表示 | 試験運用版のインテント |
Rewriter API は、テキストの修正と再構成に役立ちます。この API と Writer API は、 Writing Assistance APIs の提案の一部です。
これらの API は、ユーザーが作成したコンテンツの改善に役立ちます。
ユースケース
テキストを長くしたり短くしたり、トーンを変更したりして、既存のテキストを改善します。たとえば、次のようなことができます。
- 短いメールを書き直して、より丁寧でフォーマルな表現にする。
- 他のユーザーがフィードバックを理解したり、有害なコンテンツを削除したりできるように、カスタマー レビューの編集を提案する 。
- 特定の視聴者の期待に応えるようにコンテンツをフォーマットする。
ユースケースが見つかりませんか?早期プレビュー プログラムに参加してフィードバックをお寄せください。
始める
Rewriter API オリジン トライアルに参加する Chrome 137 ~ 148 で実行されています。
ハードウェア要件を確認する
Chrome でこれらの API を使用して機能を操作するデベロッパーとユーザーには、次の要件があります。他のブラウザでは、動作要件が異なる場合があります。
Language Detector API と Translator API は、パソコン版 Chrome で動作します。これらの API はモバイル デバイスでは動作しません。
Prompt API、Summarizer API、Writer API、Rewriter API、Proofreader 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 コア。
- ネットワーク: 無制限のデータまたは従量制課金ではない接続。
Gemini Nano の正確なサイズは、ブラウザがモデルを更新するにつれて変わる可能性があります。現在のサイズを確認するには、chrome://on-device-internals にアクセスしてください。
オリジン トライアルに登録する
Rewriter API は、Writer API との共同オリジン トライアルで利用できます。 これらの API の使用を開始するには:
- Google の生成 AI の禁止事項に関するポリシーに同意します。
- Rewriter API オリジン トライアルに移動します。
- [登録] をクリックしてフォームに記入します。[ウェブオリジン] フィールドに、
オリジンまたは
拡張機能 ID
chrome-extension://YOUR_EXTENSION_IDを入力します。 - 送信するには、[登録] をクリックします。
- 提供されたトークンをコピーして、オリジンの参加しているすべてのウェブページに追加するか、拡張機能のマニフェストに含めます。
- Rewriter API の使用を開始します。
オリジン トライアルの開始方法について詳しくは、こちらをご覧ください。
localhost のサポートを追加する
localhost で Rewriter API にアクセスするには、 Chrome フラグを使用します。
chrome://flags/#optimization-guide-on-device-modelを [有効] に設定します。- 次のフラグを [**有効**] または [**多言語対応を有効にする**] に設定します:
chrome://flags/#prompt-api-for-gemini-nano-multimodal-inputchrome://flags/#writer-api-for-gemini-nano
- [再起動] をクリックするか、Chrome を再起動します。
Rewriter API を使用する
まず、機能検出を実行して、ブラウザがこれらの API をサポートしているかどうかを確認します。
if ('Rewriter' in self) {
// The Rewriter API is supported.
}
Rewriter API とその他のすべての組み込み AI API は、ブラウザに統合されています。 ウェブサイトが組み込み AI API を初めて使用するときに、Gemini Nano が個別にダウンロードされます。実際には、ユーザーが組み込み API をすでに操作している場合、モデルはブラウザにダウンロードされています。
モデルを使用できる状態かどうかを確認するには、非同期の
Rewriter.availability() 関数を呼び出します。
availability() へのレスポンスが downloadable の場合は、
ダウンロードに時間がかかる可能性があるため、ダウンロードの進捗状況をリッスンしてユーザーに通知します。
const availability = await Rewriter.availability();
モデルのダウンロードをトリガーして書き換えツールを開始するには、
ユーザーのアクティベーション
を確認して Rewriter.create() 関数を呼び出します。
const rewriter = await Rewriter.create({
monitor(m) {
m.addEventListener("downloadprogress", e => {
console.log(`Downloaded ${e.loaded * 100}%`);
});
}
});
API 関数
create() 関数を使用すると、新しい書き換えオブジェクトを構成できます。次のパラメータを含む
オプションの options オブジェクトを受け取ります。
tone: 書き言葉のトーン は、コンテンツのスタイル、キャラクター、態度を指します。値は、more-formal、as-is(デフォルト)、more-casualに設定できます。format: 出力フォーマット。使用できる値はas-is(デフォルト)、markdown、plain-textです。length: 出力の長さ。使用できる値はshorter、as-is(デフォルト)、longerです。sharedContext: 複数のコンテンツを書き換える場合、 共有コンテキストを使用すると、モデルが期待に沿ったコンテンツを作成しやすくなります。
次の例は、rewriter オブジェクトを開始する方法を示しています。
const options = {
sharedContext: 'This is an email to acquaintances about an upcoming event.',
tone: 'more-casual',
format: 'plain-text',
length: 'shorter',
};
const available = await Rewriter.availability();
let rewriter;
if (available === 'unavailable') {
// The Rewriter API isn't usable.
return;
}
if (available === 'available') {
// The Rewriter API can be used immediately .
rewriter = await Rewriter.create(options);
} else {
// The Rewriter can be used after the model is downloaded.
rewriter = await Rewriter.create(options);
rewriter.addEventListener('downloadprogress', (e) => {
console.log(e.loaded, e.total);
});
}
想定される言語を割り当てる
Rewriter API は複数の言語をサポートしています。セッションを作成するときに、想定される入力言語、出力言語、 コンテキスト言語を設定します。 これにより、ブラウザが 特定の言語の組み合わせをサポートできない場合に、ブラウザがリクエストを拒否できます。
const rewriter = await Rewriter.create({
tone: "more-formal",
expectedInputLanguages: ["en", "ja", "es"],
expectedContextLanguages: ["en", "ja", "es"],
outputLanguage: "es",
sharedContext: "These are requests to rewrite messages to teachers in a
Spanish language program, by students who may speak Spanish, Japanese, or
English. Staff expect questions to be written in Spanish."
});
書き換えを開始する
モデルからコンテンツを出力する方法は、リクエスト ベースの出力と ストリーミングの 2 つがあります。
リクエスト ベースの出力
リクエスト ベースの出力(または「非ストリーミング」)の場合、モデルは入力全体が生成されるまで待機し、その入力をまとめて処理してから出力します。
リクエスト ベースの出力を取得するには、非同期の rewrite() 関数を呼び出します。書き換えたい元のテキストを含める必要があります。オプションの
contextを追加して、モデルの背景情報を提供できます。これにより、
モデルが期待どおりの出力を生成しやすくなります。
// Request-based
const rewriter = await Rewriter.create({
sharedContext: "A review for the Flux Capacitor 3000 from TimeMachines Inc."
});
const result = await rewriter.rewrite(reviewEl.textContent, {
context: "Avoid any toxic language and be as constructive as possible."
});
ストリーム書き換え出力
ストリーミングでは、結果がリアルタイムで提供されます。入力が追加、調整されると、出力が 継続的に 更新されます。
ストリーミング書き換えツールを取得するには、rewriteStreaming() 関数を呼び出して、ストリーム内の使用可能なテキスト セグメントを
反復処理します。オプションの
contextを追加して、モデルの背景情報を提供できます。これにより、モデルが
期待どおりの出力を生成しやすくなります。
const rewriter = await Rewriter.create({
sharedContext: "A review for the Flux Capacitor 3000 from TimeMachines Inc."
});
const stream = rewriter.rewriteStreaming(reviewEl.textContent, {
context: "Avoid any toxic language and be as constructive as possible.",
tone: "more-casual",
});
for await (const chunk of stream) {
composeTextbox.append(chunk);
}
複数のタスクでコンテキストを共有する
rewriter を使用して複数のコンテンツを生成することがあります。この
場合は、sharedContext を追加すると便利です。たとえば、
レビュー担当者がコメントでより良いフィードバックを提供できるようにしたい場合があります。
// Shared context and per writing task context
const rewriter = await Rewriter.create({
sharedContext: "This is for publishing on [popular website name], a business and employment-focused social media platform."
});
const stream = rewriter.rewriteStreaming(
"Love all this work on generative AI at Google! So much to learn and so many new things I can do!",
{
context: "The request comes from someone working at a startup providing an e-commerce CMS solution.",
tone: "more-casual",
}
);
for await (const chunk of stream) {
composeTextbox.append(chunk);
}
書き換えツールを再利用する
同じ書き換えツールを使用して、複数のコンテンツを編集できます。特に、書き換えツールをフィードバック ツールやコメント ツールに追加して、 ライターが有益なフィードバックを提供できるようにする場合に便利です。
// Reusing a rewriter
const rewriter = await Rewriter.create({
sharedContext: "A review for the Flux Capacitor 3000 from TimeMachines Inc."
});
const rewrittenReviews = await Promise.all(
Array.from(
document.querySelectorAll("#reviews > .review"),
(reviewEl) => rewriter.rewrite(reviewEl.textContent, {
context: "Avoid any toxic language and be as constructive as possible.",
tone: "more-casual",
})
),
);
書き換えツールを停止する
書き換えプロセスを終了するには、コントローラを中止して rewriter を破棄します。
// Stop a rewriter
const controller = new AbortController();
stopButton.onclick = () => controller.abort();
const rewriter = await Rewriter.create({ signal: controller.signal });
await rewriter.rewrite(reviewEl.textContent, { signal: controller.signal });
// Destroy a rewriter
rewriter.destroy();
デモ
権限ポリシー、iframe、ウェブワーカー
デフォルトでは、Rewriter 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 Rewriter API by
setting the `allow="rewriter"` attribute.
-->
<iframe src="https://cross-origin.example.com/" allow="rewriter"></iframe>
Rewriter API はウェブワーカーでは使用できません。これは、 権限ポリシーのステータスを確認するために、各ワーカーの責任あるドキュメントを確立することが複雑であるためです。
意見交換とフィードバックの提供
Writer API と Rewriter API は現在、活発な議論が行われており、今後変更される可能性があります 。この API をお試しになり、フィードバックをお寄せください。
- 解説を読んで、 質問をしたり、ディスカッションに参加したりしてください。
- Chrome のステータス を確認して、Chrome での Rewriter API の実装を確認してください。
- Chrome の実装についてフィードバックがある場合は、 Chromium のバグを報告してください。
- 早期プレビュー プログラムに参加して、 新しい API をいち早く確認し、メーリング リストにアクセスしてください。
モデルを使用するすべての組み込み AI API(Gemini Nano やその他のエキスパート モデルなど)をブラウザで確認してください。