На этой странице описаны следующие варианты конфигурации гибридных решений:
Убедитесь, что вы выполнили все инструкции из руководства по созданию гибридных приложений.
Как задать режим инференса
В примерах из руководства по началу работы используется режим PREFER_ON_DEVICE, но это лишь один из четырех доступных режимов логического вывода.
Доступны следующие режимы вывода:
PREFER_ON_DEVICE– попытаться использовать модель на устройстве, если она доступна и поддерживает тип запроса. В противном случае зарегистрируйте ошибку на устройстве и автоматически перейдите на модель с размещением в облаке.Kotlin
val config = OnDeviceConfig(mode = InferenceMode.PREFER_ON_DEVICE)Java
InferenceMode mode = InferenceMode.PREFER_ON_DEVICE; OnDeviceConfig config = new OnDeviceConfig(mode);ONLY_ON_DEVICE– попытаться использовать модель на устройстве, если она доступна и поддерживает тип запроса. В противном случае выдайте исключение.Kotlin
val config = OnDeviceConfig(mode = InferenceMode.ONLY_ON_DEVICE)Java
InferenceMode mode = InferenceMode.ONLY_ON_DEVICE; OnDeviceConfig config = new OnDeviceConfig(mode);PREFER_IN_CLOUD: попытаться использовать модель, размещенную в облаке, если устройство подключено к интернету и модель доступна. Если устройство офлайн, используйте модель на устройстве. Во всех остальных случаях выбрасывайте исключение.Kotlin
val config = OnDeviceConfig(mode = InferenceMode.PREFER_IN_CLOUD)Java
InferenceMode mode = InferenceMode.PREFER_IN_CLOUD; OnDeviceConfig config = new OnDeviceConfig(mode);ONLY_IN_CLOUD: попытаться использовать модель, размещенную в облаке, если устройство подключено к интернету и модель доступна. В противном случае выдайте исключение.Kotlin
val config = OnDeviceConfig(mode = InferenceMode.ONLY_IN_CLOUD)Java
InferenceMode mode = InferenceMode.ONLY_IN_CLOUD; OnDeviceConfig config = new OnDeviceConfig(mode);
Определить, использовался ли вывод на устройстве или в облаке
Если для режима вывода задано значение PREFER_ON_DEVICE или PREFER_IN_CLOUD, вам может быть полезно знать, какой режим использовался для определенных запросов. Эта информация предоставляется в свойстве inferenceSource каждого ответа.
При обращении к этому свойству возвращается значение ON_DEVICE или IN_CLOUD.
Kotlin
// ...
print("You used: ${result.response.inferenceSource}")
print(result.response.text)
Java
// ...
System.out.println("You used: " + result.getResponse().getInferenceSource());
System.out.println(result.getResponse().getText());
Как указать модель
|
Нажмите на поставщика Gemini API, чтобы посмотреть контент и код, относящиеся к нему. |
Вы можете указать модель, которую нужно использовать при создании экземпляра generativeModel (Kotlin | Java).
Укажите модель, размещенную в облаке:
Если для режима вывода выбрано значение
PREFER_ON_DEVICE,PREFER_IN_CLOUDилиONLY_IN_CLOUD, то вы должны явным образом указать, какую модель, размещенную в облаке, следует использовать. В SDK нет облачной модели по умолчанию.Найти названия моделей для всех поддерживаемых облачных моделей Gemini.
Укажите локальную модель:
Если режим вывода –
PREFER_ON_DEVICE,PREFER_IN_CLOUDилиONLY_ON_DEVICE, вы можете необязательно указать вonDeviceConfigкатегорию модели на устройстве. Категории представляют собой сочетание этапа выпуска и характеристик производительности.Ниже перечислены поддерживаемые значения категорий.
AICore автоматически выбирает модель на устройстве, которая соответствует условиям указанной категории и поддерживается устройством. Например, если вы укажетеPREVIEWи устройство будет Pixel 9, то, скорее всего, будет автоматически выбрана модель Gemini Nano 4 Full [Preview] (nano-v4-full).STABLE– последняя стабильная модель на устройстве.Протестировано на потребительских устройствах.
Например, Gemini Nano 3 (
nano-v3) или Gemini Nano 2 (nano-v2).Настройка по умолчанию для модели на устройстве, если не указан тег
OnDeviceModelOption.
PREVIEW– новейшая предварительная версия модели на устройстве с полной производительностью.Разработана для выполнения сложных задач, требующих логического мышления.
Например, Gemini Nano 4 Full [предварительная версия] (
nano-v4-full, основанная на Gemma 4 E4B).
PREVIEW_FAST– новейшая предварительная версия локальной модели, которая работает быстро.Оптимизировано для максимальной скорости и минимальной задержки.
Например, Gemini Nano 4 Fast [предварительная версия] (
nano-v4-fast, которая основана на Gemma 4 E2B).
Kotlin
val model = Firebase.ai(backend = GenerativeBackend.googleAI())
.generativeModel(
// Specify a cloud-hosted model.
// Required for `PREFER_ON_DEVICE`, `PREFER_IN_CLOUD`, and `ONLY_IN_CLOUD` inference modes.
modelName = "CLOUD_MODEL_NAME",
onDeviceConfig = OnDeviceConfig(
mode = InferenceMode.INFERENCE_MODE,
// (Optional) Specify an on-device model category.
// AICore will auto-select an on-device model based on this category.
// If not specified, AICore will auto-select the default stable on-device model.
modelOption = OnDeviceModelOption.ON-DEVICE_MODEL_CATEGORY)
)
Java
GenerativeModel ai = FirebaseAI.getInstance(GenerativeBackend.googleAI())
.generativeModel(
// Specify a cloud-hosted model.
// Required for `PREFER_ON_DEVICE`, `PREFER_IN_CLOUD`, and `ONLY_IN_CLOUD` inference modes.
"CLOUD_MODEL_NAME",
/* config = */ null,
/* safetySettings = */ null,
/* tools = */ null,
/* toolConfig = */ null,
/* systemInstruction = */ null,
/* requestOptions = */ new RequestOptions(),
new OnDeviceConfig(
/* mode = */ InferenceMode.INFERENCE_MODE,
/* maxOutputTokens = */ null,
/* temperature = */ null,
/* topK = */ null,
/* seed = */ null,
/* candidateCount = */ 1,
// (Optional) Specify an on-device model category.
// AICore will auto-select an on-device model based on this category.
// If not specified, AICore will auto-select the default stable on-device model.
/* modelOption = */ OnDeviceModelOption.ON-DEVICE_MODEL_CATEGORY)
);
GenerativeModelFutures model = GenerativeModelFutures.from(ai);
Как управлять ответами с помощью конфигурации модели
|
Нажмите на поставщика Gemini API, чтобы посмотреть контент и код, относящиеся к нему. |
В каждом запросе к модели можно отправлять конфигурацию модели, чтобы контролировать, как она генерирует ответ. Модели, размещенные в облаке, и модели на устройстве настраиваются по-разному и предлагают разные варианты конфигурации:
Модели, размещенные в облаке. Настройте конфигурацию с помощью
generationConfig(Kotlin или Java). Подробнее о доступных параметрах…Модели на устройстве. Настройте конфигурацию с помощью
onDeviceConfig(Kotlin | Java). Узнайте больше о доступных параметрах (Kotlin | Java).
Конфигурация сохраняется на протяжении всего времени существования экземпляра. Если вы хотите использовать другую конфигурацию, создайте новый экземпляр GenerativeModel с этой конфигурацией.
Ниже приведен пример конфигурации для облачной и локальной моделей, которые можно использовать, если задан режим инференса PREFER_ON_DEVICE:
Kotlin
// Config for cloud-hosted model
val generationConfig = generationConfig {
maxOutputTokens = 200
stopSequences = listOf("red")
}
// Config for on-device model
val onDeviceConfig = OnDeviceConfig(
mode = InferenceMode.PREFER_ON_DEVICE,
maxOutputTokens = 200
)
val model = Firebase.ai(backend = GenerativeBackend.googleAI())
.generativeModel(
modelName = "CLOUD_MODEL_NAME",
generationConfig = generationConfig,
onDeviceConfig = onDeviceConfig
)
Java
// Config for cloud-hosted model
GenerationConfig generationConfig = new GenerationConfig.Builder()
.setMaxOutputTokens(200)
.setStopSequences(List.of("red"))
.build();
// Config for on-device model
OnDeviceConfig onDeviceConfig = new OnDeviceConfig(
/* mode = */ InferenceMode.PREFER_ON_DEVICE,
/* maxOutputTokens = */ 200,
/* temperature = */ null,
/* topK = */ null,
/* seed = */ null,
/* candidateCount = */ 1,
/* modelOption = */ null
);
GenerativeModel ai = FirebaseAI.getInstance(GenerativeBackend.googleAI())
.generativeModel(
"CLOUD_MODEL_NAME",
generationConfig,
/* safetySettings = */ null,
/* tools = */ null,
/* toolConfig = */ null,
/* systemInstruction = */ null,
/* requestOptions = */ new RequestOptions(),
onDeviceConfig
);
GenerativeModelFutures model = GenerativeModelFutures.from(ai);
Оставить отзыв о работе Firebase AI Logic