При вызове Gemini API из приложения с помощью 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, чтобы динамически обновлять параметры в приложении, использующем SDK Firebase AI Logic. Вы научитесь:
- Получите и активируйте параметры, такие как названия моделей и системные инструкции, из Firebase Remote Config.
- Обновите вызовы Gemini API, чтобы использовать динамически получаемые параметры. Это позволит вам переключаться между разными моделями или изменять системные инструкции без обновления приложения.
- Удаленно управляйте параметрами, настраивая поведение и возможности модели по мере необходимости.
Требования
В этом руководстве предполагается, что вы умеете разрабатывать приложения для своей платформы.
Прежде чем начать, сделайте следующее:
Выполните инструкции из краткого руководства по началу работы с Firebase AI Logic. В нем описано, как настроить проект Firebase, подключить приложение к Firebase, добавить SDK, инициализировать бэкенд-службу для выбранного поставщика (Gemini API) и создать экземпляр модели.
Включите Google Analytics в проекте Firebase и добавьте SDK в приложение. Это необходимо для условного таргетинга, например для настройки местоположения, из которого вы получаете доступ к модели, на основе местоположения клиентского устройства.
Шаг 1. Задайте значения параметров в консоли Firebase.
Создайте шаблон клиента Remote Config и настройте параметры и значения, которые будут извлекаться и использоваться в приложении.
В консоли Firebase выберите DevOps & Engagement (DevOps и вовлечение) > Remote Config (Удаленная конфигурация).
В меню Клиент/сервер в верхней части страницы выберите Клиент.
Нажмите Создать конфигурацию (или Добавить параметр, если вы уже использовали шаблоны клиентов).
Определите параметры, которыми вы хотите управлять с помощью Remote Config. Пример:
Название параметра Описание Тип Значение по умолчанию model_nameНазвание модели. Ознакомьтесь со списком доступных моделей. Строка gemini-3.8-flashsystem_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!agent_platform_locationПрименимо, только если используется Agent Platform Gemini API (formerly Vertex AI).
Управляйте местоположением для доступа к модели. Вы можете задать условия, чтобы настроить этот параметр на основе местоположения клиента, определенного Google Analytics.Строка globalДобавив параметры, нажмите Опубликовать изменения. Если это не новый шаблон Remote Config, проверьте изменения и снова нажмите Опубликовать изменения.
Шаг 2. Добавьте и инициализируйте Remote Config в приложении
Добавьте библиотеку Remote Config и настройте Remote Config в приложении.
Swift
При настройке Firebase AI Logic вы уже добавили Firebase SDK в приложение, но вам также нужно добавить Remote Config.
Откройте проект в Xcode и выберите File (Файл) > Add Package Dependencies (Добавить зависимости пакетов).
Выберите firebase-ios-sdk и нажмите Add package (Добавить пакет).
В навигаторе проектов выберите свое приложение, а затем нажмите Targets (Цели) и снова выберите приложение.
На вкладке General (Общие) прокрутите страницу до раздела Frameworks, Libraries, and Embedded Content (Фреймворки, библиотеки и встроенный контент).
Нажмите +, выберите FirebaseRemoteConfig и нажмите Add (Добавить).
Добавьте в код импорт
FirebaseRemoteConfig:import FirebaseRemoteConfigВ соответствующем классе приложения инициализируйте Firebase и добавьте Remote Config в основную логику приложения.
Здесь вы импортируете Remote Config и прослушиватель Remote Config в реальном времени, чтобы приложение могло получать новые значения в реальном времени, и добавите минимальный интервал получения:
let remoteConfig = RemoteConfig.remoteConfig() let settings = RemoteConfigSettings() settings.minimumFetchInterval = 3600 remoteConfig.configSettings = settings
Kotlin
Добавьте зависимость Remote Config в файл Gradle на уровне модуля (обычно
app/build.gradle.ktsилиapp/build.gradle):dependencies { implementation(platform("com.google.firebase:firebase-bom:35.1.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:35.1.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 для SDK Firebase AI Logic инициализируйте 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_ai/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), ));
Unity
Добавьте 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.
Swift
В консоли Firebase перейдите на страницу DevOps & Engagement (DevOps и вовлечение) > Remote Config (Удаленная конфигурация) > Parameters (Параметры).
Откройте
меню и выберите Скачать значения по умолчанию.Когда появится запрос, включите .plist для iOS и нажмите Скачать файл.
Сохраните файл в каталоге приложения.
В Xcode нажмите правой кнопкой мыши на приложение и выберите Add Files (Добавить файлы).
Выберите remote_config_defaults.plist и нажмите Add (Добавить).
Обновите код приложения, чтобы он ссылался на файл со значениями по умолчанию:
// Set default values for Remote Config parameters. remoteConfig.setDefaults(fromPlist: "remote_config_defaults")
Kotlin
В консоли Firebase перейдите на страницу DevOps & Engagement (DevOps и вовлечение) > Remote Config (Удаленная конфигурация) > Parameters (Параметры).
Откройте
меню и выберите Скачать значения по умолчанию.В появившемся окне выберите .xml для Android и нажмите Скачать файл.
Сохраните файл в каталоге XML-ресурсов приложения.
Обновите основной файл activity, добавив значения по умолчанию после строки
configSettings, которую вы добавили ранее:// Set default values for Remote Config parameters. remoteConfig.setDefaultsAsync(R.xml.remote_config_defaults)
Java
В консоли Firebase перейдите на страницу DevOps & Engagement (DevOps и вовлечение) > Remote Config (Удаленная конфигурация) > Parameters (Параметры).
Откройте
меню и выберите Скачать значения по умолчанию.В появившемся окне выберите .xml для Android и нажмите Скачать файл.
Сохраните файл в каталоге XML-ресурсов приложения.
Обновите основной файл activity, добавив значения по умолчанию после строки
configSettings, которую вы добавили ранее:// Set default values for Remote Config parameters. mFirebaseRemoteConfig.setDefaultsAsync(R.xml.remote_config_defaults);
Web
Вы можете задать значения по умолчанию непосредственно в коде:
// Set default values for Remote Config parameters.
remoteConfig.defaultConfig = {
model_name: 'gemini-3.8-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!',
agent_platform_location: 'global',
};
Dart
Вы можете задать значения по умолчанию непосредственно в коде:
// Set default values for Remote Config parameters.
remoteConfig.setDefaults(const {
"model_name": "gemini-3.8-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!",
"agent_platform_location": "global"
});
Unity
Вы можете задать значения по умолчанию непосредственно в коде:
// Set default values for Remote Config parameters.
await remoteConfig.SetDefaultsAsync(
new System.Collections.Generic.Dictionary<string, object>() {
{ "model_name", "gemini-3.8-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!" },
{ "agent_platform_location", "global" }
}
);
Шаг 4. Получите и активируйте значения
После настройки значений по умолчанию добавьте следующий код, чтобы получить и активировать значения.
Swift
// 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иagentPlatformLocation.// 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 agentPlatformLocation = getValue(remoteConfig, 'agent_platform_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? _agentPlatformLocation = remoteConfig.getString("agent_platform_location");
Unity
// Fetch and activate Remote Config values.
await remoteConfig.FetchAndActivateAsync();
Шаг 5. Добавьте прослушиватель Remote Config в реальном времени
Добавьте в приложение прослушиватель Remote Config в реальном времени, чтобы изменения, которые вы вносите в шаблон Remote Config, сразу же передавались клиенту.
Следующий код обновляет объект Remote Config при каждом изменении значения параметра.
Swift
// 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
// Add a real-time Remote Config listener
onConfigUpdate(remoteConfig, {
next: (configUpdate) => {
console.log("Updated keys:", configUpdate.getUpdatedKeys());
if (configUpdate.getUpdatedKeys().has("welcome_message")) {
activate(remoteConfig).then(() => {
showWelcomeMessage();
});
}
},
error: (error) => {
console.log("Config update error:", error);
},
complete: () => {
console.log("Listening stopped.");
}
});
Dart
// Add a real-time Remote Config listener
remoteConfig.onConfigUpdated.listen((event) async {
await remoteConfig.activate();
});
Unity
// 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. Обновите запросы Gemini API, чтобы использовать значения Remote Config
|
Нажмите на название своего поставщика Gemini API, чтобы посмотреть контент и код, относящиеся к нему. |
Теперь, когда Remote Config полностью настроен, обновите код, чтобы заменить заданные в коде значения на значения из Remote Config.
Swift
// 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);
Unity
// 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).