Używaj Zdalnej konfiguracji w środowiskach serwera

Firebase Remote Config obsługuje teraz konfigurację po stronie serwera za pomocą pakietu Admin SDK Firebase dla Node.js w wersji 12.1.0 lub nowszej. Dzięki tej nowej funkcji możesz dynamicznie zarządzać zachowaniem i konfiguracją aplikacji po stronie serwera za pomocą pakietu Remote Config. Obejmuje to implementacje bezserwerowe, takie jak Cloud Functions.

W przeciwieństwie do pakietów SDK klienta Firebase, które pobierają konfigurację pochodzącą z templatu Remote Config, pakiet SDK Remote Config po stronie serwera pobiera z Firebase pełny szablon Remote Config. Serwer może następnie ocenić szablon dla każdej przychodzącej prośby i zastosować własną logikę, aby wyświetlić dostosowaną odpowiedź z bardzo małą latencją. Za pomocą warunków możesz kontrolować i dostosowywać odpowiedzi na podstawie losowych wartości procentowych i atrybutów klienta zdefiniowanych w sygnałach niestandardowych.

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

  • Definiowanie parametrów konfiguracji aplikacji działających na serwerze lub dostępnych za jego pośrednictwem, co umożliwia stosowanie takich rozwiązań jak zdalna konfiguracja parametrów modelu AI, promptów i 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, zdalnie aktualizując interfejsy API wywoływane przez Twój serwer.
  • Generuj na bieżąco konfiguracje niestandardowe dla klientów mających dostęp do Twojego serwera.
  • Zapisz, którzy klienci otrzymali wartość parametru, i użyj tego w ramach Cloud Functions jako części systemu weryfikacji uprawnień.

Możesz wdrażać Remote Config po stronie serwera w Cloud Run, Cloud Functions lub w hostowanych samodzielnie środowiskach serwera.

Zanim zaczniesz

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

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

Jeśli zainicjujesz pakiet Admin SDK bez parametrów, będzie on używać domyślnych danych logowania aplikacji Google i odczytywać opcje ze zmiennej środowiskowej GOOGLE_APPLICATION_CREDENTIALS. Aby na przykład 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ż zmienne w aplikacji, które chcesz dynamicznie aktualizować za pomocą Remote Config. Następnie zastanów się, które zmienne muszą być ustawione domyślnie w aplikacji i jakie powinny być ich wartości domyślne. Gwarantuje to, że aplikacja będzie działać prawidłowo, nawet jeśli jej połączenie z serwerem backendu 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, jak w tym przykładzie:

Nazwa parametru Opis Typ Wartość domyślna
model_name Nazwa interfejsu API modelu Ciąg znaków gemini-1.5-pro
preamble_prompt Prośba o dodanie do zapytania 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ć z Remote Config, skonfiguruj aplikację tak, aby ustawiała wartości domyślne, pobierała szablon Remote Config dla konkretnego serwera i używała jego wartości. Poniżej znajdziesz instrukcje, 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 Cloud Functions, możesz użyć asynchronicznego getServerTemplate do pobrania i wczytania szablonu w jednym kroku:

    // Initialize server-side Remote Config
    const rc = getRemoteConfig(firebaseApp);
    const template = await rc.getServerTemplate();
    
  2. Aby mieć pewność, że aplikacja będzie działać prawidłowo nawet w przypadku przerwania połączenia z serwerem backendu Remote Config, dodaj wartości domyślne dla każdego parametru do swojej aplikacji. Aby to zrobić, dodaj defaultConfig w 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ć z niego parametry i wartości:

    // 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 wartość randomizationId, której 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 lub nowszej.

    Możesz na przykład ustawić identyfikator instalacji Firebase jako randomizationId lub identyfikator użytkownika, aby każdy użytkownik kontaktujący się z Twoim serwerem był dodawany 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 artykule Typy reguł 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, aby zamienić wartości z Remote Config na oczekiwany format. Obsługiwane są te typy:

    • Typ logiczny: getBoolean
    • Obiekt: getValue
    • Numer: getNumber
    • Ciąg znaków: getString

    Jeśli na przykład wdrażasz Vertex AI na swoim serwerze i chcesz zmienić model oraz jego parametry, możesz skonfigurować parametry model_name i generationConfig. Oto przykład, jak można uzyskać dostęp 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 Twój serwer działa długotrwale, a nie w środowisku bezserwerowym, używaj funkcji setInterval, aby okresowo ponownie wczytywać szablon, aby mieć pewność, że okresowo pobierasz najnowszy szablon z serwera 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 na poziomie 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 tych samych nazwach i typach danych co parametry zdefiniowane w aplikacji, a potem podaj ich 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 znajdziesz w sekcji Typy reguł warunków.
  4. Gdy skończysz dodawać parametry, 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. Załóżmy, że masz aplikację, która zawiera dialog postaci obsługiwany przez generatywną AI API (na przykład Google AI lub Vertex AI). W tym przypadku możesz hostować logikę obsługi LLM w funkcji, którą aplikacja wywołuje na żądanie.

Jeśli aplikacja ma działać długo (np. aplikacja internetowa z zasobami), rozważ użycie Cloud Run. Aby wdrożyć aplikację serwerową za pomocą Cloud Run, postępuj zgodnie z przewodnikiem Szybki start: 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ń.