Firebase Remote Config obsługuje konfigurację po stronie serwera za pomocą pakietu Firebase Admin Python SDK w wersji 6.7.0 lub nowszej. Dzięki tej funkcji możesz dynamicznie zarządzać zachowaniem i konfiguracją aplikacji po stronie serwera za pomocą Remote Config. Dotyczy to wdrożeń bezserwerowych, takich 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 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 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.
- 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ć pakiet SDK Firebase Python do serwera, wykonaj instrukcje podane w artykule Dodawanie pakietu Firebase Admin SDK do serwera.
Krok 1. Zainicjuj pakiet Firebase Admin SDK na platformie Python i autoryzuj żądania 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 zainicjować pakiet SDK i dodać Remote Config:
import firebase_admin
import asyncio
import json
firebase_admin.initialize_app()
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ć domyślnie ustawione 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 prompta 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-2.0-flash |
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 Python.
Otwórz i wczytaj szablon.
from firebase_admin import remote_config # Initialize server-side Remote Config template = remote_config.init_server_template() # Load the template from the backend asyncio.run(template.load())
Jeśli używasz Pythona z Cloud Functions, możesz użyć asynchronicznego
get_server_template
, aby pobrać i wczytać szablon w jednym kroku:# Initialize server-side Remote Config template = remote_config.get_server_template()
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 szablonuinit_server_template
lubget_server_template
:template = remote_config.init_server_template({ 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 asyncio.run(template.load())
Innym sposobem zainicjowania szablonu jest użycie funkcji
get_server_template
do pobrania wymaganego szablonu serwera. Możesz przekonwertować ten szablon do formatu JSON za pomocą funkcjitemplate.to_json
. Ten szablon JSON można przechowywać lokalnie. Następnie możesz zainicjować ten szablon JSON za pomocą funkcjiinit_server_template
.Po załadowaniu szablonu użyj polecenia
template.evaluate()
, aby zaimportować parametry i wartości z szablonu:# Add template parameters to config 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 Python SDK w wersji 6.7.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. 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:- Wartość logiczna:
get_bool
- Obiekt:
get_value
- Numer:
get_number
- Ciąg znaków:
get_string
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
igeneration_config
. Oto przykład sposobu uzyskiwania dostępu do wartości Remote Config:# Replace defaults with values from Remote Config. generation_config = json.loads(config.get_string('generation_config')) is_ai_enabled = config.get_bool('is_ai_enabled') model = config.get_string('model_name') # Generates a prompt comprised of the Remote Config # parameter and prepends it to the user prompt. prompt = f"{config.get_string('preamble_prompt')}{req.args.get('prompt')}"
- Wartość logiczna:
Jeśli Twój serwer działa długotrwale, w przeciwieństwie do środowiska bezserwerowego, użyj 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 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 i 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. Jeśli na przykład masz aplikację, która zawiera dialog postaci obsługiwany przez generatywną AI API (np. Google AI lub Vertex AI), możesz umieścić 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 tagami Remote Config po stronie serwera, przeczytaj artykuł Korzystanie z tagów Remote Config po stronie serwera z tagami 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.
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 Pythona 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ń.