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()availabledownloadabledownloadingunavailableのいずれかを返します。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標準としての策定には時間がかかる可能性があります。対応範囲をテキスト要約・入力パースなどに絞って試験運用するのが、現時点での現実的な出発点です。