Vertex AI in Firebase SDK を使用してアプリから Gemini API を呼び出すと、生成 AI のレスポンスを制御するパラメータがリクエストに含まれます。通常、これらにはモデル名、モデル生成構成(最大トークン数、温度など)、安全性設定、システム インストラクション、プロンプト データが含まれます。
ほとんどの場合、これらの値は、さまざまなシナリオでオンデマンドで、または必要に応じて変更する必要があります。
- 新しいアプリをリリースせずに生成 AI モデルを更新できます。以前のバージョンが廃止される前に、新しい安定したモデル バージョンにアップグレードできます。また、ユーザーのニーズと属性に基づいて、低コストまたは高パフォーマンスのモデルに切り替えたり、最新のモデルを特定のユーザー セグメント(ベータ版テスターなど)に条件付きでデプロイしたりすることもできます。
- モデルにアクセスするロケーションを、ユーザーに近いロケーションに設定します。
- さまざまなシステム インストラクションとプロンプトを A/B テストし、勝ち組のテスト値をユーザーに段階的にロールアウトします。
- 特徴フラグを使用して、アプリで生成 AI 機能をすばやく公開または非表示にします。
Firebase Remote Config は、このすべてに加えて、アプリの新しいバージョンをリリースすることなく、Firebase コンソールで設定した特性に一致するアプリ インスタンスに対して、必要に応じてパラメータ値を条件付きで更新できます。
このソリューション ガイドでは、推奨される具体的なユースケースと、生成 AI アプリに Remote Config を追加する方法について説明します。
アプリで Firebase Remote Config を使用する理由
Firebase Remote Config を使用すると、アプリのアップデートを必要とせずにアプリの動作を動的に調整できます。これは、生成 AI を使用するアプリで特に強力です。この場合、迅速な反復処理と微調整が重要になります。
生成 AI アプリでの Remote Config の重要なユースケース
次の重要なユースケースでは、Remote Config と Vertex AI in Firebase を使用することをおすすめします。
- アプリを更新せずに最新のモデル バージョンにアップグレードする: Remote Config パラメータを使用して、必要に応じてモデル名を変更します。これにより、任意の Gemini モデルの最新バージョンが利用可能になり次第、最新バージョンにアップグレードできます。
- アプリのアップデートなしでシステム指示と安全設定を更新する: システム指示と安全設定を Remote Config パラメータ内に保存し、デプロイ後に問題が見つかった場合にオンデマンドで変更できるようにします。
- リスクを軽減し、AI の安全性を強化する: Remote Configロールアウトを使用して、生成 AI の変更を iOS ユーザーと Android ユーザーに安全かつ段階的にリリースします。
生成 AI アプリを使用した Remote Config の高度な推奨ユースケース
Remote Config と Google Analytics でアプリを計測したら、高度なユースケースを検討できます。
- クライアントの位置情報に基づいて位置情報を設定する: Remote Config 条件を使用して、クライアントの検出された位置情報に基づいてモデルの位置情報を設定します。
- さまざまなモデルを試す: さまざまな生成 AI モデルをすばやくテストして切り替えたり、さまざまなモデルをさまざまなユーザー セグメントにデプロイしたりして、特定のユースケースに最適なモデルを見つけることができます。
- モデルのパフォーマンスを最適化する: システム プロンプト、最大出力トークン、温度などのモデル パラメータを微調整します。
クライアント属性に基づいて異なるシステム指示、プロンプト、モデル構成を使用する: Remote Config と Google Analytics を使用すると、クライアント属性またはカスタム オーディエンスに基づいて条件を作成し、これらの属性に基づいて異なるパラメータを設定できます。
たとえば、生成 AI を使用してアプリでテクニカル サポートを提供している場合は、アプリ プラットフォームに固有のシステム手順を設定して、Android、iOS、ウェブ プラットフォームのユーザーに正確な手順を提供できます。
ユーザーごとにエクスペリエンスをパーソナライズする: Remote Config パーソナライズを使用して、各ユーザーに最適な生成 AI 設定を自動的に決定します。
費用を管理する: 呼び出される生成 AI モデルとその使用頻度をリモートで調整し、ユーザー オーディエンスに基づいて出力トークンの最大値を動的に構成して、不要な費用を削減します。
アプリのエクスペリエンスと結果を最適化する: iOS、Android、Flutter アプリで A/B Testing と Remote Config を使用して、さまざまなユーザー セグメントで生成 AI パラメータの変更をテストし、維持率や収益などの主要な指標に与える影響を把握します。
Firebase Remote Config を使用して生成 AI アプリを計測すれば、ユーザーに快適なエクスペリエンスを提供しながら、柔軟で安全かつ費用対効果の高い AI 搭載アプリケーションを構築できます。
Firebase Remote Config をアプリに追加します。
このソリューション ガイドでは、Vertex AI in Firebase SDK を使用する Android アプリのパラメータを Firebase Remote Config を使用して動的に更新します。ここでは以下について学びます。
- モデル名やシステム手順などのパラメータを Firebase Remote Config から取得して有効にします。
- 動的に取得されたパラメータを使用するように Gemini API 呼び出しを更新します。これにより、アプリを更新せずに、異なるモデルの切り替えやシステム指示の変更を行うことができます。
- パラメータをリモートで制御し、必要に応じてモデルの動作と機能を調整します。
前提条件
このガイドは、JavaScript を使用したウェブアプリ開発に精通していることを前提としています。このガイドはフレームワークに依存しません。始める前に、以下の準備を済ませてください。
Vertex AI in Firebase SDK のスタートガイドの手順を完了していること。以下のことをすべて完了していることを確認してください。
- Blaze お支払いプランの使用や必要な API の有効化など、新規または既存の Firebase プロジェクトを設定します。
- アプリの登録やアプリへの Firebase 構成の追加など、アプリを Firebase に接続します。
- SDK を追加し、アプリで Vertex AI サービスと生成モデルを初期化します。
プロジェクトで Google Analytics を有効にして、その SDK をアプリに追加します(クライアント デバイスの位置情報に基づいてサービスとモデルのロケーションを設定するなど、条件付きターゲティングに必要)。
ステップ 1: Firebase コンソールでパラメータ値を設定する
クライアント Remote Config テンプレートを作成し、アプリでフェッチして使用するパラメータと値を構成します。
- Firebase コンソールを開き、ナビゲーション メニューから [実行] を展開して、Remote Config を選択します。
- Remote Config ページの上部にある [クライアント/サーバー] セレクタで [クライアント] が選択されていることを確認します。
- Remote Config クライアント テンプレートを初めて使用する場合は、[構成を作成] をクリックします。[最初のパラメータの作成] ペインが表示されます。
- Remote Config テンプレートを初めて使用する場合は、[パラメータを追加] をクリックします。
次の Remote Config パラメータを定義します。
パラメータ名 説明 型 デフォルト値 model_name
モデル名。コードで使用するモデル名の最新リストについては、使用可能なモデル名をご覧ください。 文字列 gemini-1.5-flash
system_instructions
システム指示は、特定のニーズやユースケースに基づいてモデルの動作に影響を与えるエンドユーザーからの詳細な手順を示すために追加する「前文」のようなものです。 文字列 You are a helpful assistant who knows everything there is to know about Firebase!
prompt
生成 AI 機能で使用するデフォルトのプロンプト。 文字列 I am a developer who wants to know more about Firebase!
vertex_location
必要に応じてロケーションを制御して、Vertex AI サービスを実行し、モデルにアクセスします。Google Analytics によって検出されたクライアントの位置情報に基づいて、このオプションを構成する条件を設定できます。 文字列 us-central1
パラメータの追加が完了したら、[変更を公開] をクリックします。新しい Remote Config テンプレートでない場合は、変更内容を確認し、もう一度 [変更を公開] をクリックします。
ステップ 2: Remote Config SDK を追加して初期化する
Remote Config SDK を追加して初期化します。
テキスト エディタでコードを開き、Remote Config をインポートします。
import { getRemoteConfig } from 'firebase/remote-config';
プライマリ関数内で、Firebase アプリが Vertex AI in Firebase SDK 用に初期化されたら、Remote Config を初期化します。
// Initialize Remote Config and get a reference to the service const remoteConfig = getRemoteConfig(app);
最小フェッチ間隔を設定します。この例では、デフォルトのフェッチ間隔は 3,600 秒ですが、開発中はコード内で比較的短い最小フェッチ間隔を設定することをおすすめします。
remoteConfig.settings.minimumFetchIntervalMillis = 3600000;
ステップ 3: アプリ内パラメータ値を設定する
アプリ内デフォルト パラメータ値を Remote Config オブジェクトに設定すると、クライアント ネットワーク アクセスが中断された場合や、バックエンドに値が構成されていない場合でも、Remote Config バックエンドに接続する前にアプリが機能するようになります。
この例では、モデル名、システム インストラクション、ユーザー プロンプト、Vertex AI の場所のデフォルト値を手動で設定します。
// Set default Remote Config parameter values
remoteConfig.defaultConfig = {
model_name: 'gemini-1.5-flash',
system_instructions:
'You are a helpful assistant who knows everything there is to know about Firebase!',
prompt: 'I am a developer who wants to know more about Firebase!',
vertex_location: 'us-central1',
};
ステップ 4: 値をフェッチして有効にする
インポートに
getValue
とfetchAndActivate
を追加します。import { getValue, fetchAndActivate } from 'firebase/remote-config';
デフォルトの Remote Config 値を構成するコードを追加した後、構成をフェッチして有効にし、定数
modelName
、systemInstructions
、prompt
、vertexLocation
に値を割り当てます。// Fetch and activate Remote Config. try { await fetchAndActivate(remoteConfig); } catch(err) { console.error('Remote Config fetch failed', err); } console.log('Remote Config fetched.'); // Assign Remote Config values. const modelName = getValue(remoteConfig, 'model_name').asString(); const systemInstructions = getValue(remoteConfig, 'system_instructions').asString(); const prompt = getValue(remoteConfig, 'prompt').asString(); const vertexLocation = getValue(remoteConfig, 'vertex_location').asString();
ステップ 5: Remote Config 値を使用するように Vertex AI 呼び出しを更新する
Remote Config が完全に構成されたので、コードを更新して、ハードコードされた値を Remote Config から取得した値に置き換えます。たとえば、Vertex AI in Firebase SDK を使用した Gemini API のスタートガイドで使用した例を使用している場合は、次のように更新します。
// Initialize FirebaseApp
const firebaseApp = initializeApp(firebaseConfig);
// Initialize the Vertex AI service
// Optionally specify a location in which to run the service and access the model
const vertexAI = getVertexAI(firebaseApp, { location: vertexLocation });
// Initialize the generative model with a model that supports your use case
// Gemini 1.5 models are versatile and can be used with all API capabilities
const model = getGenerativeModel(vertexAI, {
model: modelName,
systemInstruction: systemInstruction
});
// Wrap in an async function so you can use await
async function run() {
// Provide a prompt that contains text
const userPrompt = prompt;
// To generate text output, call generateContent with the text input
const result = await model.generateContent(userPrompt);
const response = result.response;
const text = response.text();
console.log(text);
}
ステップ 6: アプリを実行する
アプリを実行し、動作することを確認します。Firebase コンソールの Remote Config ページで構成を変更し、変更を公開して結果を確認します。
次のステップ
- 詳細については、Remote Config についてをご覧ください。
- ターゲティングを有効にするには、コードに Google Analytics を追加します。