Firebase AI Logic を使用したハイブリッド AI プロンプト

公開日: 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 機能にアクセスできます。

これらのメリットはクラウド アプリケーションには適用されませんが、組み込み 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 が使用されるようにするには、modeprefer_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 API を使用して Chrome で実行される Firebase AI Logic。

AI サポートが組み込まれていない別のブラウザまたはオペレーティング システムでは、Firebase エンドポイント https://firebasevertexai.googleapis.com に対して追加のリクエストが送信されます。

Safari で実行され、Firebase サーバーにリクエストを送信している Firebase AI Logic。

参加してフィードバックを共有する

Firebase AI Logic は、AI 機能をウェブアプリに統合するのに適したオプションです。Prompt API を使用できない場合にクラウドへのフォールバックを提供することで、SDK は AI 機能の幅広いアクセスと信頼性を実現します。

クラウド アプリケーションはプライバシーと機能に対する新しい期待を生み出すため、データが処理される場所をユーザーに通知することが重要です。