Remote Config in Serverumgebungen verwenden

Firebase Remote Config unterstützt jetzt die serverseitige Konfiguration mit dem Firebase Admin Node.js SDK ab Version 12.1.0 Diese neue Funktion ermöglicht um das Verhalten und die Konfiguration der serverseitigen Anwendungen, die Remote Config verwenden. Dazu gehören auch serverlose Implementierungen wie Cloud Functions.

Im Gegensatz zu Firebase-Client-SDKs, die eine clientspezifische Konfiguration abrufen aus der Vorlage Remote Config abgeleitet, wird die serverseitige Remote Config SDK lädt eine vollständige Remote Config-Vorlage herunter von Firebase. Ihr Server kann die Vorlage dann mit jedem Anforderung und nutzen ihre eigene Logik, um eine benutzerdefinierte Antwort mit sehr niedrige Latenz. 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:

  • Sie können Konfigurationsparameter für Anwendungen definieren, die auf Ihrem Server ausgeführt werden oder auf die über Ihren Server zugegriffen wird. So können Sie Anwendungsfälle wie die Remotekonfiguration von KI-Modellparametern, Prompts und anderen Integrationen ermöglichen, um die Sicherheit Ihrer API-Schlüssel zu gewährleisten.
  • Parameter dynamisch an Änderungen in Ihrer Umgebung oder andere Anwendungsänderungen anpassen, z. B. LLM-Parameter und Modellendpunkte aktualisieren
  • Kontrollieren Sie die Kosten, indem Sie die APIs, die Ihr Server aufruft, remote aktualisieren.
  • Erstellen Sie benutzerdefinierte Konfigurationen im laufenden Betrieb für Clients, die auf Ihre Server.
  • Erfassen Sie, welche Kunden einen Parameterwert erhalten haben, und verwenden Sie diese Informationen in Cloud Functions als Teil eines Berechtigungsbestätigungssystems.

Sie können das serverseitige Remote Config in Cloud Run bereitstellen. Cloud Functions oder selbst gehostete Serverumgebungen.

Hinweis

Folgen Sie der Anleitung unter Firebase Admin SDK zu Ihrem Server, um ein Firebase-Projekt zu erstellen, Projekt, richten Sie ein Dienstkonto ein und fügen Sie das Firebase Admin Node.js SDK zum auf Ihrem Server.

Schritt 1: Firebase Admin Node.js SDK initialisieren und API-Anfragen autorisieren

Wenn Sie das Admin SDK ohne Parameter initialisieren, verwendet das SDK Google Anwendungsstandard Anmeldedaten und liest Optionen aus der GOOGLE_APPLICATION_CREDENTIALS-Umgebung . 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 standardmäßig in Ihre Anwendung und ihre Standardwerte. Dadurch wird sichergestellt, wird Ihre Anwendung auch dann erfolgreich ausgeführt, Back-End-Server Remote Config ist unterbrochen.

Wenn Sie z. B. eine Serveranwendung schreiben, die eine können Sie einen Standardmodellnamen, die Präambel des Prompts und einer generativen KI-Konfiguration wie die folgende:

Parametername Beschreibung Typ Standardwert
model_name Name der Modell-API String gemini-1.5-pro
preamble_prompt Voranstellen auffordern für die Nutzenden Suchanfrage 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, die an das Modell gesendet werden sollen 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, konfigurieren Sie Ihre Anwendung so, dass Standardwerte festgelegt werden, rufen Sie sie ab. die serverspezifische Vorlage Remote Config und verwenden Sie deren Werte. Die In den folgenden Schritten wird beschrieben, wie Sie Ihre Node.js-Anwendung konfigurieren.

  1. 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 du Node.js in einer Cloud Functions verwendest, kannst du 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();
    
  2. Um sicherzustellen, dass Ihre Anwendung auch dann erfolgreich ausgeführt wird, wenn ihre Verbindung zu der Remote Config-Backend-Server unterbrochen ist, fügen Sie Standardwerte hinzu für auf Ihre App übertragen. Fügen Sie dazu ein defaultConfig in Ihr Vorlagenfunktion initServerTemplate oder getServerTemplate:

    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()
    
  3. Nachdem die Vorlage geladen wurde, importieren Sie mit template.evaluate() die Parameter und Werte aus der Vorlage:

    // Add template parameters to config
    const config = template.evaluate();
    
  4. Optional: Wenn Sie in Ihrer Remote Config-Vorlage Bedingungen festlegen, definieren und geben Sie die gewünschten Werte an:

    • Bei Verwendung von percentage Bedingungen, Fügen Sie die randomizationId hinzu, mit der Sie Ihre Bedingung(en) innerhalb der Funktion template.evaluate().
    • Wenn Sie benutzerdefinierte Signale verwenden, definieren Sie die Attribute und ihre Werte. Benutzerdefinierte Signale sind mit dem 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 und platform als benutzerdefiniertes Signal für die Ausrichtung auf die Clientplattform verwendet werden.

    Weitere Informationen zu Bedingungen finden Sie unter Arten von bedingten Regeln.

    // 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"
    });
    
    
  5. Als Nächstes extrahieren Sie die benötigten Parameterwerte aus der Konfigurationskonstante. Verwenden Sie getters, um die Werte aus Remote Config in das erwartete Format umwandeln. 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 und generationConfig 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}`;
    
  6. 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:

  1. Öffnen Sie die Remote Config-Parameter der Firebase Console und im Client/Server-Auswahl: Wählen Sie Server aus.
  2. Definieren Sie Remote Config-Parameter mit denselben Namen und Datentypen wie die Parameter, die Sie in Ihrer App definiert haben, und geben Sie Werte an. Diese Werte überschreiben den defaultConfig, den Sie unter Serveranwendung konfigurieren festgelegt haben, wenn Sie die Vorlage abrufen und auswerten und diese Werte Ihren Variablen zuweisen.
  3. Optional können Sie Bedingungen festlegen, um Werte dauerhaft auf eine zufällige Stichprobe von Instanzen oder von Ihnen definierten benutzerdefinierten Signalen anzuwenden. Weitere Informationen finden Sie unter Bedingungsregel .
  4. Wenn Sie mit dem Hinzufügen der Parameter fertig sind, klicken Sie auf Änderungen veröffentlichen.
  5. 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 mit Charakterdialogen, die von einer generativen KI-API (z. B. Google AI oder Vertex AI) unterstützt werden. In diesem Fall können Sie die Logik für die LLM-Auslieferung in einer Funktion hosten, die von Ihrer App bei Bedarf aufgerufen wird.

Wenn Ihre Anwendung langfristig ausgeführt werden soll (z. B. eine Webanwendung mit Assets), sollten Sie Cloud Run in Betracht ziehen. 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?.