Webアプリに自然言語AI機能を追加するとき、これまでは外部APIとバックエンドサーバーが必ずセットで必要でした。
Google ChromeのPrompt APIは、その前提を変えます。ブラウザに組み込まれたGemini NanoモデルをJavaScriptから直接呼び出せるため、APIキーもサーバーも不要でAI機能を実装できます。
この記事でわかること:
- Prompt APIの仕組みとChromeへの組み込み状況
- 動作に必要なハードウェア・OS要件
- セッション作成からプロンプト実行までのコード例
- クラウドGemini APIとの性能・制限の違い
- 実際に使うべき場面と避けるべき場面
Prompt APIとはなにか
https://developer.chrome.com/docs/ai/prompt-api
Prompt APIは、ChromeブラウザにビルトインされたAI推論エンジンをWebから操作するJavaScript APIです。バックグラウンドで動作するGemini Nano(約4GB)をダウンロード済みのデバイスであれば、LanguageModelグローバルオブジェクト経由でAI推論をブラウザ内で実行できます。
Chrome Extensions向けにはChrome 138の安定版で提供されており、通常のWebページ向けはOrigin Trial(試験的提供)として展開中です。
従来の実装と何が変わるのかを整理すると、OpenAIやAnthropicなどの外部APIを使う場合は、ユーザーの入力テキストを外部サーバーへ送信し、バックエンドでAPIキーを管理し、トークンごとに課金が発生していました。Prompt APIではこれらすべてが省略できます。入力テキストはデバイスの外に出ず、初回モデルダウンロード後のAPI呼び出しにネットワーク通信は不要です。
動作に必要な環境
Gemini NanoはGPUまたはCPUで推論を行うため、動作条件があります。
OS: Windows 10/11、macOS 13以降、Linux、ChromeOS(Chromebook Plus)。モバイル版Chrome(Android・iOS)は現時点で未対応です。
ストレージ: Chromeプロファイルが置かれているドライブに22GB以上の空き容量が必要です。
GPU/CPU: VRAMが4GBを超えるGPU、またはRAM 16GB以上かつCPUコア4つ以上の構成が条件です。
Chrome: バージョン138以降。Webページ向けにはOrigin Trialトークンの登録が必要です。
モデルは初回利用時に自動ダウンロードされます。進捗を取得して進捗表示UIを実装するのが推奨されており、ダウンロード後は起動から推論完了まで50〜300msで返答が返ります。
基本的な使い方
APIの操作は3ステップです。利用可否の確認、セッションの作成、プロンプトの送信。
if (!('LanguageModel' in window)) {
console.warn('Prompt API はこのブラウザでは使えません');
} else {
const status = await LanguageModel.availability();
if (status === 'unavailable') {
console.warn('デバイスが Gemini Nano の要件を満たしていません');
} else {
const session = await LanguageModel.create({
systemPrompt: '日本語で簡潔に答えてください。',
temperature: 0.3,
});
const reply = await session.prompt('次の文章を3行で要約して: ...');
console.log(reply);
}
}
LanguageModel.availability()はavailable、downloadable、downloading、unavailableのいずれかを返します。downloadableまたはdownloadingのときはダウンロード完了を待ってからセッションを作成します。
ストリーミングで受け取る場合はpromptStreaming()を使います。非同期イテレータで逐次チャンクを受け取れます。
const stream = session.promptStreaming('長い文章を書いて');
for await (const chunk of stream) {
document.getElementById('output').textContent += chunk;
}
Chrome Extensions向けにはchrome.languageModel.create()を使い、manifest.jsonで"languageModel"パーミッションを宣言します。セッションオブジェクトの操作方法はWebページ向けと同じです。
現時点での制限
コンテキストウィンドウが小さい。入力は4,000トークン、出力は1,000トークンが上限です。大きなドキュメントをそのまま渡すことはできないため、入力を事前に切り詰める処理が必要です。
ツール呼び出し(Function calling)は未実装。モデルが外部APIを呼び出す機能は現時点では提供されていません。
システムプロンプトへの追従精度がクラウドモデルより低い。JSONフォーマットで出力を求める場合は、one-shotの例をシステムプロンプトに含めると精度が安定します。
初回はダウンロード待ちが発生する。4GBの転送が終わるまで推論できないため、downloadprogressイベントを使ったユーザーへの進捗表示が必要です。
クラウドGemini APIとの比較
| 項目 | Chrome Prompt API | Gemini API(クラウド) |
|---|---|---|
| コスト | 無料 | トークン課金 |
| ネットワーク | 不要(初回DL後) | 常時必要 |
| プライバシー | デバイス内で完結 | Googleサーバーへ送信 |
| コンテキスト長 | 入力4K/出力1K | 最大100万トークン |
| モバイル対応 | 非対応 | 対応 |
短いテキストの要約・分類・整形といった用途ではPrompt APIが有効です。複雑な推論や大量のコンテキストが必要な処理にはクラウドAPIが適しています。デバイス要件を満たさないユーザーも一定数存在するため、クラウドAPIへのフォールバック実装は必ず用意しておく必要があります。
ブラウザAIはどこに向かうか
Prompt APIはまだOrigin Trial段階ですが、ChromeがGemini Nanoをブラウザの一部として扱い始めたことで、AIはWebの「標準機能」に向かって動き始めています。TranslatorやSummarizerなど関連APIはChrome 138でStableに到達しており、Prompt APIも順次安定版への移行が見込まれます。ただしMozillaはAPIの利用規約に懸念を表明しており、Web標準としての策定には時間がかかる可能性があります。対応範囲をテキスト要約・入力パースなどに絞って試験運用するのが、現時点での現実的な出発点です。