Firebase Remote Config unterstützt jetzt die serverseitige Konfiguration mit dem Firebase Admin Node.js SDK ab Version 12.1.0. Mit dieser neuen Funktion können Sie das Verhalten und die Konfiguration serverseitiger Anwendungen mithilfe von Remote Config dynamisch verwalten. Dazu gehören auch serverlose Implementierungen wie Cloud Functions.
Im Gegensatz zu Firebase-Client-SDKs, die eine clientspezifische Konfiguration abrufen, die aus der Remote Config-Vorlage abgeleitet wird, lädt das serverseitige Remote Config SDK eine vollständige Remote Config-Vorlage von Firebase herunter. Ihr Server kann dann die Vorlage bei jeder eingehenden Anfrage auswerten und mithilfe seiner eigenen Logik eine benutzerdefinierte Antwort mit sehr niedriger Latenz senden. Mit Bedingungen können Sie Antworten basierend auf zufälligen Prozentsätzen und Kundenattributen steuern und anpassen, die in benutzerdefinierten Signalen definiert sind.
Mit serverseitigem Remote Config haben Sie folgende Möglichkeiten:
- Definieren Sie Konfigurationsparameter für Anwendungen, die auf Ihrem Server ausgeführt werden oder über den Server aufgerufen werden. Dies ermöglicht die Fernkonfiguration von KI-Modellparametern und -Aufforderungen sowie andere Integrationen, damit Ihre API-Schlüssel sicher bleiben.
- Parameter dynamisch an Änderungen in Ihrer Umgebung oder andere Anwendungsänderungen anpassen, z. B. LLM-Parameter und Modellendpunkte aktualisieren.
- Sie können die Kosten senken, indem Sie die APIs, die Ihr Server aufruft, aus der Ferne aktualisieren.
- Sie können benutzerdefinierte Konfigurationen für Clients generieren, die auf Ihren Server zugreifen.
- Notieren Sie, welche Clients einen Parameterwert erhalten haben, und verwenden Sie diesen in Cloud Functions als Teil eines Berechtigungsprüfungssystems.
Sie können serverseitige Remote Config in Cloud Run, Cloud Functions oder in selbst gehosteten Serverumgebungen bereitstellen.
Hinweis
Folgen Sie der Anleitung unter Dem Server das Firebase Admin SDK hinzufügen, um ein Firebase-Projekt zu erstellen, ein Dienstkonto einzurichten und dem Server das Firebase Admin Node.js SDK hinzuzufügen.
Schritt 1: Firebase Admin Node.js SDK initialisieren und API-Anfragen autorisieren
Wenn Sie das Admin SDK ohne Parameter initialisieren, verwendet das SDK die Standardanmeldedaten für Google-Anwendungen und liest Optionen aus der Umgebungsvariablen GOOGLE_APPLICATION_CREDENTIALS
. So initialisieren Sie beispielsweise das SDK und fügen Remote Config hinzu:
import { initializeApp } from "firebase-admin/app";
import { getRemoteConfig } from "firebase-admin/remote-config";
// Initialize Firebase
const firebaseApp = initializeApp();
Schritt 2: Standardparameterwerte für Ihre Serveranwendung ermitteln
Ermitteln Sie die Variablen in Ihrer App, die Sie dynamisch mit Remote Config aktualisieren möchten. Überlegen Sie dann, welche Variablen in Ihrer Anwendung standardmäßig festgelegt werden müssen und wie ihre Standardwerte lauten sollten. So wird sichergestellt, dass Ihre Anwendung auch dann ausgeführt wird, wenn die Verbindung zum Remote Config-Backend-Server unterbrochen wird.
Wenn Sie beispielsweise eine Serveranwendung schreiben, die eine generative KI-Funktion verwaltet, können Sie einen Standardmodellnamen, einen Prompt-Vorspann und eine generative KI-Konfiguration wie die folgende festlegen:
Parametername | Beschreibung | Typ | Standardwert |
---|---|---|---|
model_name |
Modell-API-Name | String | gemini-1.5-pro |
preamble_prompt
|
Prompt, der der Suchanfrage des Nutzers vorangestellt werden soll | String | 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
|
Parameter zum Senden an das Modell | JSON |
{"stopSequences":
["I hope this
helps"],
"temperature":
0.7,
"maxOutputTokens":
512, "topP": 0.1,
"topK": 20} |
Schritt 3: Serveranwendung konfigurieren
Nachdem Sie die Parameter festgelegt haben, die Sie mit Remote Config verwenden möchten, konfigurieren Sie die Anwendung so, dass Standardwerte festgelegt werden. Rufen Sie dann die serverspezifische Remote Config-Vorlage ab und verwenden Sie deren Werte. In den folgenden Schritten wird beschrieben, wie Sie Ihre Node.js-Anwendung konfigurieren.
Rufen Sie die Vorlage auf und laden Sie sie.
// Initialize server-side Remote Config const rc = getRemoteConfig(firebaseApp); const template = rc.initServerTemplate(); // Load Remote Config await template.load();
Wenn Sie Node.js in einer Cloud Functions verwenden, können Sie die asynchrone
getServerTemplate
verwenden, um die Vorlage in einem einzigen Schritt abzurufen und zu laden:// Initialize server-side Remote Config const rc = getRemoteConfig(firebaseApp); const template = await rc.getServerTemplate();
Damit Ihre Anwendung auch dann ausgeführt werden kann, wenn die Verbindung zum Remote Config-Backendserver unterbrochen wird, fügen Sie Ihrer App Standardwerte für jeden Parameter hinzu. Fügen Sie dazu in der Vorlagenfunktion
initServerTemplate
odergetServerTemplate
eindefaultConfig
ein: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()
Nachdem die Vorlage geladen wurde, verwenden Sie
template.evaluate()
, um Parameter und Werte aus der Vorlage zu importieren:// Add template parameters to config const config = template.evaluate();
Optional: Wenn Sie in Ihrer Remote Config-Vorlage Bedingungen festlegen, definieren und geben Sie die gewünschten Werte an:
- Wenn Sie Prozentsatzbedingungen verwenden, fügen Sie die
randomizationId
, die Sie zur Auswertung der Bedingungen verwenden möchten, in die Funktiontemplate.evaluate()
ein. - Wenn Sie benutzerdefinierte Signale verwenden, definieren Sie die Attribute und ihre Werte. Benutzerdefinierte Signale sind mit Firebase Admin Node.js SDK 12.5.0 und höher verfügbar.
Sie können beispielsweise eine Firebase-Installations-ID als
randomizationId
oder eine Nutzer-ID festlegen, damit jeder Nutzer, der Ihren Server kontaktiert, der richtigen zufälligen Gruppe hinzugefügt wird.version
kann als benutzerdefiniertes Signal für die Ausrichtung auf bestimmte Clientversionen undplatform
als benutzerdefiniertes Signal für die Ausrichtung auf die Clientplattform verwendet werden.Weitere Informationen zu Bedingungen finden Sie unter Bedingungsregeltypen.
// 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" });
- Wenn Sie Prozentsatzbedingungen verwenden, fügen Sie die
Als Nächstes extrahieren Sie die benötigten Parameterwerte aus der Konfigurationskonstante. Verwenden Sie
getters
, um die Werte von Remote Config in das erwartete Format umzuwandeln. Die folgenden Typen werden unterstützt:- Boolesch:
getBoolean
- Objekt:
getValue
- Nummer:
getNumber
- String:
getString
Wenn Sie beispielsweise Vertex AI auf Ihrem Server implementieren und das Modell und die Modellparameter ändern möchten, sollten Sie Parameter für
model_name
undgenerationConfig
konfigurieren. Hier ein Beispiel dafür, wie Sie auf die Werte von Remote Config zugreifen können:// 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}`;
- Boolesch:
Wenn Ihr Server im Gegensatz zu einer serverlosen Umgebung lange läuft, verwenden Sie
setInterval
, um die Vorlage regelmäßig neu zu laden, damit Sie regelmäßig die aktuellste Vorlage vom Remote Config-Server abrufen.
Schritt 4: Serverspezifische Parameterwerte in Remote Config festlegen
Erstellen Sie als Nächstes eine Server-Remote Config-Vorlage und konfigurieren Sie die Parameter und Werte, die in Ihrer App verwendet werden sollen.
So erstellen Sie eine serverspezifische Remote Config-Vorlage:
- Öffnen Sie die Seite Remote ConfigParameter der Firebase Console und wählen Sie in der Auswahl Client/Server die Option Server aus.
- Definieren Sie Remote Config-Parameter mit denselben Namen und Datentypen wie die Parameter, die Sie in Ihrer App definiert haben, und stellen Sie Werte bereit. Diese Werte überschreiben die
defaultConfig
, die Sie unter Serveranwendung konfigurieren festgelegt haben, wenn Sie die Vorlage abrufen und auswerten und diese Werte Ihren Variablen zuweisen. - Optional können Sie Bedingungen festlegen, um Werte dauerhaft auf eine zufällige Stichprobe von Instanzen oder benutzerdefinierten Signalen anzuwenden. Weitere Informationen zu Bedingungen finden Sie unter Bedingungsregeltypen.
- Wenn Sie mit dem Hinzufügen der Parameter fertig sind, klicken Sie auf Änderungen veröffentlichen.
- Prüfen Sie die Änderungen und klicken Sie noch einmal auf Änderungen veröffentlichen.
Schritt 5: Mit Cloud Functions oder Cloud Run bereitstellen
Wenn Ihre Serveranwendung einfach und ereignisgesteuert ist, sollten Sie Ihren Code mit Cloud Functions bereitstellen. Angenommen, Sie haben eine App, die Zeichendialoge enthält, die von einer Generative AI API unterstützt werden (z. B. Google AI oder Vertex AI). In diesem Fall könnten Sie Ihre LLM-Bereitstellungslogik in einer Funktion hosten, die Ihre App bei Bedarf aufruft.
Eine Lösung, bei der Cloud Functions der 2. Generation mit serverseitigem Remote Config verwendet wird, finden Sie unter Serverseitiges Remote Config mit Cloud Functions und Vertex AI verwenden.
Weitere Informationen zum Bereitstellen Ihrer App mit Cloud Functions finden Sie unter Einstieg: Erste Funktionen schreiben, testen und bereitstellen.
Eine Beispielfunktion, die mit serverseitigen Remote Config- und App Check-Werten aufgerufen werden kann, finden Sie unter Vertex AI Gemini API mit Remote Config und App Check aufrufen.
Wenn Ihre Anwendung für eine lange Laufzeit ausgelegt ist (z. B. eine Webanwendung mit Assets), könnte Cloud Run für Sie von Interesse sein. Wenn Sie Ihre Serveranwendung mit Cloud Run bereitstellen möchten, folgen Sie der Anleitung unter Kurzanleitung: Node.js-Dienst in Cloud Run bereitstellen.
Weitere Informationen zu den besten Anwendungsfällen für Cloud Run und Cloud Functions finden Sie unter Cloud Functions oder Cloud Run: Was kommt wann zum Einsatz?.