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.
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();
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 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 wczytaniu szablonu użyj
template.evaluate()
, aby zaimportować z niego parametry i wartości:// 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 wartość
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 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 orazplatform
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" });
- Jeśli używasz warunków procentowych, dodaj wartość
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, 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}`;
- Typ logiczny:
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:
- 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 zdefiniowanych przez siebie instancji lub 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 dowiedzieć się, jak wykorzystać rozwiązanie Cloud Functions 2 generacji z Remote Config po stronie serwera, zapoznaj się z informacjami o używaniu Remote Config po stronie serwera za pomocą 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 pierwszych 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ę 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ń.