При вызове Gemini API из вашего приложения с использованием Vertex AI in Firebase SDK ваш запрос содержит ряд параметров, которые управляют генеративными ответами ИИ. Обычно они включают название модели, конфигурацию генерации модели (максимальное количество жетонов, температуру и т. д.), настройки безопасности, системные инструкции и подсказки.
В большинстве случаев вы захотите изменить их по требованию или по мере необходимости в ряде сценариев:
- Обновите свою генеративную модель искусственного интеллекта, не выпуская новое приложение. Вы можете перейти на более новые стабильные версии моделей до того, как более ранние версии будут выведены из эксплуатации, перейти на более дешевые или более производительные модели в зависимости от потребностей и характеристик ваших пользователей или условно развернуть новейшие и лучшие модели для определенных сегментов пользователей (например, бета-тестеров). .
- Укажите местоположение доступа к модели, чтобы она была ближе к вашим пользователям.
- A/B-тестирование различных системных инструкций и подсказок, а затем постепенно доводите до пользователей выигрышные результаты эксперимента.
- Используйте флаги функций, чтобы быстро раскрыть или скрыть генеративные функции ИИ в вашем приложении.
Firebase Remote Config делает все это и многое другое, позволяя вам обновлять значения параметров по мере необходимости и при определенных условиях для экземпляров приложения, которые соответствуют характеристикам, установленным вами в консоли Firebase , без выпуска новой версии вашего приложения.
В этом руководстве по решению представлены конкретные рекомендуемые варианты использования и описано, как добавить Remote Config в ваше генеративное приложение ИИ.
Зачем использовать Firebase Remote Config со своим приложением?
Firebase Remote Config позволяет вам динамически настраивать поведение вашего приложения, не требуя его обновлений. Это особенно полезно для приложений, использующих генеративный искусственный интеллект, где решающее значение имеют быстрая итерация и точная настройка.
Основные варианты использования Remote Config с генеративными приложениями искусственного интеллекта
Мы рекомендуем использовать Remote Config с Vertex AI in Firebase для следующих важных случаев:
- Обновите модель до последней версии без обновления приложения. Используйте параметры Remote Config , чтобы изменить название модели по мере необходимости, чтобы вы могли выполнить обновление до последней версии предпочитаемой вами модели Gemini , как только она станет доступна.
- Обновите системные инструкции и параметры безопасности без обновления приложения. Сохраняйте системные инструкции и параметры безопасности внутри параметров Remote Config , чтобы их можно было изменить по требованию, если вы обнаружите проблемы после развертывания.
- Снизьте риски и обеспечьте безопасность ИИ. Используйте развертывания Remote Config , чтобы безопасно и постепенно выпускать генеративные изменения ИИ для пользователей iOS и Android.
Расширенные и рекомендуемые варианты использования Remote Config с генеративными приложениями искусственного интеллекта.
После оснащения вашего приложения Remote Config и Google Analytics вы можете изучить расширенные варианты использования:
- Установить местоположение на основе местоположения клиента. Используйте условия Remote Config , чтобы установить местоположение модели на основе обнаруженного местоположения клиента.
- Экспериментируйте с разными моделями : быстро тестируйте и переключайтесь между различными моделями генеративного ИИ или даже развертывайте разные модели для разных сегментов пользователей, чтобы найти наиболее подходящую для вашего конкретного случая использования.
- Оптимизация производительности модели : точная настройка параметров модели, таких как системное приглашение, максимальное количество выходных токенов, температура и другие параметры.
Используйте различные системные инструкции, подсказки и конфигурацию модели на основе атрибутов клиента. При использовании Remote Config с Google Analytics вы можете создавать условия на основе атрибутов клиента или настраиваемой аудитории и устанавливать различные параметры на основе этих атрибутов.
Например, если вы используете генеративный искусственный интеллект для предоставления технической поддержки в своем приложении, вам может потребоваться установить системные инструкции, специфичные для платформы приложения, чтобы гарантировать предоставление точных инструкций пользователям Android, iOS и веб-платформы.
Персонализация работы для каждого пользователя. Используйте персонализацию Remote Config , чтобы автоматически определять оптимальные настройки генеративного ИИ для каждого пользователя.
Контролируйте затраты: удаленно настраивайте, какие генеративные модели ИИ вызываются, как часто они используются, а также динамически настраивайте максимальные значения выходных токенов в зависимости от аудитории пользователей, чтобы сократить ненужные затраты.
Оптимизируйте работу приложений и результаты. Используйте A/B Testing с Remote Config с вашими приложениями iOS, Android и Flutter, чтобы протестировать изменения параметров генеративного ИИ в различных сегментах пользователей и увидеть, как они влияют на ключевые показатели, такие как удержание и доход.
Оснастив свое генеративное приложение ИИ с помощью Firebase Remote Config , вы сможете создавать гибкие, безопасные и экономичные приложения на базе ИИ, одновременно создавая восхитительные впечатления для своих пользователей.
Добавьте Firebase Remote Config в свое приложение.
В этом руководстве по решению вы будете использовать Firebase Remote Config для динамического обновления параметров в вашем приложении Android, которое использует Vertex AI in Firebase SDK. Вы узнаете, как:
- Получите и активируйте такие параметры, как названия моделей и системные инструкции, из Firebase Remote Config .
- Обновите вызовы Gemini API , чтобы использовать динамически извлекаемые параметры, что позволит вам переключаться между различными моделями или изменять системные инструкции без обновления приложения.
- Управляйте параметрами удаленно, корректируя поведение и возможности модели по мере необходимости.
Предварительные условия
В этом руководстве предполагается, что вы знакомы с использованием Android Studio для разработки приложений для платформ Android. Прежде чем начать, убедитесь, что вы выполнили следующее:
Завершите руководство по началу работы с Vertex AI in Firebase SDK . Убедитесь, что вы выполнили все следующее:
- Настройте новый или существующий проект Firebase, включая использование тарифного плана Blaze и включение необходимых API.
- Подключите свое приложение к Firebase, включая регистрацию вашего приложения и добавление конфигурации Firebase в ваше приложение.
- Добавьте SDK и инициализируйте службу Vertex AI и генеративную модель в своем приложении.
Включите Google Analytics в своем проекте и добавьте его SDK в свое приложение (необходимо для условного таргетинга, например для настройки местоположения службы и модели на основе местоположения клиентского устройства).
Шаг 1. Установите значения параметров в консоли Firebase
Создайте клиентский шаблон Remote Config и настройте параметры и значения для извлечения и использования в приложении.
- Откройте проект Firebase в консоли Firebase , в меню навигации разверните «Выполнить» и выберите Remote Config .
- Убедитесь, что в списке «Клиент/сервер» в верхней части страницы Remote Config выбран «Клиент» .
- Если вы впервые используете шаблоны клиентов Remote Config , нажмите «Создать конфигурацию» . Появится панель «Создайте свой первый параметр» .
- Если вы не впервые используете шаблоны Remote Config , нажмите «Добавить параметр» .
Определите следующие параметры Remote Config :
Имя параметра Описание Тип Значение по умолчанию model_name
Название модели. Актуальные списки названий моделей, которые можно использовать в коде, см. в разделе Доступные имена моделей . Нить gemini-1.5-flash
system_instructions
Системные инструкции подобны «преамбуле», которую вы добавляете до того, как модель будет подвергнута дальнейшим инструкциям от конечного пользователя, чтобы повлиять на поведение модели в зависимости от конкретных потребностей и вариантов использования. Нить You are a helpful assistant who knows everything there is to know about Firebase!
prompt
Запрос по умолчанию для использования с функцией генеративного ИИ. Нить I am a developer who wants to know more about Firebase!
vertex_location
При желании можно указать местоположение для запуска службы Vertex AI и доступа к модели. Вы можете установить условия для настройки этой опции на основе местоположения клиента, определенного Google Analytics . Нить us-central1
Завершив добавление параметров, нажмите «Опубликовать изменения» . Если это не новый шаблон Remote Config , просмотрите изменения и снова нажмите «Опубликовать изменения» .
Шаг 2. Добавьте и инициализируйте SDK Remote Config в своем приложении.
Добавьте зависимости Remote Config и настройте Remote Config в своем приложении.
Добавьте зависимость Remote Config в файл Gradle вашего модуля (на уровне приложения) (обычно
app/build.gradle.kts
илиapp/build.gradle
):dependencies { implementation(platform("com.google.firebase:firebase-bom:33.6.0")) implementation("com.google.firebase:firebase-vertexai") implementation("com.google.firebase:firebase-config") // ... other dependencies }
Добавьте Remote Config в основную логику приложения. Здесь вы инициализируете Remote Config и добавите минимальный интервал выборки:
Kotlin+KTX
val remoteConfig: FirebaseRemoteConfig = Firebase.remoteConfig val configSettings = remoteConfigSettings { minimumFetchIntervalInSeconds = 3600 } remoteConfig.setConfigSettingsAsync(configSettings)
Java
FirebaseRemoteConfig mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance(); FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder() .setMinimumFetchIntervalInSeconds(3600) .build(); mFirebaseRemoteConfig.setConfigSettingsAsync(configSettings);
В этом примере интервал выборки по умолчанию составляет 3600 секунд, но мы рекомендуем вам установить относительно небольшой минимальный интервал выборки внутри вашего кода во время разработки.
Шаг 3. Установите значения параметров в приложении.
Вам следует установить значения параметров по умолчанию в приложении в объекте Remote Config . Это гарантирует, что ваше приложение будет вести себя должным образом, даже если оно не сможет получить значения из службы Remote Config .
- В консоли Firebase откройте Remote Config .
- На вкладке «Параметры » откройте « Меню » и выберите «Загрузить значения по умолчанию» .
- При появлении запроса включите .xml для Android , затем нажмите « Загрузить файл» .
- Сохраните файл в каталоге ресурсов XML вашего приложения.
Обновите свой основной файл активности, добавив значения по умолчанию после добавленных ранее
configSettings
:Kotlin+KTX
// Set default values. remoteConfig.setDefaultsAsync(R.xml.remote_config_defaults)
Java
// Set default values. mFirebaseRemoteConfig.setDefaultsAsync(R.xml.remote_config_defaults);
Шаг 4. Получите и активируйте значения.
После установки значений по умолчанию добавьте следующее для получения и активации значений:
Kotlin+KTX
// Fetch and activate Remote Config values
remoteConfig.fetchAndActivate()
.addOnCompleteListener(this) { task ->
if (task.isSuccessful) {
val updated = task.result
Log.d(TAG, "Remote Config values fetched and activated: $updated")
} else {
Log.e(TAG, "Error fetching Remote Config", task.exception)
}
Java
// Fetch and activate Remote Config values
mFirebaseRemoteConfig.fetchAndActivate()
.addOnCompleteListener(this, new OnCompleteListener<Boolean>() {
@Override
public void onComplete(@NonNull Task<Boolean> task) {
if (task.isSuccessful()) {
boolean updated = task.getResult();
Log.d(TAG, "Config params updated: " + updated);
} else {
Log.e(TAG, "Error fetching Remote Config", task.exception)
}
}
});
Шаг 5. Добавьте прослушиватель Remote Config в реальном времени.
Добавьте в свое приложение прослушиватель Remote Config в реальном времени, чтобы гарантировать, что изменения, вносимые в шаблон Remote Config будут распространены на клиент сразу после их обновления.
Следующий код обновляет объект Remote Config при каждом изменении значения параметра. При желании вы также можете настроить действие внутри активации addOnCompleteListener
:
Kotlin+KTX
// Add a real-time Remote Config listener
remoteConfig.addOnConfigUpdateListener(object : ConfigUpdateListener {
override fun onUpdate(configUpdate : ConfigUpdate) {
Log.d(ContentValues.TAG, "Updated keys: " + configUpdate.updatedKeys);
remoteConfig.activate().addOnCompleteListener {
// Optionally, add an action to perform on update here.
}
}
override fun onError(error : FirebaseRemoteConfigException) {
Log.w(ContentValues.TAG, "Config update error with code: " + error.code, error)
}
}
Java
// Add a real-time Remote Config listener
remoteConfig.addOnConfigUpdateListener(new ConfigUpdateListener() {
@Override
public void onUpdate(ConfigUpdate configUpdate) {
Log.d(ContentValues.TAG, "Updated keys: " + configUpdate.getUpdatedKeys());
remoteConfig.activate().addOnCompleteListener(new OnCompleteListener<Boolean>() {
@Override
public void onComplete(@NonNull Task<Boolean> task) {
// Optionally, add an action to perform on update here.
}
});
}
@Override
public void onError(FirebaseRemoteConfigException error) {
Log.w(ContentValues.TAG, "Config update error with code: " + error.getCode(), error);
}
});
Шаг 6. Присвойте значения Remote Config переменным Vertex AI
Теперь, когда Remote Config полностью настроен, обновите свой код, чтобы заменить жестко закодированные значения значениями, полученными из Remote Config .
Замените жестко закодированные значения местоположения, названия модели, системных инструкций и приглашения пользователя значениями, полученными из Remote Config .
Kotlin+KTX
// Initialize FirebaseVertexAI instance
// Optionally specify a location in which to run the service and access the model
val vertexAI = Firebase.vertexAI(location = remoteConfig.getString("vertex_location"))
// Initialize the Vertex AI service and the generative model
// Specify a model that supports system instructions, like a Gemini 1.5 model
val generativeModel = Firebase.vertexAI.generativeModel(
modelName = remoteConfig.getString("model_name"),
systemInstruction = content { text(remoteConfig.getString("system_instructions")) }
)
// To generate text output, call generateContent with the text input
val response = generativeModel.generateContent(remoteConfig.getString("prompt"))
print(response.text)
Java
// Initialize FirebaseVertexAI instance
// Optionally specify a location in which to run the service and access the model
FirebaseVertexAI vertexAI = FirebaseVertexAI.getInstance(remoteConfig.getString("vertex_location"));
// Initialize the Vertex AI service and the generative model
// Specify a model that supports system instructions, like a Gemini 1.5 model
GenerativeModel gm = FirebaseVertexAI.getInstance().generativeModel(
/* modelName */ remoteConfig.getString("model_name"),
/* generationConfig (optional) */ null,
/* safetySettings (optional) */ null,
/* requestOptions (optional) */ new RequestOptions(),
/* tools (optional) */ null,
/* toolsConfig (optional) */ null,
/* systemInstruction (optional) */ new Content.Builder().addText(remoteConfig.getString("system_instructions")).build()
);
GenerativeModelFutures model = GenerativeModelFutures.from(gm);
// Provide a prompt that contains text
Content userPrompt = new Content.Builder()
addText(remoteConfig.getString("prompt"))
build();
// To generate text output, call generateContent with the text input
ListenableFuture<GenerateContentResponse> response = model.generateContent(userPrompt);
Futures.addCallback(response, new FutureCallback<GenerateContentResponse>() {
@Override
public void onSuccess(GenerateContentResponse result) {
String resultText = result.getText();
System.out.println(resultText);
}
@Override
public void onFailure(Throwable t) {
t.printStackTrace();
}
}, executor);
Шаг 7. Запустите приложение.
Создайте и запустите приложение и убедитесь, что оно работает. Внесите изменения в свою конфигурацию на странице Remote Config в консоли Firebase, опубликуйте изменения и проверьте результат.
Следующие шаги
- Узнайте больше об Remote Config .
- Проверьте различные настройки модели с помощью Remote Config и A/B-тестирования .
- Постепенно выпускайте изменения параметров модели с помощью развертываний Remote Config .
- Используйте персонализацию Remote Config , чтобы использовать машинное обучение для определения оптимальных настроек для отдельных пользователей.