Używaj Zdalnej konfiguracji w środowiskach serwera

Zdalna konfiguracja Firebase obsługuje teraz konfigurację po stronie serwera za pomocą 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 w aplikacjach za pomocą Zdalnej konfiguracji. Obejmuje to implementacje bezserwerowe takich jak Cloud Functions.

W odróżnieniu od pakietów SDK klienta Firebase, które pobierają konfigurację zależną od klienta pochodzą z szablonu Zdalnej konfiguracji, czyli elementu dostępnego po stronie serwera Pakiet SDK Zdalnej konfiguracji pobiera kompletny szablon Zdalnej konfiguracji. z Firebase. Serwer może następnie ocenić szablon z każdym żądania przychodzącego i używają własnej logiki do obsługi dostosowanej odpowiedzi, bardzo małe opóźnienie.

Dzięki Zdalnej konfiguracji po stronie serwera możesz:

  • Zdefiniuj parametry konfiguracji dla aplikacji uruchomionych lub używanych przez serwer, co pozwala na przykład na zdalne Parametry modelu AI i prompty oraz inne integracje, aby zapewnić Klucze interfejsu API są bezpieczne.
  • dynamicznie dostosowywać parametry w odpowiedzi na zmiany w środowisku lub innych zmian w aplikacjach, takich jak aktualizowanie parametrów LLM i punktów końcowych 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.
  • Zanotuj, którzy klienci otrzymali wartość parametru, i użyj jej w Cloud Functions w ramach systemu weryfikacji uprawnień.

Możesz wdrożyć Zdalną konfigurację po stronie serwera w Cloud Run, Cloud Functions lub własnych środowisk serwerowych.

Zanim zaczniesz

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

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

Jeśli zainicjujesz pakiet Admin SDK bez parametrów, pakiet będzie używać Google Ustawienie domyślne aplikacji Dane logowania i odczytuje opcje ze środowiska GOOGLE_APPLICATION_CREDENTIALS . Aby na przykład zainicjować pakiet SDK i dodać Zdalną konfigurację:

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 serwerowej

Określ zmienne w aplikacji, które chcesz dynamicznie aktualizować Zdalna konfiguracja. 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 działa nawet wtedy, gdy jej połączenie Działanie serwera backendu Zdalnej konfiguracji zostało przerwane.

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

Nazwa parametru Opis Typ Wartość domyślna
model_name Nazwa interfejsu Model API Ciąg znaków gemini-1.5-pro
preamble_prompt Prompt na początku w zapytanie 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ć Zdalna konfiguracja, skonfiguruj w swojej aplikacji wartości domyślne, pobierz z szablonu Zdalnej konfiguracji konkretnego serwera i zastosować jego wartości. z poniższych kroków dowiesz się, jak skonfigurować aplikację Node.js.

  1. Uzyskaj dostęp do szablonu i wczytaj go.

    // 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że używać asynchronicznego getServerTemplate do pobierania i wczytywania wystarczy wykonać jedną czynność:

    // 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 Zdalnej konfiguracji, 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 wczytaniu szablonu użyj narzędzia template.evaluate(), aby zaimportować parametry i wartości z szablonu:

    // Add template parameters to config
    const config = template.evaluate();
    
  4. Opcjonalnie, jeśli ustawisz procent warunki w szablonie Zdalnej konfiguracji zdefiniuj i podaj randomizationId którego chcesz użyć do oceny swoich chorób w template.evaluate().

    Możesz np. ustawić instalację Firebase Identyfikator jako identyfikator randomizationId, czyli identyfikator użytkownika, kontakt z Twoim serwerem, który zostanie dodany do odpowiedniej losowej grupy. to jest podstawowy przykład, ale możesz skonfigurować serwer do generowania różnych elementów randomizationIds dla różnych klientów żądań, aby użytkownicy otrzymywali spójne wartości z Zdalna konfiguracja na podstawie procentu członkostwa grup.

    Więcej informacji o warunkach procentowych znajdziesz w sekcji Użytkownik losowo wartość procentową.

    // Set the randomizationId
    const randomizationId = "2ac93c28-c459-4760-963d-a3974ec26c04"
    
    // Add template parameters to `config`. Evaluates the
    // template and returns the parameter value assigned to
    // the group assigned to the {randomizationId}.
    const config = template.evaluate({
      randomizationId
    });
    
  5. Następnie wyodrębnij potrzebne wartości parametrów ze stałej konfiguracji. Używaj getters w celu rzutowania wartości ze Zdalnej konfiguracji do oczekiwanego . 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 dostępu do wartości Zdalnej konfiguracji:

    // 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 Serwer Zdalnej konfiguracji.

Krok 4. Ustaw wartości parametrów serwera w Zdalnej konfiguracji

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

Aby utworzyć szablon Zdalnej konfiguracji dla konkretnego serwera:

  1. Otwórz parametry Zdalnej konfiguracji konsoli Firebase. oraz W selektorze Klient/serwer kliknij Serwer.
  2. Zdefiniuj parametry Zdalnej konfiguracji o takich samych nazwach i typach danych jak parametry zdefiniowane w aplikacji i podane w nich wartości. Te zastąpią defaultConfig ustawioną w Skonfiguruj aplikacji serwera podczas pobierania i oceniania i przypisz te wartości do zmiennych.
  3. Opcjonalnie możesz ustawić warunki procentowe, by na stałe zastosować wartość do losową próbkę instancji. Więcej informacji o wartości procentowej warunków, patrz sekcja Użytkownik losowo wartość procentową.
  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 Twoja aplikacja serwerowa jest prostsza i steruje zdarzeniami, wdrażania 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ę udostępniania 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ć aplikacji serwera za pomocą Cloud Run, postępuj zgodnie z instrukcjami z przewodnika Szybki start: wdrażanie Z usługi Node.js do Cloud Uruchom.

Aby dowiedzieć się więcej o najlepszych przypadkach użycia Cloud Run i w Cloud Functions znajdziesz porównanie Cloud Functions, a Cloud Run: kiedy używać jeden w czasie inna.