Firebase Remote Config поддерживает настройку на стороне сервера с помощью Firebase Admin Node.js SDK версии 12.1.0 и выше. Эта возможность позволяет динамически управлять поведением и конфигурацией серверных приложений с помощью Remote Config . Это включает в себя бессерверные реализации, такие как Cloud Functions .
В отличие от клиентских SDK Firebase, которые извлекают клиентскую конфигурацию из шаблона Remote Config , серверный SDK Remote Config загружает полный шаблон Remote Config из Firebase. Ваш сервер может затем обрабатывать шаблон при каждом входящем запросе и использовать собственную логику для предоставления персонализированного ответа с очень низкой задержкой. Вы можете использовать условия для управления и настройки ответов на основе случайных процентных значений и клиентских атрибутов, заданных в пользовательских сигналах .
С помощью Remote Config стороне сервера вы можете:
- Определите параметры конфигурации для приложений, работающих на вашем сервере или доступных через него, что позволит использовать их в таких случаях, как удаленная настройка параметров и подсказок модели ИИ, а также другие интеграции, чтобы гарантировать безопасность ваших ключей API.
- Динамически корректируйте параметры в ответ на изменения в вашей среде или другие изменения в приложении, например, обновляя параметры LLM и конечные точки модели.
- Контролируйте расходы, удаленно обновляя API, вызываемые вашим сервером.
- Создавайте индивидуальные конфигурации «на лету» для клиентов, которые получают доступ к вашему серверу.
- Запишите, какие клиенты получили значение параметра, и используйте его в Cloud Functions как часть системы проверки прав.
Вы можете развернуть Remote Config на стороне сервера в Cloud Run, Cloud Functions или в средах собственных серверов.
Прежде чем начать
Следуйте инструкциям в разделе Добавление Firebase Admin SDK на свой сервер , чтобы создать проект Firebase, настроить учетную запись службы и добавить Firebase Admin Node.js SDK на свой сервер.
Шаг 1: Инициализируйте Firebase Admin Node.js SDK и авторизуйте запросы API
При инициализации Admin SDK без параметров SDK использует учётные данные Google Application Default и считывает параметры из переменной среды GOOGLE_APPLICATION_CREDENTIALS
. Чтобы инициализировать SDK и добавить Remote Config :
import { initializeApp } from "firebase-admin/app";
import { getRemoteConfig } from "firebase-admin/remote-config";
// Initialize Firebase
const firebaseApp = initializeApp();
Шаг 2: Определите значения параметров по умолчанию для вашего серверного приложения.
Определите переменные в вашем приложении, которые вы хотите динамически обновлять с помощью Remote Config . Затем определите, какие переменные должны быть установлены по умолчанию в вашем приложении и какими должны быть их значения по умолчанию. Это гарантирует успешную работу приложения даже при прерывании подключения к серверу Remote Config .
Например, если вы пишете серверное приложение, которое управляет функцией генеративного ИИ, вы можете задать имя модели по умолчанию, преамбулу приглашения и конфигурацию генеративного ИИ, например:
Имя параметра | Описание | Тип | Значение по умолчанию |
---|---|---|---|
model_name | Имя API модели | Нить | gemini-2.0-flash |
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! |
generation_config | Параметры для отправки в модель | JSON | {"stopSequences": ["I hope this helps"], "temperature": 0.7, "maxOutputTokens": 512, "topP": 0.1, "topK": 20} |
Шаг 3: Настройте серверное приложение
Определив параметры, которые вы хотите использовать с Remote Config , настройте приложение, задав значения по умолчанию, загрузите шаблон Remote Config для конкретного сервера и используйте его значения. Ниже описана настройка приложения Node.js.
Получите доступ к шаблону и загрузите его.
// Initialize server-side Remote Config const rc = getRemoteConfig(firebaseApp); const template = rc.initServerTemplate(); // Load Remote Config await template.load();
Если вы используете Node.js в Cloud Functions , вы можете использовать асинхронный
getServerTemplate
для инициализации и загрузки шаблона за один шаг:// Initialize server-side Remote Config const rc = getRemoteConfig(firebaseApp); const template = await rc.getServerTemplate();
Чтобы обеспечить успешную работу приложения даже при прерывании подключения к серверу Remote Config , добавьте значения по умолчанию для каждого параметра приложения. Для этого добавьте
defaultConfig
в шаблонную функциюinitServerTemplate
илиgetServerTemplate
: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()
После загрузки шаблона используйте
template.evaluate()
для импорта параметров и значений из шаблона:// Add template parameters to config const config = template.evaluate();
При желании, если вы задаете условия в шаблоне Remote Config , определите и укажите нужные вам значения:
- При использовании процентных условий добавьте
randomizationId
, который вы хотите использовать для оценки вашего условия(-ий) в функцииtemplate.evaluate()
. - При использовании пользовательских сигналов определите атрибуты и их значения. Пользовательские сигналы доступны в Firebase Admin Node.js SDK 12.5.0 и выше.
Например, вы можете задать идентификатор установки Firebase как
randomizationId
или идентификатор пользователя, чтобы гарантировать, что каждый пользователь, который обращается к вашему серверу, добавляется в правильную рандомизированную группу,version
как настраиваемый сигнал для нацеливания на определенные версии клиентов иplatform
как настраиваемый сигнал для нацеливания на клиентскую платформу.Более подробную информацию об условиях см. в разделе Типы правил условий .
// 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" });
- При использовании процентных условий добавьте
Затем извлеките необходимые значения параметров из константы конфигурации. Используйте
getters
для преобразования значений из Remote Config в ожидаемый формат. Поддерживаются следующие типы:- Логическое значение:
getBoolean
- Объект:
getValue
- Номер:
getNumber
- Строка:
getString
Например, если вы внедряете Vertex AI на своём сервере и хотите изменить модель и её параметры, вам может потребоваться настроить параметры
model_name
иgeneration_config
. Вот пример того, как можно получить доступ к значениям 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}`;
- Логическое значение:
Если ваш сервер работает долго, а не является бессерверной средой, используйте
setInterval
для периодической перезагрузки шаблона, чтобы убедиться, что вы извлекаете самый актуальный шаблон с сервера Remote Config .
Шаг 4: Задайте значения параметров, специфичные для сервера, в Remote Config
Затем создайте шаблон Remote Config сервера и настройте параметры и значения для использования в вашем приложении.
Чтобы создать шаблон Remote Config для конкретного сервера:
- Откройте страницу параметров Remote Config консоли Firebase и в селекторе Клиент/Сервер выберите Сервер .
- Определите параметры Remote Config с теми же именами и типами данных, что и параметры, заданные в вашем приложении, и укажите их значения. Эти значения переопределят
defaultConfig
, заданный вами в разделе «Настройка серверного приложения», при загрузке и оценке шаблона и назначении этих значений вашим переменным. - При желании вы можете задать условия для постоянного применения значений к случайной выборке экземпляров или определяемых вами пользовательских сигналов. Подробнее об условиях см. в разделе Типы правил условий .
- Закончив добавление параметров, нажмите Опубликовать изменения .
- Проверьте изменения и снова нажмите «Опубликовать изменения» .
Шаг 5: Развертывание с помощью Cloud Functions или Cloud Run
Если ваше серверное приложение лёгкое и событийно-ориентированное, вам следует рассмотреть возможность развёртывания кода с помощью Cloud Functions . Например, у вас есть приложение, которое включает диалоги персонажей, реализованные на основе API генеративного ИИ (например, Google AI или Vertex AI ). В этом случае вы можете разместить логику обслуживания LLM в функции, которую ваше приложение вызывает по запросу.
Чтобы использовать решение, использующее Cloud Functions 2-го поколения с Remote Config на стороне сервера, см . раздел Использование Remote Config стороне сервера с Cloud Functions и Vertex AI .
Дополнительную информацию о развертывании приложения с помощью Cloud Functions см. в статье Начало работы: написание, тестирование и развертывание первых функций .
Попробуйте пример вызываемой функции с Remote Config и App Check на стороне сервера в разделе Вызов API Vertex AI Gemini с Remote Config и App Check .
Если ваше приложение рассчитано на длительную работу (например, веб-приложение с ресурсами), вы можете рассмотреть Cloud Run . Чтобы развернуть серверное приложение с помощью Cloud Run, следуйте руководству Quickstart: Deploy a Node.js service to Cloud Run .
Дополнительную информацию о лучших вариантах использования Cloud Run и Cloud Functions см. в статье Cloud Functions против Cloud Run: когда использовать один, а когда другой .