Firebase Remote Config поддерживает настройку на стороне сервера с использованием Firebase Admin Python SDK версии 6.7.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 Python SDK на ваш сервер.
Шаг 1: Инициализируйте Python SDK для администрирования Firebase и авторизуйте запросы к API.
При инициализации Admin SDK без параметров, SDK использует учетные данные приложения Google по умолчанию и считывает параметры из переменной среды GOOGLE_APPLICATION_CREDENTIALS . Чтобы инициализировать SDK и добавить Remote Config :
import firebase_admin
import asyncio
import json
firebase_admin.initialize_app()
Шаг 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 для конкретного сервера и использовать его значения. Следующие шаги описывают, как настроить ваше приложение Python.
Получите доступ к шаблону и загрузите его.
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())В качестве альтернативы, если вы используете Python с Cloud Functions , вы можете использовать асинхронную
get_server_templateдля инициализации и загрузки шаблона за один шаг:# Initialize server-side Remote Config template = await remote_config.get_server_template()Чтобы гарантировать успешную работу вашего приложения даже при прерывании соединения с сервером Remote Config , добавьте значения по умолчанию для каждого параметра в ваше приложение. Для этого добавьте
default_configвнутрь функции шаблонаinit_server_templateилиget_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())Ещё один способ инициализации шаблона — использование функции
get_server_templateдля получения необходимого шаблона сервера. Этот шаблон можно преобразовать в формат JSON с помощью функцииtemplate.to_json. JSON-шаблон можно сохранить локально. Затем его можно инициализировать с помощью функцииinit_server_template.После загрузки шаблона используйте
template.evaluate()для импорта параметров и значений из шаблона:# Add template parameters to config config = template.evaluate()При желании, если вы задаете условия в шаблоне Remote Config , определите и укажите необходимые значения:
- При использовании условий, выраженных в процентах , добавьте идентификатор
randomization_id), который вы хотите использовать для оценки ваших условий, в функциюtemplate.evaluate(). - При использовании пользовательских сигналов определите атрибуты и их значения. Пользовательские сигналы доступны в Firebase Admin Python SDK версии 6.7.0 и выше.
Например, вы можете установить идентификатор установки Firebase в качестве
randomization_idили идентификатор пользователя, чтобы гарантировать, что каждый пользователь, обращающийся к вашему серверу, будет добавлен в соответствующую случайную группу,versionв качестве пользовательского сигнала для выбора конкретных версий клиента иplatformв качестве пользовательского сигнала для выбора платформы клиента.Для получения дополнительной информации об условиях см. раздел «Типы правил условий» .
# 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" })- При использовании условий, выраженных в процентах , добавьте идентификатор
Далее извлеките необходимые значения параметров из константы конфигурации. Используйте
gettersдля преобразования значений из Remote Config в ожидаемый формат. Поддерживаются следующие типы:- Логическое значение:
get_bool - Целое число:
get_int - Float:
get_float - Строка:
get_string - Источник значения:
get_value_source
Например, если вы внедряете Vertex AI на своем сервере и хотите изменить модель и параметры модели, вам может потребоваться настроить параметры для
model_nameиgeneration_config. Вот пример того, как можно получить доступ к значениям 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')}"- Логическое значение:
Если ваш сервер работает длительное время, в отличие от бессерверной среды, периодически перезагружайте шаблон, чтобы убедиться, что вы получаете самую актуальную версию шаблона с сервера Remote Config .
Шаг 4: Задайте значения параметров, специфичных для сервера, в разделе Remote Config
Далее создайте шаблон Remote Config сервера и настройте параметры и значения для использования в вашем приложении.
Для создания шаблона Remote Config , специфичного для конкретного сервера:
- Откройте страницу параметров Remote Config в консоли Firebase и в селекторе «Клиент/Сервер» выберите «Сервер» .
- Определите параметры Remote Config с теми же именами и типами данных, что и параметры, определенные в вашем приложении, и укажите значения. Эти значения переопределят значение
default_configустановленное вами в разделе «Настройка серверного приложения», при получении и оценке шаблона и присвоении этих значений вашим переменным. - При желании можно задать условия для постоянного применения значений к случайной выборке экземпляров или пользовательским сигналам, которые вы определяете. Дополнительную информацию об условиях см. в разделе «Типы правил условий» .
- После добавления всех параметров нажмите кнопку «Опубликовать изменения» .
- Просмотрите изменения и снова нажмите «Опубликовать изменения» .
Шаг 5: Развертывание с помощью Cloud Functions или Cloud Run
Если ваше серверное приложение является легковесным и основано на событиях, вам следует рассмотреть возможность развертывания кода с использованием Cloud Functions . Например, если у вас есть приложение, включающее диалоги персонажей, основанные на API генеративного ИИ (например, Google AI или Vertex AI ). В этом случае вы можете разместить логику обслуживания LLM в функции, которую ваше приложение будет вызывать по запросу.
Для решения задачи, использующей Cloud Functions второго поколения с Remote Config на стороне сервера, см. раздел «Использование Remote Config стороне сервера с Cloud Functions и Vertex AI» .
Чтобы узнать больше о развертывании вашего приложения с помощью Cloud Functions , см. раздел «Начало работы: написание, тестирование и развертывание ваших первых функций» .
В противном случае, вы можете рассмотреть Cloud Run . Чтобы развернуть серверное приложение с помощью Cloud Run, следуйте инструкциям в руководстве «Быстрый старт: Развертывание службы Python в Cloud Run» .
Для получения дополнительной информации о наилучших вариантах использования Cloud Run и Cloud Functions см. статью Cloud Functions против Cloud Run: когда использовать один из них вместо другого» .