При вызове Gemini API из приложения с помощью SDK Firebase AI Logic ваш запрос содержит ряд параметров, которые управляют ответами генеративного искусственного интеллекта. Обычно в них входят название модели, конфигурация поколения модели (например, максимальное количество выходных токенов), настройки безопасности, системные инструкции и данные запроса.
В большинстве случаев вам нужно будет менять эти настройки по запросу или по мере необходимости в следующих ситуациях:
- Обновляйте модель генеративного ИИ без выпуска новой версии приложения. Вы можете перейти на более новые и стабильные версии модели до того, как более ранние будут отключены, выбрать более дешевые или более производительные модели в зависимости от потребностей и атрибутов пользователей или условно развернуть новейшие модели для определенных сегментов пользователей, например бета-тестеров.
- Укажите местоположение, где будет размещена модель, чтобы она находилась ближе к вашим пользователям.
- Проведите 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, чтобы динамически обновлять параметры в приложении, в котором используется Firebase AI Logic SDK. Вы научитесь:
- Получайте и активируйте параметры, такие как названия моделей и системные инструкции, из Firebase Remote Config.
- Измените вызовы Gemini API, чтобы использовать параметры, полученные динамически. Это позволит вам переключаться между разными моделями или изменять инструкции системы без обновления приложения.
- Удаленно управляйте параметрами, настраивая поведение и возможности модели.
Требования
В этом руководстве предполагается, что вы уже разрабатывали приложения для своей платформы.
Прежде чем начать, убедитесь, что вы выполнили следующие действия:
Выполните инструкции из Firebase AI Logic руководства по началу работы, в котором рассказывается, как настроить проект 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 и нажмите Добавить пакет.
В навигаторе проектов выберите приложение > Targets (Цели) > приложение.
На вкладке Общие прокрутите страницу до раздела Фреймворки, библиотеки и встроенный контент.
Нажмите + и выберите FirebaseRemoteConfig, а затем нажмите Добавить.
Добавьте в код импорт
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.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:35.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_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 и нажмите Добавить.
Обновите код приложения, чтобы он ссылался на файл настроек по умолчанию:
// 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).