Używaj Zdalnej konfiguracji w środowiskach serwera

Firebase Remote Config obsługuje teraz konfigurację po stronie serwera za pomocą protokołu pakietu Firebase Admin Node.js SDK w wersji 12.1.0 lub nowszej. Ta nowa funkcja aby dynamicznie zarządzać działaniem i konfiguracją stron po stronie serwera aplikacji za pomocą Remote Config. Obejmuje to implementacje bezserwerowe np. Cloud Functions.

W przeciwieństwie do pakietów SDK klienta Firebase, które pobierają konfigurację pochodzącą z szablonu Remote Config, pakiet SDK Remote Config po stronie serwera pobiera pełny szablon Remote Config z Firebase. Serwer może następnie ocenić szablon dla każdej przychodzącej prośby i zastosować własną logikę, aby wyświetlić spersonalizowaną odpowiedź z bardzo małą latencją. Możesz używać warunków do kontrolowania i dostosowywania 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:

  • Definiowanie parametrów konfiguracji aplikacji działających na serwerze lub dostępnych za jego pośrednictwem, co umożliwia m.in. zdalne konfigurowanie parametrów modeli AI i promptów oraz innych integracji, aby zapewnić bezpieczeństwo kluczy interfejsu API.
  • Dynamicznie dostosowywać parametry w odpowiedzi na zmiany w środowisku lub inne zmiany w aplikacji, np. aktualizować parametry LLM i punkty końcowe modelu.
  • Kontroluj koszty przez zdalne aktualizowanie interfejsów API wywoływanych przez serwer.
  • Generuj na bieżąco niestandardowe konfiguracje dla klientów, którzy mają dostęp do serwera.
  • Zapisz, którzy klienci otrzymali wartość parametru, i użyj tego w ramach Cloud Functions jako części systemu weryfikacji uprawnień.

Możesz wdrożyć Remote Config po stronie serwera w Cloud Run, Cloud Functions lub własne środowiska serwerowe.

Zanim zaczniesz

Wykonaj instrukcje z artykułu Dodawanie pakietu Firebase Admin SDK do , aby utworzyć Firebase. projektu, skonfiguruj konto usługi i dodaj pakiet SDK Firebase Admin Node.js serwera.

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

Gdy inicjujesz pakiet Admin SDK bez parametrów, używa on domyślnych danych logowania Google Application i odczytuje opcje z zmiennej środowiskowej GOOGLE_APPLICATION_CREDENTIALS. Aby np. zainicjować pakiet SDK i dodać do niego 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 aktualizować dynamicznie za pomocą funkcji Remote Config. Następnie zastanów się, które zmienne należy ustawić domyślnie w Twojej aplikacji i ich wartości domyślne. Dzięki temu aplikacja będzie działać prawidłowo, nawet jeśli połączenie z serwerem backendowym Remote Config zostanie przerwane.

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

Nazwa parametru Opis Typ Wartość domyślna
model_name Nazwa interfejsu Model API Ciąg znaków gemini-1.5-pro
preamble_prompt Prośba o dodanie do 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ę serwera

Po określeniu parametrów, których chcesz używać Remote Config, skonfiguruj aplikację, aby ustawiała wartości domyślne, pobierz używany z serwerem szablon Remote Config i używaj jego wartości. z poniższych kroków dowiesz się, jak skonfigurować aplikację 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 ramach Cloud Functions, możesz użyć asynchronicznego getServerTemplate, aby pobrać i wczytać szablon w jednym kroku:

    // Initialize server-side Remote Config
    const rc = getRemoteConfig(firebaseApp);
    const template = await rc.getServerTemplate();
    
  2. Aby zapewnić prawidłowe działanie aplikacji nawet wtedy, gdy jest połączona z działanie serwera backendu Remote Config zostało przerwane, dodaj wartości domyślne dla: poszczególnych parametrów aplikacji. Aby to zrobić, dodaj defaultConfig wewnątrz Funkcja 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 załadowaniu szablonu użyj polecenia template.evaluate(), aby zaimportować parametry i wartości z szablonu:

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

    • Jeśli używasz warunków procentowych, dodaj funkcję randomizationId, której chcesz użyć do oceny warunków w funkcji template.evaluate().
    • Jeśli używasz niestandardowego ustawienia , zdefiniować atrybuty i ich wartości. Sygnały niestandardowe są dostępne w pakiecie Firebase Admin Node.js SDK w wersji 12.5.0 lub 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, zostanie dodany do odpowiedniej losowo wybranej grupy, version jako sygnał niestandardowy do kierowania na konkretne wersje klienta oraz platform jako sygnał niestandardowy do kierowania na platformę klienta.

    Więcej informacji o warunkach znajdziesz w sekcji Reguła warunku .

    // 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 potrzebne wartości parametrów z konstantej konfiguracji. Użyj funkcji getters do rzutowania wartości z: Remote Config do odpowiedniego formatu. Obsługiwane są te typy:

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

    Jeśli na przykład jesteś wdrożenie Vertex AI serwer i chcesz zmienić parametry modelu i modelu, konfigurować parametry model_name i generationConfig. Oto przykład uzyskania dostępu do wartości parametru 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 serwer działa od dawna w przeciwieństwie do środowiska bezserwerowego, używaj setInterval do okresowego ponownego ładowania szablonu, aby mieć pewność, okresowo pobierasz najnowszy szablon z Remote Config.

Krok 4. Ustaw wartości parametrów związanych z serwerem w pliku Remote Config

Następnie utwórz szablon Remote Config serwera i skonfiguruj parametry oraz wartości do wykorzystania w aplikacji.

Aby utworzyć szablon Remote Config dla konkretnego serwera:

  1. Otwórz konsolę FirebaseRemote Config, przejdź na stronę parametrów i w sekcji Klient/serwer wybierz Serwer.
  2. Zdefiniuj parametry Remote Config o takich samych nazwach i typach danych jak parametry zdefiniowane w aplikacji i podane w nich wartości. Te wartości zastąpią wartości defaultConfig ustawione w konfiguracji aplikacji serwera, gdy pobierzesz i przeanalizujesz szablon oraz przypiszesz te wartości do swoich zmiennych.
  3. Opcjonalnie możesz ustawić warunki, aby stale stosować wartości do losowej próbki zdefiniowanych przez siebie instancji lub sygnałów niestandardowych. Więcej informacji o warunkach – patrz Reguła warunku .
  4. Po dodaniu parametrów kliknij Opublikuj zmiany.
  5. Sprawdź zmiany i ponownie kliknij Opublikuj zmiany.

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

Jeśli aplikacja serwera jest lekka i sterowana zdarzeniami, rozważ wdrożenie kodu za pomocą Cloud Functions. Przykład: Załóżmy, że masz aplikację, która zawiera dialogi postaci generowane przez generatywną AI API (na przykład Google AI lub Vertex AI). W takim przypadku możesz hostować logikę wyświetlania LLM w funkcji wywoływanej przez aplikację na żądanie.

Jeśli Twoja aplikacja ma działać długo (np. aplikacja internetowa z zasobów), rozważ zastosowanie Cloud Run. Aby wdrożyć aplikację serwera za pomocą Cloud Run, postępuj zgodnie z instrukcjami w artykule Krótkie wprowadzenie: wdrażanie usługi Node.js w Cloud Run.

Więcej informacji o najlepszych zastosowaniach Cloud Run i Cloud Functions znajdziesz w artykule Cloud Functions a Cloud Run: kiedy używać jednego z tych rozwiązań.