Firebase Remote Config obsługuje konfigurację po stronie serwera za pomocą pakietu Firebase Admin Python SDK w wersji 6.7.0 lub nowszej. Ta funkcja umożliwia dynamiczne zarządzanie zachowaniem i konfiguracją aplikacji po stronie serwera za pomocą Remote Config. Obejmuje to implementacje bezserwerowe, takie jak Cloud Functions.
W przeciwieństwie do pakietów SDK klienta Firebase, które pobierają konfigurację klienta pochodzącą z Remote Config szablonu, pakiet SDK po stronie serweraRemote Config pobiera z Firebase pełny Remote Config szablon. Serwer może następnie oceniać szablon w przypadku każdego przychodzącego żądania i używać własnej logiki do wyświetlania spersonalizowanej odpowiedzi z bardzo małym opóźnieniem. Możesz używać warunków, aby 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:
- Określ parametry konfiguracji aplikacji działających na serwerze lub dostępnych za jego pośrednictwem, co umożliwia korzystanie z przypadków użycia, takich jak zdalne konfigurowanie parametrów i promptów modelu AI oraz innych integracji, aby zapewnić bezpieczeństwo kluczy interfejsu API.
- Dynamicznie dostosowuj parametry w odpowiedzi na zmiany w środowisku lub inne zmiany w aplikacji, takie jak aktualizowanie parametrów LLM i punktów końcowych modelu.
- Kontroluj koszty, zdalnie aktualizując interfejsy API wywoływane przez serwer.
- Generuj na bieżąco konfiguracje niestandardowe dla klientów, którzy uzyskują dostęp do Twojego serwera.
- Rejestrować, którzy klienci otrzymali wartość parametru, i używać tych informacji w Cloud Functions w ramach systemu weryfikacji uprawnień.
Tagowanie po stronie serwera możesz wdrażać Remote Configw Cloud RunCloud Functions lub w środowiskach serwerowych hostowanych samodzielnie.
Zanim zaczniesz
Aby utworzyć projekt Firebase, skonfigurować konto usługi i dodać pakiet Firebase Python SDK do serwera, postępuj zgodnie z instrukcjami w artykule Dodawanie pakietu Firebase Admin SDK do serwera.
Krok 1. Zainicjuj pakiet Firebase Admin Python SDK i autoryzuj żądania interfejsu API
Gdy zainicjujesz pakiet Admin SDK bez parametrów, użyje on domyślnych danych logowania aplikacji Google i odczyta opcje ze 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 aplikacji serwera
Wskaż w aplikacji zmienne, które chcesz dynamicznie aktualizować za pomocą Remote Config. Następnie zastanów się, które zmienne muszą być domyślnie ustawione w Twojej aplikacji i jakie powinny być ich wartości domyślne. Dzięki temu aplikacja będzie działać prawidłowo nawet wtedy, gdy połączenie z Remote Configserwerem backendu zostanie przerwane.
Jeśli na przykład piszesz aplikację serwera, która zarządza funkcją generatywnej AI, możesz ustawić domyślną nazwę modelu, wstęp do promptu i konfigurację generatywnej AI, np. taką:
| Nazwa parametru | Opis | Typ | Wartość domyślna |
|---|---|---|---|
model_name |
Nazwa interfejsu API modelu | Ciąg znaków | gemini-2.0-flash |
preamble_prompt
|
Prompt do dodania na początku 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 specyficzny dla serwera i używała jego wartości. Poniżej znajdziesz instrukcje konfigurowania aplikacji w języku 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 biblioteką Cloud Functions, możesz użyć asynchronicznej funkcji
get_server_template, aby zainicjować i wczytać szablon w jednym kroku:# Initialize server-side Remote Config template = await remote_config.get_server_template()Aby mieć pewność, że aplikacja będzie działać prawidłowo nawet w przypadku przerwania połączenia z serwerem backendu Remote Config, dodaj do niej wartości domyślne każdego parametru. Aby to zrobić, dodaj znak
default_configw funkcji szablonuinit_server_templatelubget_server_template:template = remote_config.init_server_template({ default_config: { '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 inicjowania szablonu jest użycie funkcji
get_server_templatedo pobrania wymaganego szablonu serwera. Ten szablon możesz przekonwertować na format 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 wczytaniu szablonu użyj
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 wartości, które chcesz:
- Jeśli używasz warunków procentowych, dodaj
randomization_id, którego 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 i nowszych.
Możesz na przykład ustawić identyfikator instalacji Firebase jako
randomization_idlub identyfikator użytkownika, aby mieć pewność, że każdy użytkownik, który kontaktuje się z Twoim serwerem, jest dodawany do odpowiedniej grupy losowej. Możesz też ustawićversionjako sygnał niestandardowy, aby kierować reklamy na określone wersje klienta, aplatformjako sygnał niestandardowy, aby kierować reklamy na platformę klienta.Więcej informacji o warunkach znajdziesz w artykule Rodzaje reguł warunków.
# Add template parameters to `config`. Evaluates the # template and returns the parameter value assigned to # the group assigned to the {randomization_id} and version. config = template.evaluate({ 'randomization_id': "2ac93c28-c459-4760-963d-a3974ec26c04", 'version': "1.0", 'platform': "Android" })- Jeśli używasz warunków procentowych, dodaj
Następnie wyodrębnij z konstanty konfiguracji potrzebne wartości parametrów. Użyj funkcji
getters, aby przekształcić wartości z Remote Config do oczekiwanego formatu. Obsługiwane są te typy:- Wartość logiczna:
get_bool - Liczba całkowita:
get_int - Pływak:
get_float - Ciąg znaków:
get_string - Źródło wartości:
get_value_source
Jeśli na przykład wdrażasz Vertex AI na serwerze i chcesz zmienić model oraz jego parametry, możesz skonfigurować parametry dla
model_nameigeneration_config. Oto przykład, jak uzyskać dostęp 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ługo, w przeciwieństwie do środowiska bezserwerowego, okresowo przeładowuj szablon, aby mieć pewność, że pobierasz z serwera Remote Config najnowszą wersję szablonu.
Krok 4. Ustaw wartości parametrów specyficznych dla serwera w Remote Config
Następnie utwórz szablon serwera Remote Config i skonfiguruj parametry oraz wartości, których chcesz używać w aplikacji.
Aby utworzyć szablon Remote Config dotyczący konkretnego serwera:
- Otwórz stronę parametrów konsoli Firebase Remote Config i w selektorze Klient/Serwer wybierz Serwer.
- Zdefiniuj Remote Config parametry o takich samych nazwach i typach danych jak parametry zdefiniowane w aplikacji i podaj wartości. Te wartości zastąpią
default_config, które ustawisz w sekcji Konfigurowanie aplikacji serwera, gdy pobierzesz i ocenisz szablon oraz przypiszesz te wartości do zmiennych. - Opcjonalnie możesz ustawić warunki, aby trwale stosować wartości do losowej próbki instancji lub zdefiniowanych przez Ciebie sygnałów niestandardowych. Więcej informacji o warunkach znajdziesz w artykule Rodzaje reguł warunków.
- 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 oparta na zdarzeniach, rozważ wdrożenie kodu za pomocą Cloud Functions. Na przykład jeśli masz aplikację, która zawiera dialogi postaci oparte na interfejsie API generatywnej AI (np. Google AI lub Vertex AI). W takim przypadku możesz umieścić logikę obsługi LLM w funkcji, którą aplikacja wywołuje na żądanie.
Aby poznać rozwiązanie, które korzysta z Cloud Functions drugiej generacji z Remote Config po stronie serwera, zapoznaj się z artykułem Używanie Remote Config po stronie serwera z Cloud Functions i Vertex AI.
Więcej informacji o wdrażaniu aplikacji za pomocą Cloud Functions znajdziesz w artykule Wprowadzenie: pisanie, testowanie i wdrażanie pierwszych funkcji.
W przeciwnym razie możesz rozważyć 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 Python w Cloud Run.
Więcej informacji o najlepszych przypadkach użycia Cloud Run i Cloud Functions znajdziesz w artykule Cloud Functions a Cloud Run: kiedy używać jednej z nich.
Cloud Functions