API Prompt позволяет явно выбрать версию Gemini Nano, используемую вашим приложением. Настроив этап выпуска модели и параметры производительности, вы можете получить доступ к новым возможностям модели раньше или оптимизировать приложение с учетом конкретных аппаратных ограничений.
Разберитесь в конфигурациях модели.
Для выбора конкретной модели необходимо настроить два ключевых параметра в классе ModelConfig : этап выпуска и предпочтительный тип модели .
Этапы выпуска
На этапе выпуска можно выбрать между стабильной и предварительной версией:
- Стабильная версия (
ModelReleaseStage.STABLE): Выбирает последнюю версию модели, которая прошла полное тестирование и установлена на потребительских устройствах. Это настройка по умолчанию. - Предварительный просмотр (
ModelReleaseStage.PREVIEW): Выбирает последнюю версию модели на этапе предварительного просмотра. Этот этап позволяет тестировать бета-функции или новые архитектуры моделей до их широкого внедрения в стабильную версию.
Требования к программе и инструкции по регистрации для участия в предварительной версии для разработчиков см. в руководстве по предварительной версии AICore для разработчиков .
Предпочтения модели
Настройки модели позволяют указать, какие характеристики производительности наиболее важны для вашего сценария использования.
- Полный (
ModelPreference.FULL): Этот параметр рекомендуется использовать, когда точность модели и ее полные возможности важнее скорости. - Быстрый (
ModelPreference.FAST): Этот параметр рекомендуется для приложений, чувствительных к задержкам и требующих минимального времени отклика.
Настройте генеративную модель.
Для использования определенного варианта модели необходимо определить ModelConfig и передать его в GenerationConfig при инициализации клиента.
В следующем примере показано, как настроить клиент для использования модели Fast из предварительной версии:
Котлин
// Define the configuration with a specific stage and preference
val previewFastConfig = generationConfig {
modelConfig = modelConfig {
releaseStage = ModelReleaseStage.PREVIEW
preference = ModelPreference.FAST
}
}
// Initialize the GenerativeModel with the configuration
val generativeModel = Generation.getClient(previewFastConfig)
Java
// Define the configuration with a specific stage and preference
GenerationConfig previewFastConfig = new GenerationConfig.Builder()
.setModelConfig(new ModelConfig.Builder()
.setReleaseStage(ModelReleaseStage.PREVIEW)
.setPreference(ModelPreference.FAST)
.build())
.build();
// Initialize the GenerativeModel with the configuration
GenerativeModel generativeModel = Generation.INSTANCE.getClient(previewFastConfig);
Проверьте наличие модели.
Не все устройства поддерживают все комбинации этапов выпуска и настроек модели. Предварительные версии доступны только в списке поддерживаемых устройств в руководстве по предварительной версии AICore для разработчиков.
API не предоставляет метода для предварительного отображения всех доступных конфигураций модели. Вместо этого инициализируйте клиент с желаемой конфигурацией, а затем проверьте его состояние.
- Инициализация клиента: Создайте экземпляр
GenerativeModel, используя предпочитаемый вамиModelConfig. Проверка статуса: вызовите метод
checkStatus()экземпляра, чтобы убедиться, что конкретный вариант модели доступен на устройстве.
Котлин
val generativeModel = Generation.getClient(previewFastConfig)
// Verify that the specific preview model is available
val status = generativeModel.checkStatus()
when (status) {
FeatureStatus.UNAVAILABLE -> {
// Specified preview model is not available on this device
}
FeatureStatus.DOWNLOADABLE -> {
// Specified preview model is available for this device, but not downloaded yet.
// Model may be downloaded through the AICore app or by calling generativeModel.download()
}
FeatureStatus.AVAILABLE -> {
// Proceed with inference
}
FeatureStatus.DOWNLOADING -> {
// Specified preview model is downloading
}
}
Java
GenerativeModel generativeModel = Generation.INSTANCE.getClient(previewFastConfig);
// For Java, use GenerativeModelFutures if you prefer ListenableFuture
GenerativeModelFutures generativeModelFutures = GenerativeModelFutures.from(generativeModel);
Futures.addCallback(
generativeModelFutures.checkStatus(),
new FutureCallback<Integer>() {
@Override
public void onSuccess(Integer status) {
if (status == FeatureStatus.AVAILABLE) {
// Proceed with inference
} else if (status == FeatureStatus.DOWNLOADING) {
// Specified preview model is downloading
} else if (status == FeatureStatus.DOWNLOADABLE) {
// Specified preview model is available for this device, but not downloaded yet.
// Call generativeModelFutures.download(callback) or use the AICore app.
} else if (status == FeatureStatus.UNAVAILABLE) {
// Specified preview model is not available on this device
}
}
@Override
public void onFailure(Throwable t) {
// Handle failure
}
},
ContextCompat.getMainExecutor(context));
Для обеспечения совместимости с потенциальными будущими конфигурациями SDK разработан таким образом, чтобы избежать генерации GenAiException во время инициализации клиента, полагаясь исключительно на метод checkStatus() для проверки доступности.
Передовые методы
- Внедрите стратегии резервного копирования: поскольку доступность моделей предварительного просмотра не гарантируется на всех устройствах, всегда используйте стратегию резервного копирования. Если
checkStatus()возвращаетfalseдля конфигурации предварительного просмотра, ваше приложение должно корректно вернуться к состояниюModelReleaseStage.STABLEиModelPreference.FULL. - Используйте этапы выпуска модели для разработки и производства: используйте этап предварительного просмотра во время разработки и внутреннего тестирования, чтобы оценить будущие улучшения модели. Переключитесь на стабильный режим для публичных релизов, чтобы обеспечить согласованное поведение для ваших пользователей.
Известные проблемы
- Для некоторых устройств, находящихся на стадии предварительного тестирования, поддержка нескольких кандидатов в выходных данных будет недоступна, и в случае, если
candidateCountбудет больше 1, будет возвращена ошибка. Дополнительные сведения см. в справочнике API . - В некоторых реализациях поддержка множественных сэмплов не реализована. Производительность будет ниже, чем в финальной версии продукта.
- В настоящее время ввод изображений работает только на Pixel 10.
- Модель
nanov4-fastможет давать неудовлетворительные результаты при ответе на некоторые запросы на некоторых устройствах.