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 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 wykorzystać 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 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 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, zdalnie aktualizując interfejsy API wywoływane przez Twój serwer.
- generować niestandardowe konfiguracje na bieżąco dla klientów, którzy uzyskują 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 wdrażać Remote Config po stronie serwera w Cloud Run, Cloud Functions lub w hostowanych samodzielnie środowiskach serwera.
Zanim zaczniesz
Aby utworzyć projekt Firebase, skonfigurować konto usługi i dodać do serwera pakiet SDK Firebase Admin Node.js, wykonaj instrukcje podane w artykule Dodawanie pakietu Firebase Admin SDK do serwera.
Krok 1. Zainicjuj pakiet SDK Firebase Admin Node.js i autoryzuj żądania interfejsu API
Gdy inicjujesz pakiet Admin SDK bez parametrów, używa on domyślnych danych logowania Google i odczytuje opcje z 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 dla aplikacji serwera
Wskaż w aplikacji zmienne, które chcesz aktualizować dynamicznie za pomocą funkcji 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. 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, 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 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ć 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ższe kroki opisują konfigurowanie aplikacji 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 mieć pewność, że aplikacja będzie działać prawidłowo, nawet jeśli jej połączenie z serwerem backendowym Remote Config zostanie przerwane, dodaj do aplikacji wartości domyślne dla każdego parametru. Aby to zrobić, dodaj
defaultConfig
wewnątrz funkcji 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 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 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 artykule Typy 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" });
- 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
, 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
igenerationConfig
. Oto przykład sposobu uzyskiwania dostępu 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}`;
- Typ logiczny:
Jeśli Twój serwer działa długotrwale, w przeciwieństwie do środowiska bezserwerowego, użyj
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 serwera Remote Config i skonfiguruj parametry i wartości do użycia 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 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. - Opcjonalnie możesz ustawić warunki, aby stale stosować wartości do losowej próbki instancji lub zdefiniowanych przez siebie sygnałów niestandardowych. Więcej informacji o warunkach znajdziesz w sekcji Typy reguł warunków.
- Gdy skończysz dodawać parametry, 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. 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.
Aby zapoznać się z rozwiązaniem, które korzysta z tagów Cloud Functions drugiej generacji z użyciem tagów Remote Config po stronie serwera, przeczytaj artykuł Korzystanie z tagów Remote Config po stronie serwera z użyciem tagów 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łującą po stronie serwera Remote Config i App Check w funkcji Vertex AI Gemini API z użyciem funkcji Remote Config i App Check.
Jeśli aplikacja ma działać długo (np. aplikacja internetowa z zasobami), rozważ użycie 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ń.