公開日: 2025 年 5 月 20 日
組み込みの Prompt API は、Chrome 138 Stable 以降の Windows、macOS、Linux 版 Chrome 拡張機能で利用できます。この API は、まもなく Chrome のオリジン トライアルで利用可能になります。
この API は、他のブラウザ、ChromeOS、モバイル オペレーティング システム(Android や iOS など)ではサポートされていません。ブラウザがこの API をサポートしている場合でも、ハードウェアの要件が満たされていないために実行できないことがあります。
ユーザーが使用するプラットフォームやハードウェアに関係なく、ユーザーのニーズを満たすために、Firebase AI Logic を使用してクラウドへのフォールバックを設定し、
ハイブリッド AI エクスペリエンスを構築する
- 機密データのローカル処理: 機密データを扱う場合は、エンドツーエンドの暗号化を使用してユーザーに AI 機能を提供できます。
- オフライン AI の使用: ユーザーは、オフラインの場合や接続が切断されている場合でも、AI 機能にアクセスできます。
これらのメリットはクラウド アプリケーションには適用されませんが、組み込み AI にアクセスできないユーザーに対してシームレスなエクスペリエンスを提供できます。
Firebase を使ってみる
まず、Firebase プロジェクトを作成してウェブアプリを登録します。Firebase JavaScript SDK の設定は、Firebase のドキュメントに沿って進めてください。
SDK をインストールする
このワークフローでは npm を使用します。モジュール バンドラまたは JavaScript フレームワーク ツールが必要です。Firebase AI Logic は、モジュール バンドラと連携して、ツリー シェイキングで未使用コードを削除して SDK のサイズを小さくするように最適化されています。
npm install --save-exact firebase@eap-ai-hybridinference
ハイブリッド機能は別の npm タグでリリースされているため、インストール コマンドに含めてください。
タグはパッチ バージョンとして実装されるため、--save-exact
フラグは、関連性のない新しいバージョンが利用可能になったときに自動的にアップグレードしないように npm に指示します。
Firebase AI Logic を使用する
Firebase をインストールしたら、SDK を初期化して Firebase サービスの使用を開始します。
Firebase アプリを構成して初期化する
Firebase プロジェクトには、複数の Firebase アプリを含めることができます。Firebase アプリはコンテナに似たオブジェクトで、一般的な構成を保存し、Firebase サービス全体で認証を共有します。
Firebase アプリは、ハイブリッド AI 機能のクラウド部分として機能します。
import { initializeApp } from 'firebase/app';
import { getAI, getGenerativeModel } from 'firebase/vertexai';
// TODO: Replace the following with your app's Firebase project configuration.
const firebaseConfig = {
apiKey: '',
authDomain: '',
projectId: '',
storageBucket: '',
messagingSenderId: '',
appId: '',
};
// Initialize `FirebaseApp`.
const firebaseApp = initializeApp(firebaseConfig);
モデルにプロンプトを出す
初期化が完了したら、テキストまたはマルチモーダル入力でモデルにプロンプトを送信できます。
テキスト プロンプト
モデルへの指示には、プレーンテキストを使用できます。たとえば、ジョークを言うようモデルに指示できます。
getGenerativeModel
関数で利用可能な場合に組み込み AI が使用されるようにするには、mode
を prefer_on_device
に設定します。
// Initialize the Google AI service.
const googleAI = getAI(firebaseApp);
// Create a `GenerativeModel` instance with a model that supports your use case.
const model = getGenerativeModel(googleAI, { mode: 'prefer_on_device' });
const prompt = 'Tell me a joke';
const result = await model.generateContentStream(prompt);
for await (const chunk of result.stream) {
const chunkText = chunk.text();
console.log(chunkText);
}
console.log('Complete response', await result.response);
マルチモーダル プロンプト
テキストだけでなく、画像や音声でプロンプトを表示することもできます。画像の内容を説明したり、音声ファイルを文字起こししたりするようにモデルに指示できます。
画像は、Firebase FileDataPart
オブジェクトとして base64 エンコード文字列として渡す必要があります。これは、ヘルパー関数 fileToGenerativePart()
を使用して行えます。
// Converts a File object to a `FileDataPart` object.
// https://firebase.google.com/docs/reference/js/vertexai.filedatapart
async function fileToGenerativePart(file) {
const base64EncodedDataPromise = new Promise((resolve) => {
const reader = new FileReader();
reader.onload = () => resolve(reader.result.split(',')[1]);
reader.readAsDataURL(file);
});
return {
inlineData: { data: await base64EncodedDataPromise, mimeType: file.type },
};
}
const fileInputEl = document.querySelector('input[type=file]');
fileInputEl.addEventListener('change', async () => {
const prompt = 'Describe the contents of this image.';
const imagePart = await fileToGenerativePart(fileInputEl.files[0]);
// To generate text output, call generateContent with the text and image
const result = await model.generateContentStream([prompt, imagePart]);
for await (const chunk of result.stream) {
const chunkText = chunk.text();
console.log(chunkText);
}
console.log(Complete response: ', await result.response);
});
デモ
さまざまなデバイスとブラウザで Firebase AI Logic のデモをご覧ください。モデル レスポンスが組み込み AI モデルから取得されるのか、クラウドから取得されるのかを確認できます。
Chrome でサポートされているハードウェアでは、デモで Prompt API と Gemini Nano が使用されます。メインのドキュメント、JavaScript ファイル、CSS ファイルに対してのみ 3 件のリクエストが実行されています。
AI サポートが組み込まれていない別のブラウザまたはオペレーティング システムでは、Firebase エンドポイント https://firebasevertexai.googleapis.com
に対して追加のリクエストが送信されます。
参加してフィードバックを共有する
Firebase AI Logic は、AI 機能をウェブアプリに統合するのに適したオプションです。Prompt API を使用できない場合にクラウドへのフォールバックを提供することで、SDK は AI 機能の幅広いアクセスと信頼性を実現します。
クラウド アプリケーションはプライバシーと機能に対する新しい期待を生み出すため、データが処理される場所をユーザーに通知することが重要です。