Firebase Remote Config 支援使用 Firebase 管理員 Python SDK 6.7.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、Cloud Functions 或自管伺服器環境中部署伺服器端 Remote Config。
事前準備
請按照「將 Firebase Admin SDK 新增至伺服器」中的操作說明,建立 Firebase 專案、設定服務帳戶,並將 Firebase Python SDK 新增至伺服器。
步驟 1:初始化 Firebase Admin Python SDK 並授權 API 要求
當您使用沒有參數來初始化 Admin SDK 時,SDK 會使用 Google 應用程式預設憑證,並從 GOOGLE_APPLICATION_CREDENTIALS
環境變數讀取選項。如要初始化 SDK 並新增 Remote Config,請按照下列步驟操作:
import firebase_admin
import asyncio
import json
firebase_admin.initialize_app()
步驟 2:找出伺服器應用程式的預設參數值
找出應用程式中要使用 Remote Config 動態更新的變數。接著,請考量應用程式中必須預設設定哪些變數,以及這些變數的預設值。這樣一來,即使應用程式與 Remote Config 後端伺服器的連線中斷,應用程式仍可順利執行。
舉例來說,如果您要編寫用於管理生成式 AI 函式的伺服器應用程式,可以設定預設模型名稱、提示前置文字和生成式 AI 設定,如下所示:
參數名稱 | 說明 | 類型 | 預設值 |
---|---|---|---|
model_name |
模型 API 名稱 | 字串 | gemini-2.0-flash |
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:設定伺服器應用程式
確定要與 Remote Config 搭配使用的參數後,請設定應用程式,以便設定預設值、擷取特定伺服器的 Remote Config 範本,並使用其值。以下步驟說明如何設定 Python 應用程式。
存取及載入範本。
from firebase_admin import remote_config # Initialize server-side Remote Config template = remote_config.init_server_template() # Load the template from the backend asyncio.run(template.load())
如果您使用 Python 搭配 Cloud Functions,可以使用非同步
get_server_template
在單一步驟中擷取及載入範本:# Initialize server-side Remote Config template = remote_config.get_server_template()
為確保應用程式即使與 Remote Config 後端伺服器的連線中斷,也能順利執行,請在應用程式中為每個參數新增預設值。如要這麼做,請在
init_server_template
或get_server_template
範本函式中新增defaultConfig
:template = remote_config.init_server_template({ 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 asyncio.run(template.load())
您也可以使用
get_server_template
函式擷取所需的伺服器範本,藉此初始化範本。您可以使用template.to_json
函式,將這個範本轉換為 JSON 格式。這個 JSON 範本可儲存在本機。接著,您可以使用init_server_template
函式初始化這個 JSON 範本。範本載入後,請使用
template.evaluate()
從範本匯入參數和值:# Add template parameters to config config = template.evaluate()
您也可以在 Remote Config 範本中設定條件,定義並提供所需的值:
- 如果使用百分比條件,請在
template.evaluate()
函式中新增要用於評估條件的randomizationId
。 - 如果使用自訂信號,請定義屬性及其值。自訂信號適用於 Firebase Admin Python SDK 6.7.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. config = template.evaluate({ 'randomizationId': "2ac93c28-c459-4760-963d-a3974ec26c04", 'version': "1.0", 'platform': "Android" })
- 如果使用百分比條件,請在
接下來,請從設定常數中擷取所需的參數值。使用
getters
將 Remote Config 的值轉換為預期格式。支援以下類型:- 布林值:
get_bool
- 物件:
get_value
- 編號:
get_number
- 字串:
get_string
舉例來說,如果您在伺服器上導入 Vertex AI,並想要變更模型和模型參數,建議您為
model_name
和generation_config
設定參數。以下範例說明如何存取 Remote Config 的值:# Replace defaults with values from Remote Config. generation_config = json.loads(config.get_string('generation_config')) is_ai_enabled = config.get_bool('is_ai_enabled') model = config.get_string('model_name') # Generates a prompt comprised of the Remote Config # parameter and prepends it to the user prompt. prompt = f"{config.get_string('preamble_prompt')}{req.args.get('prompt')}"
- 布林值:
如果您的伺服器是長時間執行的伺服器 (而非無伺服器環境),請使用
setInterval
定期重新載入範本,確保您定期從 Remote Config 伺服器擷取最新的範本。
步驟 4:在 Remote Config 中設定伺服器專屬參數值
接著,請建立伺服器 Remote Config 範本,並設定應用程式要使用的參數和值。
如要建立特定伺服器的 Remote Config 範本,請按照下列步驟操作:
- 開啟 Firebase 控制台 Remote Config 參數頁面,然後從 Client/Server 選取器中選取 Server。
- 定義 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 部署應用程式,請參閱「開始使用:編寫、測試及部署第一個函式」一文。
如果您的應用程式是長時間執行的應用程式 (例如含有資產的網頁應用程式),不妨考慮使用 Cloud Run。如要使用 Cloud Run 部署伺服器應用程式,請參閱「快速入門導覽課程:將 Python 服務部署至 Cloud Run」一文。
如要進一步瞭解 Cloud Run 和 Cloud Functions 的最佳用途,請參閱「Cloud Functions 與 Cloud Run:何時應使用哪一個」。