Выберите модель

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 может давать неудовлетворительные результаты при ответе на некоторые запросы на некоторых устройствах.