Firebase 遠端設定現已支援使用 Firebase Admin Node.js SDK v12.1.0 以上版本的伺服器端設定。這項新功能可讓您使用遠端設定,動態管理伺服器端應用程式的行為和設定。包括無伺服器實作 (例如 Cloud Functions)。
與遠端設定範本「衍生」用戶端專屬設定的 Firebase 用戶端 SDK 不同,伺服器端遠端設定 SDK 會從 Firebase 下載「完整」的遠端設定範本。如此一來,您的伺服器便能隨著每個收到的要求來評估範本,並使用其本身的邏輯,提供極低延遲的自訂回應。
透過伺服器端遠端設定,您可以:
- 您可以為在伺服器中運作或存取的應用程式定義設定參數,以便遠端設定 AI 模型參數、提示和其他整合功能,藉此確保您的 API 金鑰安全無虞。
- 動態調整參數,以因應環境的變更或其他應用程式變更,例如更新 LLM 參數和模型端點。
- 從遠端更新伺服器呼叫的 API,藉此控管費用。
- 針對可存取您伺服器的用戶端即時產生自訂設定。
- 記錄哪些用戶端收到參數值,並在 Cloud Functions 中使用該值做為授權驗證系統的一部分。
您可以在 Cloud Run、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 並新增遠端設定,請按照下列步驟操作:
import { initializeApp } from "firebase-admin/app";
import { getRemoteConfig } from "firebase-admin/remote-config";
// Initialize Firebase
const firebaseApp = initializeApp();
步驟 2:找出伺服器應用程式的預設參數值
找出要透過遠端設定動態更新的應用程式中的變數。接下來,請決定哪些變數必須預設在應用程式中設定,以及這些變數的預設值。這樣即使與遠端設定後端伺服器的連線中斷,應用程式也能成功執行。
舉例來說,如要編寫用來管理生成式 AI 函式的伺服器應用程式,您可以設定預設模型名稱、提示前置碼和生成式 AI 設定,如下所示:
參數名稱 | 說明 | 類型 | 預設值 |
---|---|---|---|
model_name |
模型 API 名稱 | 字串 | gemini-1.5-pro |
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! |
generation_config
|
要傳送至模型的參數 | JSON | {"stopSequences":
["I hope this
helps"],
"temperature":
0.7,
"maxOutputTokens":
512, "topP": 0.1,
"topK": 20} |
步驟 3:設定伺服器應用程式
決定好要與遠端設定搭配使用的參數後,請設定應用程式設定,以設定預設值、擷取伺服器專屬的遠端設定範本,並使用其中的值。下列步驟說明如何設定 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();
為確保應用程式即使與遠端設定後端伺服器的連線中斷,應用程式仍能正常運作,請為應用程式新增每個參數的預設值。如要執行此操作,請在
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();
如果您在遠端設定範本中設定百分比條件,請定義並提供要在
template.evaluate()
函式內用來評估條件的randomizationId
。舉例來說,您可以將 Firebase 安裝 ID 設為
randomizationId
或使用者 ID,確保能聯絡伺服器的每位使用者都會加入適當的隨機群組。以下提供一個基本範例,但您可以設定伺服器,為不同的用戶端要求產生不同的randomizationIds
,以確保使用者會根據他們在百分比條件群組中的成員身分,從遠端設定提供一致的值。如要進一步瞭解百分比條件,請參閱隨機百分比中的使用者。
// Set the randomizationId const randomizationId = "2ac93c28-c459-4760-963d-a3974ec26c04" // Add template parameters to `config`. Evaluates the // template and returns the parameter value assigned to // the group assigned to the {randomizationId}. const config = template.evaluate({ randomizationId });
接著,從設定常數中擷取所需的參數值。使用
getters
將遠端設定的值轉換為預期格式。支援的類型如下:- 布林值:
getBoolean
- 物件:
getValue
- 編號:
getNumber
- 字串:
getString
舉例來說,當您在伺服器上實作 Vertex AI 時,如果想變更模型和模型參數,建議您設定
model_name
和generationConfig
的參數。以下範例說明如何存取遠端設定的值:// 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
定期重新載入範本,確保您定期從遠端設定伺服器擷取最新的範本。
步驟 4:在遠端設定中設定伺服器專屬的參數值
接下來,建立伺服器遠端設定範本,並設定要在應用程式中使用的參數和值。
如何建立伺服器專屬的遠端設定範本:
- 開啟 Firebase 控制台遠端設定參數頁面,然後在「Client/Server」選取器中選取「Server」。
- 定義遠端設定參數時,請使用與在應用程式中定義的參數相同的名稱和資料類型,並提供值。這些值會覆寫您在擷取及評估範本時,在「設定伺服器應用程式」中設定的
defaultConfig
,並將這些值指派給變數。 - 或者,也可以設定百分比條件,持續將值套用到執行個體的隨機樣本。如要進一步瞭解百分比條件,請參閱隨機百分比中的使用者。
- 參數新增完畢後,按一下「發布變更」。
- 查看變更,然後再次按一下「發布變更」。
步驟 5:使用 Cloud Functions 或 Cloud Run 進行部署
如果您的伺服器應用程式是輕量級、事件導向,則應考慮使用 Cloud Functions 部署程式碼。舉例來說,假設您有一個應用程式包含生成式 AI API (例如 Google AI 或 Vertex AI) 技術的角色對話。在這種情況下,您可以在應用程式隨選呼叫的函式中託管 LLM 提供邏輯。
如要使用第 2 代 Cloud Functions 搭配伺服器端遠端設定,請參閱將伺服器端遠端設定與 Cloud Functions 和 Vertex AI 搭配使用。
如要進一步瞭解如何透過 Cloud Functions 部署應用程式,請參閱開始使用:編寫、測試及部署您的第一個函式。
如果您的應用程式要長時間執行 (例如含有資產的網頁應用程式),請考慮使用 Cloud Run。如要使用 Cloud Run 部署伺服器應用程式,請按照快速入門導覽課程:將 Node.js 服務部署至 Cloud Run 一文中的指南操作。
如要進一步瞭解 Cloud Run 和 Cloud Functions 的最佳應用實例,請參閱 Cloud Functions 與 Cloud Run 的比較時機。