Firebase Remote Config 支援使用 Firebase Admin Node.js SDK v12.1.0 以上版本進行伺服器端設定。這項功能可讓您使用 Remote Config 動態管理伺服器端應用程式的行為和設定。這包括無伺服器實作項目,例如 Cloud Functions。
與 Firebase 用戶端 SDK 不同,後者會從 Remote Config 範本擷取衍生的用戶端專屬設定,而伺服器端 Remote Config SDK 則會從 Firebase 下載完整的 Remote Config 範本。接著,伺服器就能評估每個傳入要求的範本,並使用自己的邏輯,以極低的延遲時間提供自訂回應。您可以根據隨機百分比和自訂信號中定義的用戶端屬性,使用條件控制及自訂回應。
使用伺服器端 Remote Config,您可以:
- 定義在伺服器上執行或透過伺服器存取的應用程式設定參數,以便遠端設定 AI 模型參數和提示,以及其他整合項目等用途,確保 API 金鑰安全無虞。
- 根據環境或其他應用程式的變化動態調整參數,例如更新 LLM 參數和模型端點。
- 遠端更新伺服器呼叫的 API,控管費用。
- 為存取伺服器的用戶端即時產生自訂設定。
- 記錄哪些用戶端收到參數值,並在Cloud Functions中將此值做為授權驗證系統的一部分。
您可以在 Cloud Run、Remote Config或自行代管的伺服器環境中部署伺服器端 Cloud Functions。Cloud Functions
事前準備
請按照「將 Firebase Admin SDK 新增至伺服器」一文中的操作說明,建立 Firebase 專案、設定服務帳戶,並將 Firebase Admin Node.js SDK 新增至伺服器。
步驟 1:初始化 Firebase Admin Node.js SDK 並授權 API 要求
初始化 Admin SDK 時,如果沒有任何參數,SDK 會使用 Google 應用程式預設憑證,並從 GOOGLE_APPLICATION_CREDENTIALS
環境變數讀取選項。如要初始化 SDK 並新增 Remote Config,請按照下列步驟操作:
import { initializeApp } from "firebase-admin/app";
import { getRemoteConfig } from "firebase-admin/remote-config";
// Initialize Firebase
const firebaseApp = initializeApp();
步驟 2:找出伺服器應用程式的預設參數值
找出應用程式中要動態更新的變數Remote Config。接著,請考量應用程式中預設必須設定哪些變數,以及這些變數的預設值應為何。即使應用程式與Remote Config後端伺服器的連線中斷,仍可順利執行。
舉例來說,如果您要編寫管理生成式 AI 函式的伺服器應用程式,可以設定預設模型名稱、提示前言和生成式 AI 設定,如下所示:
參數名稱 | 說明 | 類型 | 預設值 |
---|---|---|---|
model_name |
模型 API 名稱 | 字串 | gemini-2.0-flash |
preamble_prompt
|
提示在使用者查詢內容前加上前置字串 | 字串 <0x | I'm a
developer who
wants to learn
about Firebase and
you are a helpful
assistant who
knows everything
there is to know
about Firebase! |
generation_config
|
要傳送至模型的參數 | JSON <0x0 |
{"stopSequences":
["I hope this
helps"],
"temperature":
0.7,
"maxOutputTokens":
512, "topP": 0.1,
"topK": 20} |
步驟 3:設定伺服器應用程式
決定要搭配 Remote Config 使用的參數後,請設定應用程式以設定預設值、擷取伺服器專屬的 Remote Config 範本,並使用其值。以下步驟說明如何設定 Node.js 應用程式。
存取及載入範本。
// Initialize server-side Remote Config const rc = getRemoteConfig(firebaseApp); const template = rc.initServerTemplate(); // Load Remote Config await template.load();
如果您在 Cloud Functions 中使用 Node.js,可以透過非同步
getServerTemplate
初始化並載入範本,只需一個步驟即可完成:// Initialize server-side Remote Config const rc = getRemoteConfig(firebaseApp); const template = await rc.getServerTemplate();
為確保應用程式即使與 Remote Config 後端伺服器的連線中斷,也能順利執行,請為應用程式中的每個參數新增預設值。如要這麼做,請在
initServerTemplate
或getServerTemplate
範本函式中新增defaultConfig
:const template = rc.initServerTemplate({ defaultConfig: { model_name: "gemini-pro", generation_config: '{"stopSequences": [], "temperature": 0.7, "maxOutputTokens": 512, "topP": 0.1, "topK": 20}', preamble_prompt: "I'm a developer who wants to learn about Firebase and you are a helpful assistant who knows everything there is to know about Firebase!" }, }); // Load Remote Config await template.load()
範本載入後,請使用
template.evaluate()
從範本匯入參數和值:// Add template parameters to config const config = template.evaluate();
視需要,如果您在 Remote Config 範本中設定條件,請定義並提供所需的值:
- 如果使用百分比條件,請在
template.evaluate()
函式中新增要用來評估條件的randomizationId
。 - 如果使用自訂信號,請定義屬性和屬性值。自訂信號適用於 Firebase Admin Node.js SDK 12.5.0 以上版本。
舉例來說,您可以將 Firebase 安裝 ID 設為
randomizationId
或使用者 ID,確保每個與伺服器聯絡的使用者都會加入適當的隨機群組;將version
設為自訂信號,指定特定用戶端版本;將platform
設為自訂信號,指定用戶端平台。如要進一步瞭解條件,請參閱「條件規則類型」。
// Add template parameters to `config`. Evaluates the // template and returns the parameter value assigned to // the group assigned to the {randomizationId} and version. const config = template.evaluate({ randomizationId: "2ac93c28-c459-4760-963d-a3974ec26c04", version: "1.0", platform: "Android" });
- 如果使用百分比條件,請在
接著,從設定常數中擷取所需參數值。使用
getters
將 Remote Config 中的值轉換為預期格式。支援的類型如下:- 布林值:
getBoolean
- 物件:
getValue
- 編號:
getNumber
- 字串:
getString
舉例來說,如果您在伺服器上實作 Vertex AI,並想變更模型和模型參數,可能需要為
model_name
和generation_config
設定參數。以下範例說明如何存取 Remote Config 的值:// Replace defaults with values from Remote Config. const generationConfig = JSON.parse( config.getString('generation_config')); const is_ai_enabled = config.getBool('is_ai_enabled'); const model = config.getString('model_name'); // Generates a prompt comprised of the Remote Config // parameter and prepends it to the user prompt const prompt = `${config.getString('preamble_prompt')} ${req.query.prompt}`;
- 布林值:
如果伺服器是長時間執行的伺服器 (而非無伺服器環境),請使用
setInterval
定期重新載入範本,確認您是從 Remote Config 伺服器擷取最新範本。
步驟 4:在 Remote Config 中設定伺服器專屬的參數值
接著,建立伺服器Remote Config範本,並設定要在應用程式中使用的參數和值。
如要建立伺服器專屬的 Remote Config 範本,請按照下列步驟操作:
- 開啟 Firebase 控制台 Remote Config 參數頁面,然後從「用戶端/伺服器」選取器中選取「伺服器」。
- 定義 Remote Config 參數,這些參數的名稱和資料類型必須與您在應用程式中定義的參數相同,並提供值。當您擷取及評估範本,並將這些值指派給變數時,這些值會覆寫您在「設定伺服器應用程式」中設定的
defaultConfig
。 - 您可以視需要設定條件,將值持續套用至隨機樣本的執行個體或您定義的自訂信號。如要進一步瞭解條件,請參閱「條件規則類型」。
- 新增完參數後,請按一下「發布變更」。
- 查看變更,然後再次按一下「發布變更」。
步驟 5:使用 Cloud Functions 或 Cloud Run 部署
如果伺服器應用程式輕巧且為事件驅動型,建議使用 Cloud Functions 部署程式碼。舉例來說,假設您有一個應用程式,其中包含由生成式 AI API (例如 Google AI 或 Vertex AI) 支援的角色對話。在這種情況下,您可以將 LLM 服務邏輯代管在應用程式隨選呼叫的函式中。
如要瞭解如何使用第 2 代 Cloud Functions 和伺服器端 Remote Config 解決問題,請參閱「搭配使用伺服器端 Remote Config 與 Cloud Functions 和 Vertex AI」。
如要進一步瞭解如何使用 Cloud Functions 部署應用程式,請參閱「開始使用:編寫、測試及部署您的第一個函式」。
使用伺服器端 Remote Config 和 App Check 試用可呼叫函式範例,方法是使用 Remote Config 和 App Check 呼叫 Vertex AI Gemini API。
如果您要建構以伺服器算繪的網頁應用程式,App Hosting 支援熱門的網頁架構。
否則,建議考慮使用 Cloud Run。如要使用 Cloud Run 部署伺服器應用程式,請按照「快速入門導覽課程:將 Node.js 服務部署至 Cloud Run」的指南操作。
如要進一步瞭解 Cloud Run 和 Cloud Functions 的最佳用途,請參閱「Cloud Functions vs. Cloud Run:何時該使用哪一個」。