При вызове API Gemini из вашего приложения с использованием Firebase AI Logic SDK ваш запрос содержит ряд параметров, управляющих ответами генеративного ИИ. Обычно они включают название модели, конфигурацию генерации модели (максимальное количество токенов, температуру и т. д.), настройки безопасности, системные инструкции и данные подсказок.
В большинстве случаев вам придется изменять эти параметры по требованию или по мере необходимости в ряде сценариев:
- Обновите свою генеративную модель ИИ, не выпуская новое приложение. Вы можете перейти на более новые, стабильные версии модели до того, как предыдущие версии будут сняты с эксплуатации, перейти на более дешёвые или более производительные модели в зависимости от потребностей и характеристик ваших пользователей или при необходимости развернуть новейшие и лучшие модели для определённых сегментов пользователей (например, бета-тестеров).
- Укажите место доступа к модели, чтобы оно было ближе к вашим пользователям.
- Проводите A/B-тестирование различных системных инструкций и подсказок, а затем постепенно внедряйте победные экспериментальные значения среди своих пользователей.
- Используйте флаги функций, чтобы быстро отображать или скрывать функции генеративного ИИ в вашем приложении.
Firebase Remote Config делает все это и даже больше, позволяя вам обновлять значения параметров по мере необходимости и в зависимости от условий для экземпляров приложения, которые соответствуют характеристикам, заданным вами в консоли Firebase , без выпуска новой версии вашего приложения.
В этом руководстве по решению приведены конкретные рекомендуемые варианты использования и описано, как добавить Remote Config в ваше приложение генеративного ИИ.
Зачем использовать Firebase Remote Config в вашем приложении?
Firebase Remote Config позволяет динамически корректировать поведение приложения без необходимости его обновления. Это особенно полезно для приложений, использующих генеративный ИИ, где быстрое обновление и тонкая настройка имеют решающее значение.
Основные варианты использования Remote Config с приложениями генеративного ИИ
Мы рекомендуем использовать Remote Config с Firebase AI Logic в следующих основных случаях использования:
Обновление до последней версии модели без обновления приложения : используйте параметры 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 в своих мобильных приложениях и играх, чтобы протестировать изменения в параметрах генеративного ИИ в разных сегментах пользователей и увидеть, как они влияют на ключевые показатели, такие как удержание и доход.
Оснастив свое приложение генеративного ИИ с помощью Firebase Remote Config , вы сможете создавать гибкие, безопасные и экономичные приложения на базе ИИ, одновременно создавая прекрасные возможности для своих пользователей.
Добавьте Firebase Remote Config в свое приложение
В этом руководстве по решению вы научитесь использовать Firebase Remote Config для динамического обновления параметров в вашем Android-приложении, использующем Firebase AI Logic SDK. Вы узнаете, как:
- Извлекайте и активируйте параметры, такие как названия моделей и системные инструкции, из Firebase Remote Config .
- Обновите вызовы API Gemini, чтобы использовать динамически извлекаемые параметры, что позволит вам переключаться между различными моделями или изменять системные инструкции без обновления приложения.
- Управляйте параметрами удаленно, корректируя поведение и возможности модели по мере необходимости.
Предпосылки
В этом руководстве предполагается, что вы знакомы с разработкой приложений для вашей платформы.
Прежде чем начать, убедитесь, что вы сделали следующее:
Ознакомьтесь с руководством по началу работы с Firebase AI Logic , в котором описывается, как настроить проект Firebase, подключить приложение к Firebase, добавить SDK, инициализировать внутреннюю службу для выбранного поставщика « Gemini API » и создать экземпляр модели.
Включите Google Analytics в своем проекте Firebase и добавьте его SDK в свое приложение (требуется для условного таргетинга, например, для указания местоположения доступа к модели на основе местоположения клиентского устройства).
Шаг 1 : Задайте значения параметров в консоли Firebase
Создайте шаблон Remote Config клиента и настройте параметры и значения для извлечения и использования в приложении.
- Откройте проект Firebase в консоли Firebase . Затем в меню навигации разверните пункт «Запуск» и выберите Remote Config .
- Убедитесь, что в селекторе Клиент/Сервер в верхней части страницы выбрано значение Клиент .
- Запустите клиентский шаблон, нажав «Создать конфигурацию» (или «Добавить параметр», если вы ранее использовали клиентские шаблоны).
Определите параметры, которыми вы хотите управлять с помощью Remote Config . Например:
Имя параметра Описание Тип Значение по умолчанию model_name
Название модели. См. доступные названия моделей . Нить gemini-2.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
Применимо только при использовании API Vertex AI Gemini .
Управляйте местоположением для доступа к модели. Вы можете задать условия для настройки этой опции на основе местоположения клиента, определенного Google Analytics .Нить global
После завершения добавления параметров нажмите «Опубликовать изменения» . Если это не новый шаблон Remote Config , проверьте изменения и снова нажмите «Опубликовать изменения» .
Шаг 2 : Добавьте и инициализируйте Remote Config в своем приложении.
Добавьте библиотеку Remote Config и настройте Remote Config в своем приложении.
Быстрый
В рамках настройки Firebase AI Logic вы уже добавили Firebase SDK в свое приложение, но вам также потребуется добавить Remote Config .
В Xcode откройте проект, перейдите в Файл > Добавить зависимости пакета .
Выберите firebase-ios-sdk и нажмите Добавить пакет .
В навигаторе проектов выберите свое приложение > Цели > ваше приложение.
На вкладке Общие прокрутите до раздела Фреймворки, Библиотеки и Встроенное содержимое .
Нажмите + и выберите FirebaseRemoteConfig , затем нажмите Добавить .
Добавьте импорт
FirebaseRemoteConfig
в свой код:import FirebaseRemoteConfig
Внутри соответствующего класса вашего приложения инициализируйте Firebase и добавьте Remote Config в основную логику приложения.
Здесь вы включите Remote Config и прослушиватель Remote Config в реальном времени в качестве импортов, чтобы приложение могло извлекать новые значения в реальном времени, а также добавите минимальный интервал выборки:
let remoteConfig = RemoteConfig.remoteConfig() let settings = RemoteConfigSettings() settings.minimumFetchInterval = 3600 remoteConfig.configSettings = settings
В приложении быстрого старта это будет внутри
VertexAISampleApp
, в классеAppDelegate
.
Kotlin
Добавьте зависимость Remote Config в файл Gradle вашего модуля (уровня приложения) (обычно
app/build.gradle.kts
илиapp/build.gradle
):dependencies { implementation(platform("com.google.firebase:firebase-bom:34.0.0")) implementation("com.google.firebase:firebase-ai") implementation("com.google.firebase:firebase-config") // ... other dependencies }
Добавьте Remote Config в основную логику приложения. Здесь вы инициализируете Remote Config и добавите минимальный интервал выборки:
val remoteConfig: FirebaseRemoteConfig = Firebase.remoteConfig val configSettings = remoteConfigSettings { minimumFetchIntervalInSeconds = 3600 } remoteConfig.setConfigSettingsAsync(configSettings)
Java
Добавьте зависимость Remote Config в файл Gradle вашего модуля (уровня приложения) (обычно
app/build.gradle.kts
илиapp/build.gradle
):dependencies { implementation(platform("com.google.firebase:firebase-bom:34.0.0")) implementation("com.google.firebase:firebase-ai") implementation("com.google.firebase:firebase-config") // ... other dependencies }
Добавьте Remote Config в основную логику приложения. Здесь вы инициализируете Remote Config и добавите минимальный интервал выборки:
FirebaseRemoteConfig mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance(); FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder() .setMinimumFetchIntervalInSeconds(3600) .build(); mFirebaseRemoteConfig.setConfigSettingsAsync(configSettings);
Web
Откройте свой код в текстовом редакторе и импортируйте Remote Config :
import { getRemoteConfig } from 'firebase/remote-config';
Внутри вашей основной функции и после инициализации приложения Firebase для Firebase AI Logic SDK инициализируйте Remote Config :
// Initialize Remote Config and get a reference to the service const remoteConfig = getRemoteConfig(app);
Установите минимальный интервал выборки:
remoteConfig.settings.minimumFetchIntervalMillis = 3600000;
Dart
Из каталога проекта Flutter установите и добавьте Remote Config с помощью следующей команды:
flutter pub add firebase_remote_config
Откройте
./lib/main.dart
и добавьте импорт после других импортов, которые вы добавили для поддержки Firebase AI Logic :import 'package:firebase_vertexai/firebase_ai.dart'; import 'package:firebase_core/firebase_core.dart'; import 'package:firebase_remote_config/firebase_remote_config.dart';
Добавьте переменные
_modelName
,_systemInstructions
и_prompt
в ваше приложение, чтобы мы могли использовать их позже:late final String _modelName; late final String _systemInstructions; late final String _prompt;
Получите экземпляр объекта Remote Config и установите минимальный интервал выборки, чтобы обеспечить частое обновление. Добавьте это после инициализации Firebase.
final remoteConfig = FirebaseRemoteConfig.instance; await remoteConfig.setConfigSettings(RemoteConfigSettings( fetchTimeout: const Duration(seconds: 3600), minimumFetchInterval: const Duration(seconds: 3600), ));
Единство
Добавьте Remote Config в свой проект Unity, следуя этим инструкциям .
Получите экземпляр объекта Remote Config и установите минимальный интервал выборки, чтобы обеспечить частое обновление. Добавьте это после инициализации Firebase.
var remoteConfig = FirebaseRemoteConfig.DefaultInstance; const int MillisecondsPerSecond = 1000; await remoteConfig.SetConfigSettingsAsync(new ConfigSettings() { FetchTimeoutInMilliseconds = 3600 * MillisecondsPerSecond, MinimumFetchIntervalInMilliseconds = 3600 * MillisecondsPerSecond });
Шаг 3 : Задайте значения параметров в приложении
Вам следует задать значения параметров приложения по умолчанию в объекте Remote Config . Это гарантирует, что ваше приложение будет вести себя ожидаемым образом, даже если оно не сможет получить значения из службы Remote Config .
Быстрый
В консоли Firebase откройте Remote Config .
На вкладке «Параметры» откройте « Меню» и выберите «Загрузить значения по умолчанию» .
При появлении запроса включите .plist для iOS , затем нажмите Загрузить файл .
Сохраните файл в каталоге вашего приложения.
Если вы используете пример приложения, сохраните его в
FirebaseVertexAI/Sample/VertexAISample
.В Xcode щелкните правой кнопкой мыши по приложению и выберите «Добавить файлы».
Если вы используете образец, щелкните правой кнопкой мыши по VertexAISample и выберите Добавить файлы в «VertexAISample» .
Выберите remote_config_defaults.plist , затем нажмите Добавить .
Обновите код приложения, указав ссылку на файл по умолчанию:
// Set default values remoteConfig.setDefaults(fromPlist: "remote_config_defaults")
Kotlin
В консоли Firebase откройте Remote Config .
На вкладке «Параметры» откройте « Меню» и выберите «Загрузить значения по умолчанию» .
При появлении запроса включите .xml для Android , затем нажмите Загрузить файл .
Сохраните файл в каталоге XML-ресурсов вашего приложения.
Обновите ваш основной файл активности, чтобы добавить значения по умолчанию после
configSettings
, который вы добавили ранее:// Set default values. remoteConfig.setDefaultsAsync(R.xml.remote_config_defaults)
Java
В консоли Firebase откройте Remote Config .
На вкладке «Параметры» откройте « Меню» и выберите «Загрузить значения по умолчанию» .
При появлении запроса включите .xml для Android , затем нажмите Загрузить файл .
Сохраните файл в каталоге XML-ресурсов вашего приложения.
Обновите ваш основной файл активности, чтобы добавить значения по умолчанию после
configSettings
, который вы добавили ранее:// Set default values. mFirebaseRemoteConfig.setDefaultsAsync(R.xml.remote_config_defaults);
Web
Вы можете установить значения по умолчанию непосредственно в своем коде:
// Set default Remote Config parameter values
remoteConfig.defaultConfig = {
model_name: 'gemini-2.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: 'global',
};
Dart
Вы можете установить значения по умолчанию непосредственно в своем коде:
remoteConfig.setDefaults(const {
"model_name": "gemini-2.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": "global"
});
Единство
Вы можете установить значения по умолчанию непосредственно в своем коде:
await remoteConfig.SetDefaultsAsync(
new System.Collections.Generic.Dictionary<string, object>() {
{ "model_name", "gemini-2.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", "global" }
}
);
Шаг 4 : Извлечение и активация значений
После установки значений по умолчанию добавьте следующее для извлечения и активации значений.
Быстрый
// Fetch and activate Remote Config values
remoteConfig.fetchAndActivate { status, error in
if let error = error {
print("Error fetching Remote Config: \(error.localizedDescription)")
}
}
Это должно обновлять объект Remote Config каждый раз при публикации нового шаблона Remote Config .
Kotlin
// 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)
}
}
});
Web
Добавьте
getValue
иfetchAndActivate
к вашим импортам:import { getValue, fetchAndActivate } from 'firebase/remote-config';
После добавления кода для настройки значений Remote Config по умолчанию извлеките и активируйте конфигурацию, затем присвойте значения константам
modelName
,systemInstructions
,prompt
иvertexLocation
.// Fetch and activate Remote Config. try { await fetchAndActivate(remoteConfig); } catch(err) { console.error('Remote Config fetch failed', err); } console.log('Remote Config fetched.'); // Assign Remote Config values. const modelName = getValue(remoteConfig, 'model_name').asString(); const systemInstructions = getValue(remoteConfig, 'system_instructions').asString(); const prompt = getValue(remoteConfig, 'prompt').asString(); const vertexLocation = getValue(remoteConfig, 'vertex_location').asString();
Dart
// Fetch and activate Remote Config.
remoteConfig.fetchAndActivate();
// Assign Remote Config values.
String? _modelName = remoteConfig.getString("model_name");
String? _systemInstructions = remoteConfig.getString("system_instructions");
String? _prompt = remoteConfig.getString("prompt");
String? _vertexLocation = remoteConfig.getString("vertex_location");
Единство
// Fetch and activate Remote Config values.
await remoteConfig.FetchAndActivateAsync();
Шаг 5 : Добавьте прослушиватель Remote Config в реальном времени
Добавьте в свое приложение прослушиватель Remote Config в режиме реального времени, чтобы гарантировать, что изменения, вносимые в шаблон Remote Config будут переданы клиенту сразу после их обновления.
Следующий код обновляет объект Remote Config при каждом изменении значения параметра.
Быстрый
// Add real-time Remote Config
remoteConfig.addOnConfigUpdateListener { configUpdate, error in
guard let configUpdate = configUpdate, error == nil else {
print("Error listening for config updates: \(error?.localizedDescription ?? "No error available")")
return
}
print("Updated keys: \(configUpdate.updatedKeys)")
remoteConfig.activate { changed, error in
guard error == nil else {
print("Error activating config: \(error?.localizedDescription ?? "No error available")")
return
}
print("Activated config successfully")
}
}
Kotlin
При желании вы также можете настроить действие внутри активации addOnCompleteListener
:
// 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
При желании вы также можете настроить действие внутри активации addOnCompleteListener
:
// 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);
}
});
Web
Прослушиватели Remote Config в реальном времени не поддерживаются для веб-приложений.
Dart
// Add a real-time Remote Config listener
remoteConfig.onConfigUpdated.listen((event) async {
await remoteConfig.activate();
});
Единство
// Add a real-time Remote Config listener to automatically update whenever
// a new template is published.
// Note: the parameters can be anonymous as they are unused.
remoteConfig.OnConfigUpdateListener += (_, _) => {
remoteConfig.ActivateAsync();
};
Шаг 6 : Обновите запросы API Gemini для использования значений Remote Config
Щелкните своего поставщика API Gemini , чтобы просмотреть специфичный для этого поставщика контент и код на этой странице. |
Теперь, когда Remote Config полностью настроен, обновите свой код, заменив жестко заданные значения значениями, полученными из Remote Config .
Быстрый
// Initialize the Gemini Developer API backend service
// The Gemini Developer API doesn't support setting the location of a model
let ai = FirebaseAI.firebaseAI(backend: .googleAI())
// Create a `GenerativeModel` and add system instructions into its config
// Both the model name and the system instructions will be sourced from Remote Config
let modelName = remoteConfig.configValue(forKey: "model_name").stringValue
let systemInstructions = remoteConfig.configValue(forKey: "system_instructions").stringValue
let model = ai.generativeModel(
modelName: modelName,
systemInstruction: ModelContent(role: "system", parts: systemInstructions)
)
// Provide a prompt that contains text
// The text in the prompt will be sourced from Remote Config
let userPrompt = remoteConfig.configValue(forKey: "prompt").stringValue
// To generate text output, call `generateContent` with the text input
let response = try await model.generateContent(userPrompt)
if let text = response.text {
print(text)
}
Kotlin
// Initialize the Gemini Developer API backend service
// The Gemini Developer API doesn't support setting the location of a model
val ai = Firebase.ai(backend = GenerativeBackend.googleAI())
// Create a `GenerativeModel` and add system instructions into its config
// Both the model name and the system instructions will be sourced from Remote Config
val model = ai.generativeModel(
modelName = remoteConfig.getString("model_name"),
systemInstruction = content { text(remoteConfig.getString("system_instructions")) }
)
// To generate text output, call `generateContent` with the text input
// The text in the prompt will be sourced from Remote Config
val response = model.generateContent(remoteConfig.getString("prompt"))
print(response.text)
Java
// Initialize the Gemini Developer API backend service
// The Gemini Developer API doesn't support setting the location of a model
FirebaseAI ai = FirebaseAI.getInstance(GenerativeBackend.googleAI());
// Create a `GenerativeModel` and add system instructions into its config
// Both the model name and the system instructions will be sourced from Remote Config
GenerativeModel gm = ai.generativeModel(
/* modelName */ remoteConfig.getString("model_name"),
/* generationConfig (optional) */ null,
/* safetySettings (optional) */ null,
/* tools (optional) */ null,
/* toolsConfig (optional) */ null,
/* systemInstruction (optional) */ new Content.Builder().addText(
remoteConfig.getString("system_instructions")).build(),
/* requestOptions (optional) */ new RequestOptions()
);
GenerativeModelFutures model = GenerativeModelFutures.from(gm);
// Provide a prompt that contains text
// The text in the prompt will be sourced from Remote Config
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);
Web
// Initialize FirebaseApp
const firebaseApp = initializeApp(firebaseConfig);
// Initialize the Gemini Developer API backend service
// The Gemini Developer API doesn't support setting the location of a model
const ai = getAI(firebaseApp, { backend: new GoogleAIBackend() });
// Create a `GenerativeModel` and add system instructions into its config
// Both the model name and the system instructions will be sourced from Remote Config
const model = getGenerativeModel(ai, {
model: modelName,
systemInstruction: systemInstruction
});
// Wrap in an async function so you can use await
async function run() {
// Provide a prompt that contains text
// The text in the prompt will be sourced from Remote Config
const userPrompt = prompt;
// To generate text output, call `generateContent` with the text input
const result = await model.generateContent(userPrompt);
const response = result.response;
const text = response.text();
console.log(text);
}
Dart
// Initialize the Gemini Developer API backend service
// The Gemini Developer API doesn't support setting the location of a model
final ai = await FirebaseAI.googleAI();
// Create a `GenerativeModel` and add system instructions into its config
// Both the model name and the system instructions will be sourced from Remote Config
final model =
ai.generativeModel(
model: _modelName,
systemInstruction: Content.system(_systemInstructions),
);
// Provide a prompt that contains text
// The text in the prompt will be sourced from Remote Config
final _userPrompt = [Content.text(_prompt)];
// To generate text output, call `generateContent` with the text input
final response = await model.generateContent(_userPrompt);
print(response.text);
Единство
// Initialize the Gemini Developer API backend service
// The Gemini Developer API doesn't support setting the location of a model
var ai = FirebaseAI.GetInstance(FirebaseAI.Backend.GoogleAI());
// Create a `GenerativeModel` and add system instructions into its config
// Both the model name and the system instructions will be sourced from Remote Config
var modelName = remoteConfig.GetValue("model_name").StringValue;
var systemInstructions = remoteConfig.GetValue("system_instructions").StringValue;
var model = ai.GetGenerativeModel(
modelName: modelName,
systemInstruction: ModelContent.Text(systemInstructions)
);
// Provide a prompt that contains text
// The text in the prompt will be sourced from Remote Config
var userPrompt = remoteConfig.GetValue("prompt").StringValue;
// To generate text output, call `GenerateContentAsync` with the text input
var response = await model.GenerateContentAsync(userPrompt);
UnityEngine.Debug.Log(response.Text ?? "No text in response.");
Шаг 7 : Запустите приложение.
Соберите и запустите приложение, чтобы убедиться в его работоспособности. Внесите изменения в конфигурацию на странице Remote Config в консоли Firebase , опубликуйте изменения и проверьте результат.
Следующие шаги
Узнайте больше об Remote Config .
Добавьте Google Analytics в клиентский код, чтобы включить таргетинг.
Для мобильных приложений и игр:
Протестируйте различные настройки модели с помощью Remote Config и A/B Testing .
Постепенно выпускайте изменения параметров модели с помощью развертываний Remote Config (только для iOS+ и Android).
Используйте персонализацию Remote Config , чтобы использовать машинное обучение для определения оптимальных настроек для отдельных пользователей (только iOS+, Android и Unity).