公開日: 2025 年 5 月 20 日
商品の解説 | ウェブ | 拡張機能 | Chrome ステータス | インテント |
---|---|---|---|---|
GitHub | 表示 | テストの目的 |
Writer API を使用すると、指定されたライティング タスクに準拠した新しいコンテンツを作成できます。Writer API と Rewriter API は、Writing Assistance APIs の提案の一部です。
これらのパートナー API を使用すると、ユーザーが作成したコンテンツを改善できます。
ユースケース
最初のアイデアとオプションのコンテキストに基づいて、新しいコンテンツを作成します。この機能は、次の目的で使用できます。
- ユーザーがレビュー、ブログ投稿、メールなどのあらゆる種類のコンテンツを作成できるようにします。
- ユーザーがより適切なサポート リクエストを作成できるようにします。
- 特定のスキルをより適切に捉えるために、一連の作品例の紹介文を作成します。
ユースケースが見つからない場合は、早期プレビュー プログラムに参加して、フィードバックをお寄せください。
始める
Chrome 137 ~ 142 で実施される Writer API オリジン トライアルに参加する。
ハードウェア要件を確認する
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
にアクセスして [モデルのステータス] に移動します。リストに表示された [ファイルパス] を開いて、モデルのサイズを確認します。
オリジン トライアルに登録する
Writer API は、Rewriter API との共同オリジン トライアルで利用できます。これらの API の使用を開始するには:
- Google の生成 AI の使用禁止に関するポリシーに同意します。
- Writer API のオリジン トライアルに移動します。
- [登録] をクリックし、フォームに必要事項を記入します。[ウェブ オリジン] フィールドに、オリジンまたは拡張機能の ID(
chrome-extension://YOUR_EXTENSION_ID
)を指定します。 - [登録] をクリックして送信します。
- 提供されたトークンをコピーして、オリジンの参加しているすべてのウェブページに追加するか、拡張機能のマニフェストに含めます。
- Writer API と Rewriter API の使用を開始します。
詳しくは、オリジン トライアルを開始するをご覧ください。
localhost のサポートを追加
オリジン トライアル中に localhost で Writer API と Rewriter API にアクセスするには、Chrome を最新バージョンに更新する必要があります。続いて、次の手順を実行します。
chrome://flags/#writer-api-for-gemini-nano
に向かいます。- [有効] を選択します。
- [再起動] をクリックするか、Chrome を再起動します。
Writer API を使用する
まず、機能検出を実行して、ブラウザがこれらの API をサポートしているかどうかを確認します。
if ('Writer' in self) {
// The Writer API is supported.
}
Writer API と他のすべての組み込み AI API は、ブラウザに統合されています。Gemini Nano は、ウェブサイトが組み込みの AI API を初めて使用するときに個別にダウンロードされます。実際には、ユーザーが組み込み API をすでに操作している場合、モデルはブラウザにダウンロードされています。
モデルを使用できる状態かどうかを判断するには、非同期の Writer.availability()
関数を呼び出します。次の 4 つの値のいずれかを取る文字列を返します。
unavailable
: ブラウザは Writer API をサポートしていますが、現時点では使用できません。これには、モデルをダウンロードするためのディスク空き容量が不足しているなど、さまざまな理由が考えられます。available
: ブラウザが Writer API をサポートしており、すぐに使用できます。downloadable
: ブラウザは Writer API をサポートしていますが、最初にモデルをダウンロードする必要があります。downloading
: ブラウザは Writer API をサポートしており、現在モデルをダウンロードしています。
モデルのダウンロードをトリガーしてライターを開始するには、Writer.create()
関数を呼び出します。availability()
へのレスポンスが downloadable
だった場合は、ダウンロードの進行状況をリッスンし、ダウンロードに時間がかかる可能性があることをユーザーに伝えます。
const writer = await Writer.create({
monitor(m) {
m.addEventListener("downloadprogress", e => {
console.log(`Downloaded ${e.loaded * 100}%`);
});
}
});
API 関数
create()
関数を使用すると、新しいライター オブジェクトを構成できます。次のパラメータを含むオプションの options
オブジェクトを受け取ります。
tone
: 文章のトーンは、コンテンツのスタイル、キャラクター、態度を指すことがあります。値はformal
、neutral
(デフォルト)、casual
に設定できます。format
: 出力形式。使用できる値はmarkdown
(デフォルト)とplain-text
です。length
: 出力の長さ。使用できる値はshort
、medium
(デフォルト)、long
です。sharedContext
: 複数の出力を記述する場合、共有コンテキストを使用すると、モデルが期待どおりのコンテンツを生成しやすくなります。
次の例は、writer
オブジェクトを初期化する方法を示しています。
const options = {
sharedContext: 'This is an email to acquaintances about an upcoming event.',
tone: 'casual',
format: 'plain-text',
length: 'medium',
};
const available = await Writer.availability();
let writer;
if (available === 'unavailable') {
// The Writer API isn't usable.
return;
}
if (available === 'available') {
// The Writer API can be used immediately .
writer = await Writer.create(options);
} else {
// The Writer can be used after the model is downloaded.
const writer = await Writer.create({
...options,
monitor(m) {
m.addEventListener("downloadprogress", e => {
console.log(`Downloaded ${e.loaded * 100}%`);
});
}
});
}
ジャーナルを書く
モデルから書き込みを出力する方法は、非ストリーミングとストリーミングの 2 つがあります。
非ストリーミング出力
非ストリーミング書き込みでは、モデルは入力を全体として処理してから出力を生成します。
ストリーミング以外の出力を取得するには、非同期の write()
関数を呼び出します。作成したいコンテンツのプロンプトを含める必要があります。必要に応じて context
を追加してモデルの背景情報を提供できます。これにより、モデルが期待どおりの出力を生成しやすくなります。
// Non-streaming
const writer = await Writer.create();
const result = await writer.write(
"An inquiry to my bank about how to enable wire transfers on my account.", {
context: "I'm a longstanding customer",
},
);
ストリーム書き込みの出力
ストリーミングは結果をリアルタイムで提供します。入力が追加、調整されると、出力は継続的に更新されます。
ストリーミング ライターを取得するには、writeStreaming()
関数を呼び出し、ストリーム内の使用可能なテキスト セグメントを反復処理します。必要に応じて context
を追加してモデルの背景情報を提供できます。これにより、モデルが期待どおりの出力を生成しやすくなります。
// Streaming
const writer = await Writer.create();
const stream = writer.writeStreaming(
"An inquiry to my bank about how to enable wire transfers on my account.", {
context: "I'm a longstanding customer",
},
);
for await (const chunk of stream) {
composeTextbox.append(chunk);
}
複数のタスクのコンテキストを共有する
writer
を使用して複数のコンテンツを生成することもできます。この場合、sharedContext
を追加すると便利です。たとえば、レビュー担当者がコメントでより良いフィードバックを提供できるようにしたい場合があります。
// Shared context and per writing task context
const writer = await Writer.create({
sharedContext: "This is for publishing on [popular website name], a business and employment-focused social media platform."
});
const stream = writer.writeStreaming(
"Write a blog post about how I love all this work on gen AI at Google!" +
"Mention that there's 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."}
);
for await (const chunk of stream) {
composeTextbox.append(chunk);
}
ライターを再利用する
同じライターを使用して複数のコンテンツを作成できます。
// Reuse a writer
const writer = await Writer.create({ tone: "formal" });
const reviews = await Promise.all(
Array.from(
document.querySelectorAll("#reviews > .review"),
(reviewEl) => writer.write(reviewEl.textContent)
),
);
ライターを停止する
書き込みプロセスを終了するには、コントローラを中止してライターを破棄します。
// Aborting a writer
const controller = new AbortController();
stopButton.onclick = () => controller.abort();
const writer = await Writer.create({ signal: controller.signal });
await writer.write(reviewEl.textContent, { signal: controller.signal });
// Destroying a writer
writer.destroy();
デモ
意見交換とフィードバックの提供
Writer API と Rewriter API は現在活発な議論の対象となっており、今後変更される可能性があります。この API をお試しになり、フィードバックがございましたら、ぜひお聞かせください。
- 説明を読む、質問をする、ディスカッションに参加する。
- Chrome での実装については、Chrome Status をご覧ください。
- 早期プレビュー プログラムに参加して、新しい API をいち早く確認し、メーリング リストにアクセスしましょう。
- Chrome の実装についてフィードバックがある場合は、Chromium のバグを報告してください。
ブラウザで、Gemini Nano やその他のエキスパート モデルなど、モデルを使用するすべての組み込み AI API を確認できます。