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.
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();
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 szablonuinitServerTemplate
lubgetServerTemplate
: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()
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();
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 funkcjitemplate.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 orazplatform
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" });
- Jeśli używasz warunków procentowych, dodaj funkcję
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
igenerationConfig
. 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}`;
- Wartość logiczna:
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:
- Otwórz konsolę FirebaseRemote Config, przejdź na stronę parametrów i w sekcji Klient/serwer wybierz Serwer.
- 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. - 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 .
- Po dodaniu parametrów kliknij Opublikuj zmiany.
- 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.
Aby skorzystać z rozwiązania, które wykorzystuje Cloud Functions 2 generacji z Remote Config po stronie serwera, patrz Użyj Remote Config po stronie serwera za pomocą funkcji Cloud Functions i Vertex AI.
Więcej informacji o wdrażaniu aplikacji za pomocą Cloud Functions znajdziesz w artykule Pierwsze kroki: pisanie, testowanie i wdrażanie funkcji.
Wypróbuj przykładową funkcję wywoływaną z wykorzystaniem Remote Config po stronie serwera i App Check Zadzwoń do: Vertex AI Gemini API, używając: Remote Config i App Check
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ń.