>_tech-draft
Firebaseのアイコン
Firebase
動画公開日
タイトル

Best of both worlds: Hybrid on-device and cloud inference with Gemini and Firebase

再生時間

14分 10秒

Firebase AI Logic新機能でGemini開発を最適化!セキュリティとコスト管理の秘訣

ポイント

  • Firebase AI Logicの新機能は、モバイル・ウェブアプリでGoogle Geminiを利用する際、セキュリティとコスト管理の課題を解決したい開発者向けです。
  • サーバープロンプトテンプレートとテンプレートモードにより、プロンプトの漏洩やインジェクションを強力に防御し、APIキーを安全に保ちます。
  • Cloud Functionsトリガーで独自のビジネスロジックを実装し、AIモニタリングによる詳細な可観測性とコンテキストキャッシュでコストを最適化できます。

AI機能を開発し、それがデバイス上で問題なく動作したとしても、数百万人のユーザーに提供する段階になると、突如としてAPIキーのセキュリティ、プロンプトの漏洩、そしてコストの高騰といった課題に直面することがあります。本記事では、Firebase AI Logicの新機能を通じて、これらの頭痛の種を回避し、AI機能を自信を持って提供する方法をご紹介します。

Firebase AI Logicをこれまで利用されたことがない方のために、簡単に概要をご説明します。これはマネージドサービスであり、モバイルおよびウェブアプリケーションからGoogleのAIモデル「Gemini」へ直接的かつ安全なブリッジを提供します。APIキーを安全に保つためのバックエンドミドルウェアは一切不要で、わずか3行のコードでクライアントからGeminiを呼び出すことが可能です。KotlinはKotlinのまま、SwiftはSwiftのまま、DartはDartのままでAI機能を実装できます。

モデルを呼び出すこと自体は容易ですが、それ以外の全てが難しい課題となります。例えば、プロンプトをどのように保護するか、不正利用をどのように阻止するか、どのユーザーが機能にアクセスできるかをどのように管理するか、本番環境で何が起こっているかをどのように把握するか、そしてコストをどのように管理するか、といった点が挙げられます。Firebase AI Logicは、これらの課題すべてに対応するのに役立ちます。それでは、新機能の詳細を見ていきましょう。

1. サーバープロンプトテンプレートとテンプレートモードでプロンプトを保護

まず、最も注目すべき新機能である「サーバープロンプトテンプレート」と、その新しい機能である「テンプレートモード」からご紹介します。

プロンプト漏洩の課題とテンプレートによる解決

クライアントアプリにプロンプトをハードコード(直接記述)すると、そのプロンプトは外部に露出してしまいます。誰かがアプリを逆コンパイルしたり、ネットワークトラフィックを傍受したりすることで、プロンプト全体を抽出できてしまいます。これは、貴社の知的財産が公然と晒されることを意味します。

サーバープロンプトテンプレートはこの問題を解決します。プロンプトをアプリ内に記述する代わりに、Firebaseサーバーにテンプレートとして保存するのです。アプリはテンプレートIDを使用してこのテンプレートを参照し、テンプレートが必要とする入力変数を定義して渡します。サーバー側では、以下の処理が実行されます。

  • 入力変数の検証
  • テンプレートの空白部分への入力
  • 最終的なプロンプトの組み立て
  • Gemini呼び出しの実行

クライアントコードは、テンプレートIDと変数のマップを使った1回の呼び出しのみで完結します。プロンプトがサーバーから離れることは決してありません。Firebaseコンソールでは、テンプレート構文、利用するモデル、システム指示、入力および出力のスキーマを確認できます。また、入力変数ごとに検証ルールや正規表現パターンを設定できるため、クライアントは予期されたデータのみを送信できます。

システム指示を微調整したり、モデルをGemini FlashからGemini Proに切り替えたりする必要がある場合でも、コンソールのテンプレートを編集するだけで即座に反映されます。アプリのストア更新や再デプロイは一切不要です。

テンプレートモードでプロンプトインジェクションを強力に防御

さらに今回追加されたのが「テンプレートモード」です。Firebaseコンソールで単一のトグルをオンにするだけで、クライアントからのすべてのGemini呼び出しがサーバープロンプトテンプレート経由でなければならないことをFirebaseに指示できます。それ以外の自由形式の呼び出しはすべてブロックされます。

これが何を意味するか考えてみてください。クライアントアプリは文字通り、いかなる自由形式のプロンプトもモデルに送信できなくなります。定義された検証ルール付きの変数のみを渡すことしかできません。誰かがテンプレートIDなしでAPIを呼び出そうとすると、リクエストは拒否されます。

これは、クライアントサイドのアーキテクチャで展開できる、非常に強力な「プロンプトインジェクション」防御策です。開発者はモデルが見るものを正確に決定し、クライアントは単にデータを提供するだけとなります。

2. Cloud Functionsトリガーで柔軟なビジネスロジックを実装

次に挙がる一般的な質問として、「アプリとモデルの間にカスタムビジネスロジックが必要な場合はどうすればよいか?」というものがあります。例えば、「プレミアムユーザーのみに特定のAI機能の使用を許可したい」といったシナリオです。

このために、Firebase AI Logic用のCloud Functionsトリガーが追加されました。これにより、生成コンテンツの前後にトリガーされるCloud Functionsを記述できるようになります。

Cloud Functionsの活用例

  • モデル呼び出し前: ユーザーのサブスクリプションティア(購読レベル)の確認、トークン残高のチェック、入力からの特定キーワードの除外など。
  • 呼び出し後: レスポンスのフィルタリング、独自の分析システムへのログ記録など。

具体的な例として、beforeGenerateContent関数は、クライアントがリクエストを行うたびに起動します。この関数では、認証コンテキストへのフルアクセスが可能で、ユーザー情報の確認やデータベースからのサブスクリプションティアの取得ができます。もしユーザーがフリーティアの制限に達している場合、エラーをスローしてGeminiに到達する前にリクエストをブロックできます。これにより、APIコストを節約し、ビジネスルールを強制することが可能です。

重要な点は、これが純粋なサーバーレスロジックであるという点です。お客様がバックエンドのプロキシを構築したり、インフラを管理したりする必要はありません。必要なパイプラインの正確なフックポイントに、たった1つの関数を記述するだけで済みます。Cloud Functionsのデプロイは、独自のバックエンドを設定・管理するよりもはるかに容易です。また、サーバープロンプトテンプレート、テンプレートモード、そしてもちろんApp Checkなどの他の機能ともシームレスに連携します。

3. 多層防御による堅牢なセキュリティ体制

ここで、全体的なセキュリティの状況を改めて見てみましょう。

  1. APIキーの非公開: Firebase AI Logicは、Gemini APIキーをクライアントデバイスに決して公開しません。APIキーは、Googleが管理する安全なデータセンター内のサーバーに存在します。
  2. Firebase Auth: ユーザー認証を提供し、アプリに「誰がユーザーであるか」を伝えます。
  3. App Check: リクエストが正規の改ざんされていないアプリから送信されたものかを検証します。さらにセキュリティを重視するアプリ向けには、リプレイアタック保護を有効化することも可能です。これにより、トークンが厳密に1回だけ使用されることが保証されます。
  4. サーバープロンプトテンプレート: プロンプトインジェクションのリスクを軽減します。
  5. テンプレートモード: クライアントがAIモデルに送信できる内容を厳しく制限します。
  6. Cloud Triggers: 独自のビジネスルール、レート制限、キーワードフィルタリング、サブスクリプションチェック、カスタムガードレールをパイプラインに直接組み込むことを可能にします。

これらは4層にわたる防御であり、その背後にあるインフラを構築する必要はありません。私たちFirebaseチームが、その全ての困難な作業を請け負います。

4. 高度な監視とコスト管理機能

セキュリティは物語の半分に過ぎません。何が起こっているかを把握する必要もあります。

AIモニタリングで可観測性を向上

AIモニタリング機能は、FirebaseコンソールでGemini呼び出しごとの完全な可観測性を提供します。トレース、レイテンシー、トークンカウント、エラー率などを確認できます。サーバープロンプトテンプレートを使用している場合は、モデルに送信された正確なコンパイル済みプロンプトまで確認可能です。

ユーザーから奇妙な応答が報告された場合でも、推測に頼る必要はありません。トレースから入力、コンパイル済みプロンプト、出力、そしてトークンを確認することで、的確なデバッグが可能になります。

明示的なコンテキストキャッシュでコストを削減

トークンとコストに関して言えば、「明示的なコンテキストキャッシュ (Explicit Context Caching)」についても触れる必要があります。

もし、ポリシー文書や製品カタログといった同じ大規模なコンテキストを各リクエストで繰り返し送信している場合、その入力トークンの処理に繰り返しコストが発生しています。明示的なコンテキストキャッシュを使用すると、コンテキストを一度アップロードし、有効期限を設定した上で、サーバープロンプトテンプレート内でキャッシュを参照できます。

これにより、モデルはユーザープロンプトのみを処理するため、入力トークンのコストを大幅に削減できるだけでなく、応答速度も向上させることが可能です。この機能はテンプレートと連携し、キャッシュ参照はテンプレート内に存在するため、クライアントコードは一切変更する必要がありません。

5. ハイブリッド推論でオンデバイスAIを実現

これまでの内容は、クラウドでホストされているモデルを利用したものです。しかし、もしユーザーのデバイスにすでに存在するモデルを使用して一部のAI機能を実行できたらどうでしょうか。

これには以下のメリットがあります。

  • ユーザーへの応答時間の高速化
  • プライバシーの向上(データがデバイスやブラウザから離れることがないため)
  • 開発者にとってのAPIコストゼロ

AI Logicのハイブリッド推論はまさにこのために存在します。デバイスがオンデバイスモデルで推論を実行できる場合はローカルで実行し、そうでない場合はクラウドにフォールバックするという仕組みです。

現在、ハイブリッド推論は以下の3つのプラットフォームで動作します。

  • Android (Gemini Nanoを利用)
  • デスクトップ版Chrome
  • 新たにサポートされたAppleプラットフォーム (Foundation Models framework経由)

例えばAndroidでは、推論モードを「prefer on device」に設定します。内部的にSDKがデバイスのGemini Nanoサポートをチェックし、サポートしていればローカルで推論を実行します。サポートしていなければ、クラウドのGeminiモデルにフォールバックします。

まとめ

Firebase AI Logicは、安全なプロンプト、多層防御、カスタムロジック、完全な可観測性、そしてコスト管理といった、本番環境に対応するための包括的な機能セットを提供します。さらに、オンデバイスAIを可能にするハイブリッド推論により、より高速でプライバシーに配慮した、コスト効率の高いAI機能の実装を強力に支援します。

これらの新機能を活用することで、開発者はAI機能の構築に集中しつつ、セキュリティ、運用、コストといった側面での懸念を大幅に軽減できるでしょう。

参考動画

  • https://www.youtube.com/watch?v=Vv9csCz1hF4