Używaj Zdalnej konfiguracji w środowiskach serwera


Firebase Remote Config obsługuje konfigurację po stronie serwera za pomocą pakietu Firebase Admin Node.js SDK w wersji 12.1.0 lub nowszej. Ta funkcja umożliwia dynamiczne zarządzanie działaniem i konfiguracją aplikacji po stronie serwera za pomocą Remote Config. Obejmuje to implementacje bezserwerowe, takie jak Cloud Functions.

W przeciwieństwie do pakietów SDK klienta Firebase, które pobierają konfigurację specyficzną dla klienta pochodzącą z szablonu Remote Config, pakiet SDK Remote Config po stronie serwera pobiera kompletny szablon Remote Config z Firebase. Serwer może następnie oceniać szablon w przypadku każdego przychodzącego żądania i używać własnej logiki do wyświetlania spersonalizowanej odpowiedzi z bardzo małym opóźnieniem. Możesz używać warunków, aby kontrolować i dostosowywać odpowiedzi na podstawie losowych wartości procentowych i atrybutów klienta zdefiniowanych w sygnałach niestandardowych.

Dzięki Remote Config po stronie serwera możesz:

  • Określ parametry konfiguracji aplikacji działających na serwerze lub dostępnych za jego pośrednictwem, co umożliwia korzystanie z przypadków użycia, takich jak zdalne konfigurowanie parametrów i promptów modelu AI oraz innych integracji, aby zapewnić bezpieczeństwo kluczy interfejsu API.
  • Dynamicznie dostosowuj parametry w odpowiedzi na zmiany w środowisku lub inne zmiany w aplikacji, takie jak aktualizowanie parametrów LLM i punktów końcowych modelu.
  • Kontroluj koszty, zdalnie aktualizując interfejsy API wywoływane przez serwer.
  • Generuj na bieżąco konfiguracje niestandardowe dla klientów uzyskujących dostęp do Twojego serwera.
  • Rejestrowanie klientów, którzy otrzymali wartość parametru, i używanie tych informacji w Cloud Functions w ramach systemu weryfikacji uprawnień.

Tagowanie po stronie serwera możesz wdrażać Remote Config w Cloud RunCloud Functions lub w środowiskach serwerowych hostowanych samodzielnie.

Zanim zaczniesz

Postępuj zgodnie z instrukcjami w sekcji Dodawanie pakietu Firebase Admin SDK do serwera, aby utworzyć projekt Firebase, skonfigurować konto usługi i dodać pakiet Firebase Admin Node.js SDK do serwera.

Krok 1. Zainicjuj pakiet Firebase Admin Node.js SDK i autoryzuj żądania interfejsu API

Gdy zainicjujesz pakiet Admin SDK bez parametrów, użyje on domyślnych danych logowania aplikacji Google i odczyta opcje ze zmiennej środowiskowej GOOGLE_APPLICATION_CREDENTIALS. Aby zainicjować pakiet SDK i dodać Remote Config:

import { initializeApp } from "firebase-admin/app";
import { getRemoteConfig } from "firebase-admin/remote-config";

// Initialize Firebase
const firebaseApp = initializeApp();

Krok 2. Określ domyślne wartości parametrów aplikacji serwera

Wskaż w aplikacji zmienne, które chcesz dynamicznie aktualizować za pomocą Remote Config. Następnie zastanów się, które zmienne muszą być domyślnie ustawione w Twojej aplikacji i jakie powinny być ich wartości domyślne. Dzięki temu aplikacja będzie działać prawidłowo nawet wtedy, gdy połączenie z Remote Configserwerem backendu zostanie przerwane.

Jeśli na przykład piszesz aplikację serwera, która zarządza funkcją generatywnej AI, możesz ustawić domyślną nazwę modelu, wstęp do promptu i konfigurację generatywnej AI, np. taką:

Nazwa parametru Opis Typ Wartość domyślna
model_name Nazwa modelu API Ciąg znaków gemini-2.0-flash
preamble_prompt Monit o dodanie na początku zapytania użytkownika Ciąg znaków 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 Parametry do wysłania do modelu JSON {"stopSequences": ["I hope this helps"], "temperature": 0.7, "maxOutputTokens": 512, "topP": 0.1, "topK": 20}

Krok 3: Skonfiguruj aplikację serwerową

Po określeniu parametrów, których chcesz używać z Remote Config, skonfiguruj aplikację tak, aby ustawiała wartości domyślne, pobierała szablon Remote Config specyficzny dla serwera i używała jego wartości. Poniższe kroki opisują sposób konfiguracji aplikacji Node.js.

  1. Otwórz i wczytaj szablon.

    // Initialize server-side Remote Config
    const rc = getRemoteConfig(firebaseApp);
    const template = rc.initServerTemplate();
    
    // Load Remote Config
    await template.load();
    

    Jeśli używasz Node.js w Cloud Functions, możesz użyć asynchronicznego getServerTemplate, aby zainicjować i wczytać szablon w jednym kroku:

    // Initialize server-side Remote Config
    const rc = getRemoteConfig(firebaseApp);
    const template = await rc.getServerTemplate();
    
  2. Aby mieć pewność, że Twoja aplikacja będzie działać poprawnie nawet w przypadku przerwania połączenia z serwerem zaplecza Remote Config, dodaj wartości domyślne dla każdego parametru do aplikacji. W tym celu dodaj defaultConfig do funkcji szablonu initServerTemplate lub 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. Po wczytaniu szablonu użyj template.evaluate(), aby zaimportować parametry i wartości z szablonu:

    // Add template parameters to config
    const config = template.evaluate();
    
  4. Opcjonalnie, jeśli ustawisz warunki w szablonie Remote Config, zdefiniuj i podaj żądane wartości:

    • Jeśli używasz warunków procentowych, dodaj randomizationId, którego chcesz użyć do oceny warunków w funkcji template.evaluate().
    • Jeśli używasz sygnałów niestandardowych, zdefiniuj atrybuty i ich wartości. Sygnały niestandardowe są dostępne w pakiecie Firebase Admin Node.js SDK w wersji 12.5.0 i nowszej.

    Możesz na przykład ustawić identyfikator instalacji Firebase jako randomizationId lub identyfikator użytkownika, aby mieć pewność, że każdy użytkownik, który kontaktuje się z Twoim serwerem, jest dodawany do odpowiedniej grupy losowej, version jako sygnał niestandardowy do kierowania reklam na określone wersje klienta i platform jako sygnał niestandardowy do kierowania reklam na platformę klienta.

    Więcej informacji o warunkach znajdziesz w artykule Rodzaje reguł warunków.

    // 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. Następnie wyodrębnij z konstanty konfiguracji potrzebne wartości parametrów. Użyj funkcji getters, aby przekształcić wartości z Remote Config do oczekiwanego formatu. Obsługiwane są te typy:

    • Wartość logiczna: getBoolean
    • Obiekt: getValue
    • Numer: getNumber
    • Ciąg znaków: getString

    Jeśli na przykład wdrażasz Vertex AI na serwerze i chcesz zmienić model oraz jego parametry, możesz skonfigurować parametry dla model_namegeneration_config. Oto przykład, jak uzyskać dostęp do wartości 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}`;
    
  6. Jeśli używasz serwera działającego długo, a nie w środowisku bezserwerowym, używaj setInterval do okresowego ponownego ładowania szablonu, aby upewnić się, że pobierasz najnowszą wersję szablonu z serwera Remote Config.

Krok 4. Ustaw wartości parametrów specyficznych dla serwera w Remote Config

Następnie utwórz szablon serweraRemote Config i skonfiguruj parametry oraz wartości, których chcesz używać w aplikacji.

Aby utworzyć szablon Remote Config dotyczący konkretnego serwera:

  1. Otwórz stronę parametrów konsoli Firebase Remote Config i w selektorze Klient/Serwer wybierz Serwer.
  2. Zdefiniuj Remote Config parametry o takich samych nazwach i typach danych jak parametry zdefiniowane w aplikacji i podaj wartości. Te wartości zastąpią defaultConfig, które ustawisz w sekcji Konfigurowanie aplikacji serwera, gdy pobierzesz i ocenisz szablon oraz przypiszesz te wartości do zmiennych.
  3. Opcjonalnie możesz ustawić warunki, aby trwale stosować wartości do losowej próbki instancji lub zdefiniowanych przez Ciebie sygnałów niestandardowych. Więcej informacji o warunkach znajdziesz w artykule Rodzaje reguł warunków.
  4. Gdy skończysz dodawać parametry, kliknij Opublikuj zmiany.
  5. Przejrzyj zmiany i kliknij ponownie Publikuj zmiany.

Krok 5. Wdróż za pomocą Cloud Functions lub Cloud Run

Jeśli aplikacja serwera jest lekka i oparta na zdarzeniach, rozważ wdrożenie kodu za pomocą Cloud Functions. Załóżmy na przykład, że masz aplikację, która zawiera dialogi postaci oparte na interfejsie API generatywnej AI (np. Google AI lub Vertex AI). W takim przypadku możesz umieścić logikę obsługi LLM w funkcji, którą aplikacja wywołuje na żądanie.

Jeśli tworzysz aplikację internetową renderowaną po stronie serwera, App Hosting obsługuje popularne platformy internetowe.

W przeciwnym razie możesz rozważyć użycie Cloud Run. Aby wdrożyć aplikację serwera za pomocą Cloud Run, postępuj zgodnie z instrukcjami w przewodniku Krótkie wprowadzenie: wdrażanie usługi Node.js w Cloud Run.

Więcej informacji o najlepszych przypadkach użycia Cloud Run i Cloud Functions znajdziesz w artykule Cloud Functions a Cloud Run: kiedy używać jednej z tych usług.

Cloud Functions