Chrome Prompt APIとは?API開発者向けブラウザAI

Ashley Innocent

Ashley Innocent

29 4月 2026

Chrome Prompt APIとは?API開発者向けブラウザAI

Chromeは、AIモデルをブラウザ内に直接搭載しました。Prompt APIは、それを利用するために呼び出すJavaScriptのインターフェースです。APIキーも、ネットワークの往復も、トークンごとの料金もかかりません。このモデルはGemini Nanoであり、ユーザーのデバイス上で動作し、Chrome 138以降では拡張機能向けに一般提供されており、ウェブページ向けにはフラグの裏で提供されています。API開発者にとって、これはクライアント側で何ができるかの合理性を変えるものです。

このガイドでは、Chrome Prompt APIとは何か、クラウドGemini APIとどう異なるのか、実際にAPIワークフローに適合するのはどのような場合か、拡張機能とウェブページの両方での実践的なコード、そしてドキュメントが認めるよりも早く直面するであろう制限について解説します。モデルが利用できない場合に備えてフォールバックパスを持てるよう、最後にはApidogと組み合わせて説明します。

ボタン

要約

Prompt APIが実際に公開しているもの

Prompt APIは、Chromeが昨年から提供を開始した「Built-in AI」APIの小さなグループの1つです。他のAPIはより限定的で、Summarizer、Writer、Rewriter、Translator、Language Detectorがあります。Prompt APIは汎用的なインターフェースであり、他のAPIはこれにタスク固有のデフォルト設定を加えています。

Chrome Built-in AIの概要図

重要な3つのプリミティブがあります。

この形状は意図的にGeminiクラウドSDKに近づけていますが、簡略化されています。ツール呼び出しはまだなく、安定版チャンネルでは画像入力もありません(Origin Trialでは利用可能です)。コンテキストウィンドウは小さく(入力4Kトークン、出力1Kトークン、合計8Kにソフト拡張)、限られています。

ウェブページからの最初の呼び出しは次のようになります。

if (!('LanguageModel' in window)) {
  console.warn('Prompt API not available. Falling back to cloud.');
} else {
  const status = await LanguageModel.availability();
  if (status === 'unavailable') {
    console.warn('Device does not support Gemini Nano.');
  } else {
    if (status !== 'available') {
      // Triggers a background download. Show a UI.
      await LanguageModel.create({ monitor(m) {
        m.addEventListener('downloadprogress', e => {
          console.log(`downloaded ${(e.loaded * 100).toFixed(0)}%`);
        });
      }});
    }
    const session = await LanguageModel.create({
      systemPrompt: 'You answer in three concise bullets. JSON only.',
    });
    const reply = await session.prompt(
      'Summarize this changelog in three bullets.\n\n' + changelog
    );
    console.log(reply);
  }
}

このスニペットには、機能検出、可用性チェック、オプションのダウンロード、セッション作成、システムプロンプト、プロンプト呼び出しといった、意味のあるすべての要素が含まれています。

クラウドGemini APIとの違い

同じファミリーですが、デプロイメントが異なります。これらの違いが、その上に構築できるものとできないものを形作ります。

プロパティ Chrome Prompt API Gemini API (クラウド)
モデル Gemini Nano (オンデバイス) gemini-3-flash, gemini-3-flash-preview, gemini-3-pro
呼び出しごとの費用 ゼロ トークンごとの課金
レイテンシ 最初のトークンは通常50〜300ミリ秒 最初のトークンは200〜800ミリ秒
ネットワーク モデルダウンロード後は不要 呼び出しごとに必要
プライバシー 入力はデバイスを離れない Googleサーバーに送信される
コンテキストウィンドウ 入力4K / 出力1K (合計8K) 最大1Mトークン
ツール呼び出し なし (計画中) あり
マルチモーダル Origin Trialで画像入力 あり
JSONモード システムプロンプトによるベストエフォート スキーマによるファーストクラスサポート
利用可能性 Chromeのみ、対応ハードウェアのみ ネットワーク接続のあるすべてのクライアント

オンデバイスモデルは、gemini-3-flashよりも約2桁小さいです。正規表現や手作業で調整したプロンプト分類器を使用するような短いタスクに利用してください。クラウドGeminiの代わりとしてそのまま使用すべきではありません。

API開発者のワークフローに実際に適合する場所

統合コストに見合う4つのユースケースがあります。これら以外では、クラウドAPIが依然として適切な選択です。

1. クライアント側でのユーザー入力の解析と整形。自由形式のクエリを受け取り、それをAPIの構造化されたフィルターに変換します。ユーザーが「先週のStripeの100ドル以上の請求」と入力すると、Prompt APIがそれを{ "amount_gt": 100, "since": "2026-04-22", "provider": "stripe" }に変換し、検索エンドポイントを呼び出す前に処理します。これにより、ラウンドトリップを削減し、ユーザーのプライバシーを保護します。

2. UI向けAPIレスポンスの要約。自身のAPIを叩いて40件のレコードが返され、カードに表示するための一行の要約が必要な場合。レコードをクラウドモデルに送信すると、レイテンシとコストが増加します。Prompt APIはローカルで実行され、200ミリ秒以内に結果を返します。

3. JSON形式の修正。LLMからの応答は、無視できないほど頻繁に不正な形式で届きます。Gemini Nanoを使ってワンショットの修正パスを実行します。「これは無効なJSONです。同じフィールドで有効なJSONのみを返してください。」安価で高速、コストもかかりません。

4. 開発中のローカルスタブ。新しいエンドポイントを接続している最中で、バックエンドが半完成の状態でも、それらしい応答ボディをその場で生成できます。形式は本番環境に正確ではないかもしれませんが、フロントエンドの作業のブロックを解除します。Apidogのモックサーバーと組み合わせることで、重要なエンドポイントは保存された例から、探索的なエンドポイントはPrompt APIから提供されるハイブリッドな設定を実現できます。

拡張機能への組み込み

拡張機能は、Chrome 138以降の安定版チャンネルでPrompt APIを利用できます。権限を宣言し、chrome.languageModelを呼び出します。

manifest.json:

{
  "manifest_version": 3,
  "name": "Endpoint Summarizer",
  "version": "1.0.0",
  "permissions": ["languageModel"],
  "action": { "default_popup": "popup.html" }
}

popup.js:

const status = await chrome.languageModel.availability();
if (status === 'unavailable') {
  document.getElementById('out').textContent =
    'Device does not support on-device AI.';
  return;
}

const session = await chrome.languageModel.create({
  systemPrompt: [
    'You summarize HTTP responses in three short bullets.',
    'Mention status, the most-changed field, and any error keys.',
  ].join(' '),
  temperature: 0.3,
  topK: 3,
});

document.getElementById('go').addEventListener('click', async () => {
  const tab = await chrome.tabs.query({ active: true, currentWindow: true });
  const [{ result }] = await chrome.scripting.executeScript({
    target: { tabId: tab[0].id },
    func: () => document.body.innerText.slice(0, 4000),
  });
  const stream = session.promptStreaming(result);
  const out = document.getElementById('out');
  out.textContent = '';
  for await (const chunk of stream) {
    out.textContent += chunk;
  }
});

特筆すべき点が2つあります。temperaturetopKはAPIが公開する唯一のサンプリング調整ノブであり、topPは安定版チャンネルではサポートされていません。ストリーミングは非同期イテレータであり、サーバー送信イベントではないため、消費パターンはクラウドGeminiで記述するSSEリーダーではなくfor awaitです。

ウェブページへの組み込み

ウェブページでは、ユーザーがフラグを有効にするか、あなたのオリジンがOrigin Trialに登録されている必要があります。トライアルトークンはメタタグに記述します。

<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="origin-trial" content="YOUR_TRIAL_TOKEN_HERE" />
</head>
<body>
  <textarea id="in" placeholder="Paste an API response..."></textarea>
  <button id="go">Summarize</button>
  <pre id="out"></pre>
  <script type="module">
    if (!('LanguageModel' in window)) {
      document.getElementById('out').textContent =
        'Prompt API not available in this browser.';
    } else {
      const session = await LanguageModel.create({
        systemPrompt: 'Reply in JSON: { "summary": "...", "tags": [...] }',
        temperature: 0.2,
      });
      document.getElementById('go').onclick = async () => {
        const text = document.getElementById('in').value;
        const reply = await session.prompt(text);
        try {
          document.getElementById('out').textContent =
            JSON.stringify(JSON.parse(reply), null, 2);
        } catch {
          document.getElementById('out').textContent = reply;
        }
      };
    }
  </script>
</body>
</html>

Origin Trialトークンなしでページをテストしたい場合は、chrome://flags/#prompt-api-for-gemini-nanoを開き、有効に設定してChromeを再起動してください。このフラグは過去6バージョンにわたって安定していますが、永久に存続することは約束されていません。予測可能な動作を望む場合は、Origin Trialのパスを実装してください。

ドキュメントで十分に強調されていない制限と注意点

あなたを悩ませるであろう6つのこと。

  1. コンテキストが小さい。入力4K、出力1K。積極的に切り詰めてください。50KトークンのJSONドキュメントを貼り付けても、有用な回答は期待できません。
  2. ハードウェアサポートが不均一。モデルはVRAMまたは統合メモリを約4GB必要とし、Windows、macOS、Linux、および最近のChromeOS上のChrome 138以降でのみ動作します。本稿執筆時点では、モバイル版Chromeはサポートされていません。
  3. 初回読み込みが遅い。2GBのダウンロードはバックグラウンドで行われますが、最初のセッションをブロックします。常にダウンロードの進行状況UIを表示してください。
  4. ツール呼び出しなし。タスクでモデルがAPIを呼び出す必要がある場合、その処理はクライアント側であなた自身が行ってください。モデルは何を呼び出すかを決定するだけです。
  5. システムプロンプトのずれ。オンデバイスモデルは、クラウドモデルよりもシステムプロンプトに厳密に従わない傾向があります。システムプロンプト内でワンショットの例を使用して形式を固定してください。
  6. 権限が重要。拡張機能にはpermissions"languageModel"が必要です。これを忘れると、APIは静かにunavailableを返します。

リリース前にクラウドフォールバックを組み込む

あなたのアプリは、モデルを持っていないユーザーにも提供されます。常にフォールバックを組み込んでください。そのパターンは短いです。

async function summarize(text) {
  if ('LanguageModel' in window) {
    const status = await LanguageModel.availability();
    if (status === 'available') {
      const session = await LanguageModel.create({
        systemPrompt: 'Reply with one bullet summary, max 12 words.',
      });
      return session.prompt(text);
    }
  }
  // Fallback: call your server, which calls cloud Gemini or your own model.
  const r = await fetch('/api/summarize', {
    method: 'POST', body: JSON.stringify({ text }),
  });
  return (await r.json()).summary;
}

プライバシーとユーザーへの説明

Prompt APIのセールスポイントは、入力がデバイスを離れないことです。これは現在も事実であり、「Built-in AI」イニシアチブの明確な設計意図です。知っておくべき2つの補足事項があります。

ほとんどのコンシューマーアプリにとって、これは法的なレビューなしにUIに組み込める強力なプライバシーに関する話です。規制対象のワークロード(HIPAA、PCI)の場合は、これに依存する前に弁護士に確認してください。

Prompt APIをスキップすべき場合

以下の場合には、代わりにクラウドGemini APIを選択してください。

オープンウェイトの観点からは、「DeepSeek V4をローカルで実行する方法」の記事で、ローカルネットワークを離れることなく開発マシン上でより大規模なモデルを実行する方法が解説されています。

よくある質問

Prompt APIは公式のウェブ標準プロセスに含まれていますか?W3C WebMLコミュニティグループで提案として検討されています。他のエンジンが出荷するまでは、Chrome固有のものとして扱ってください。

サービスワーカーから利用できますか?Chrome 138以降では、拡張機能向けに可能です。ウェブページでは現在、ドキュメントコンテキストに制限されています。サービスワーカーに導入する前にドキュメントを確認してください。

実際にどのモデルサイズが利用できますか?Gemini Nanoは2〜4Bのパラメーター範囲で、フィットするように量子化されています。Googleは特定のサイズを約束していません。今後成長すると予想されます。

関数呼び出しをサポートしていますか?安定版チャンネルではサポートしていません。Origin Trialブランチには実験的なツールサポートがありますが、本番環境でこれに依存しないでください。

自動化されたCIでテストするにはどうすればよいですか?ヘッドレスChromiumでは、オンデバイスモデルをまだ実行できません。テストではLanguageModelグローバルをモックし、CIではクラウドフォールバックパスを実行してください。

商用利用は無料ですか?はい。呼び出しごとの課金はありません。ユーザーのデバイス上でのストレージコスト(約2GB)はあなたが負担し、Chromeがアップデートを処理します。

既にクラウド側LLMワークフローを実行しているチーム向けには、「GPT-5.5とは」の記事でクラウド側のトレードオフがより深く解説されており、Apidogは別のテストツールなしでモックとフォールバックの配線を処理します。

ボタン

ApidogでAPIデザイン中心のアプローチを取る

APIの開発と利用をよりシンプルなことにする方法を発見できる