Zdalna konfiguracja Firebase obsługuje teraz konfigurację po stronie serwera za pomocą pakietu SDK Firebase Admin Node.js w wersji 12.1.0 lub nowszej. Ta nowa funkcja umożliwia dynamiczne zarządzanie działaniem i konfiguracją aplikacji po stronie serwera za pomocą Zdalnej konfiguracji. Obejmuje to implementacje bezserwerowe takie jak Cloud Functions.
W przeciwieństwie do pakietów SDK klienta Firebase, które pobierają konfigurację dla klienta pochodzącą z szablonu Zdalnej konfiguracji, pakiet SDK Zdalnej konfiguracji pobiera kompletny szablon Zdalnej konfiguracji z Firebase. Serwer może następnie oceniać szablon przy każdym przychodzącym żądaniu i używać własnej logiki, aby wysyłać dostosowaną odpowiedź przy bardzo krótkim czasie oczekiwania.
Zdalna konfiguracja po stronie serwera umożliwia:
- Zdefiniuj parametry konfiguracji dla aplikacji działających na serwerze lub do nich otwieranych, co pozwala na takie przypadki użycia jak zdalne konfigurowanie parametrów modelu AI i promptów oraz innych integracji, aby zapewnić bezpieczeństwo kluczy interfejsu API.
- Dynamicznie dostosowuj parametry w odpowiedzi na zmiany w Twoim środowisku lub inne zmiany w aplikacji, takie jak aktualizacja parametrów LLM i punktów końcowych modelu.
- Kontroluj koszty, zdalnie aktualizując interfejsy API wywoływane przez serwer.
- Możesz na bieżąco generować niestandardowe konfiguracje dla klientów uzyskujących dostęp do Twojego serwera.
Zdalną konfigurację po stronie serwera możesz wdrożyć w Cloud Run, Cloud Functions lub środowiskach serwerowych na własnym serwerze.
Zanim zaczniesz
Wykonaj instrukcje podane w artykule Dodawanie pakietu SDK Firebase do serwera, aby utworzyć projekt Firebase, skonfigurować konto usługi i dodać pakiet SDK Firebase Admin Node.js do serwera.
Krok 1. Zainicjuj pakiet SDK Firebase Admin Node.js i autoryzuj żądania do interfejsu API
Po zainicjowaniu pakietu Admin SDK bez parametrów pakiet SDK używa domyślnych danych logowania Google i odczytuje opcje ze zmiennej środowiskowej GOOGLE_APPLICATION_CREDENTIALS
. Aby na przykład zainicjować pakiet SDK i dodać Zdalną konfigurację:
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
Zidentyfikuj w aplikacji zmienne, które chcesz dynamicznie aktualizować za pomocą Zdalnej konfiguracji. Następnie zastanów się, które zmienne muszą być ustawione w aplikacji domyślnie i jakie powinny być ich wartości domyślne. Zapewnia to prawidłowe działanie aplikacji nawet w przypadku przerwania połączenia z serwerem backendu Zdalnej konfiguracji.
Jeśli na przykład tworzysz aplikację serwerową, która zarządza funkcją generatywnej AI, możesz ustawić domyślną nazwę modelu, wprowadzenie do promptu i konfigurację generatywnej AI, podobne do tych:
Nazwa parametru | Opis | Typ | Wartość domyślna |
---|---|---|---|
model_name |
Nazwa interfejsu API modelu | Ciąg znaków | gemini-1.5-pro |
preamble_prompt
|
Pojawia się prośba o dodanie 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, które należy wysłać do modelu, | JSON | {"stopSequences":
["I hope this
helps"],
"temperature":
0.7,
"maxOutputTokens":
512, "topP": 0.1,
"topK": 20} |
Krok 3. Skonfiguruj aplikację serwerową
Po określeniu parametrów, których chcesz używać ze Zdalną konfiguracją, skonfiguruj aplikację tak, aby ustawiała wartości domyślne, pobierała odpowiedni dla serwera szablon Zdalnej konfiguracji i używała jego wartości. Poniżej znajdziesz instrukcje konfigurowania aplikacji Node.js.
uzyskać dostęp do szablonu i go wczytać.
// 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 pobierania i wczytywania szablonu 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 po przerwaniu połączenia z serwerem backendu Zdalnej konfiguracji, dodaj wartości domyślne do każdego parametru 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 funkcji
template.evaluate()
, aby zaimportować z niego parametry i wartości:// Add template parameters to config const config = template.evaluate();
Opcjonalnie, jeśli w szablonie Zdalnej konfiguracji ustawisz warunki procentowe, zdefiniuj i podaj parametr
randomizationId
, którego chcesz użyć do oceny warunków w funkcjitemplate.evaluate()
.Możesz na przykład ustawić identyfikator instalacji Firebase jako
randomizationId
, czyli identyfikator użytkownika, aby mieć pewność, że każdy użytkownik kontaktujący się z Twoim serwerem zostanie dodany do odpowiedniej losowej grupy. Poniższy przykład to podstawowy przykład, ale możesz skonfigurować serwer tak, aby generował różnerandomizationIds
dla różnych żądań klienta, aby mieć pewność, że użytkownicy otrzymają spójne wartości ze Zdalnej konfiguracji na podstawie ich członkostwa w grupach warunków w procentach.Więcej informacji o warunkach procentowych znajdziesz w sekcji Użytkownik w losowych procentach.
// Set the randomizationId const randomizationId = "2ac93c28-c459-4760-963d-a3974ec26c04" // Add template parameters to `config`. Evaluates the // template and returns the parameter value assigned to // the group assigned to the {randomizationId}. const config = template.evaluate({ randomizationId });
Następnie wyodrębnij potrzebne wartości ze stałej konfiguracji. Użyj
getters
, aby rzutować wartości ze Zdalnej konfiguracji w oczekiwany format. Obsługiwane są następujące typy:- Wartość logiczna:
getBoolean
- Obiekt:
getValue
- Numer:
getNumber
- Ciąg znaków:
getString
Jeśli na przykład implementujesz Vertex AI na swoim serwerze i chcesz zmienić model oraz parametry modelu, możesz skonfigurować parametry
model_name
igenerationConfig
. Oto przykład, jak można uzyskać dostęp do wartości Zdalnej konfiguracji:// 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 długo, a nie bezserwerowo, używaj narzędzia
setInterval
do okresowego ponownego ładowania szablonu. Dzięki temu będziesz okresowo pobierać najbardziej aktualny szablon z serwera Zdalnej konfiguracji.
Krok 4. Ustaw wartości parametrów specyficznych dla serwera w Zdalnej konfiguracji
Następnie utwórz szablon Zdalnej konfiguracji serwera i skonfiguruj parametry oraz wartości do użycia w aplikacji.
Aby utworzyć specyficzny dla serwera szablon Zdalnej konfiguracji:
- Otwórz stronę parametrów Zdalnej konfiguracji konsoli Firebase i w selektorze Klient/serwer wybierz Serwer.
- Zdefiniuj parametry Zdalnej konfiguracji o tych samych nazwach i typach danych co parametry zdefiniowane w aplikacji i podaj ich wartości. Te wartości zastąpią
defaultConfig
podany w sekcji Konfigurowanie aplikacji serwera podczas pobierania i oceny szablonu oraz przypisywania tych wartości do zmiennych. - Opcjonalnie możesz ustawić warunki procentowe, aby trwale zastosować wartość do losowej próbki instancji. Więcej informacji o warunkach procentowych znajdziesz w sekcji Użytkownik w losowych procentach.
- Po dodaniu parametrów kliknij Opublikuj zmiany.
- Sprawdź zmiany i ponownie kliknij Opublikuj zmiany.
Krok 5. Wdróż jako funkcję w Cloud Functions lub użyj Cloud Run
Jeśli Twoja aplikacja serwerowa jest lekka i oparta na zdarzeniach, rozważ wdrożenie kodu jako funkcji w Cloud Functions. Załóżmy na przykład, że masz aplikację, która zawiera dialogi postaci z interfejsów API generatywnej AI, takie jak Google AI czy Vertex AI. W takim przypadku można hostować logikę obsługi LLM w funkcji w Cloud Functions, która jest wywoływana przez aplikację na żądanie. Z artykułu Pierwsze kroki: pisanie, testowanie i wdrażanie aplikacji dowiesz się, jak wdrożyć aplikację jako funkcję w Cloud Functions.
Jeśli Twoja aplikacja jest przeznaczona do długiego działania (np. jest aplikacją internetową z zasobami), zastanów się nad 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 przypadkach użycia Cloud Run i Cloud Functions znajdziesz w tym artykule.