Параметры конфигурации для гибридного взаимодействия в приложениях Android


На этой странице описаны следующие параметры конфигурации для гибридных сред:

Убедитесь, что вы завершили руководство по началу работы с созданием гибридных приложений .

Установить режим вывода

В примерах руководства по началу работы используется режим 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());

Укажите модель для использования.

Чтобы просмотреть контент и код, относящиеся к вашему поставщику API Gemini , нажмите на него.

Вы можете указать модель для использования при создании экземпляра 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 [Preview] ( nano-v4-full , основанный на Gemma 4 E4B).

      • PREVIEW_FAST : Новейшая, быстрая предварительная версия встроенной модели устройства.

        • Оптимизировано для максимальной скорости и минимальной задержки.

        • Например, Gemini Nano 4 Fast [Preview] ( 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_HOSTED_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_HOSTED_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);

Используйте конфигурацию модели для управления ответами.

Чтобы просмотреть контент и код, относящиеся к вашему поставщику API Gemini , нажмите на него.

В каждом запросе к модели можно передать конфигурацию модели, чтобы управлять тем, как модель генерирует ответ. Модели, размещенные в облаке, и модели, размещенные на устройстве, предлагают разные варианты конфигурации (параметры облака и параметры, заданные на устройстве ).

Для моделей, размещенных в облаке, их конфигурацию следует задавать непосредственно в конфигурации модели. Однако для моделей, размещенных на устройстве, конфигурацию следует задавать в объекте onDeviceConfig .

Данная конфигурация сохраняется на протяжении всего срока службы экземпляра. Если вы хотите использовать другую конфигурацию, создайте новый экземпляр GenerativeModel с этой конфигурацией.

Вот пример, определяющий конфигурацию для облачных и локальных моделей, которые могут использоваться, если установлен режим вывода PREFER_ON_DEVICE :

Kotlin

val model = Firebase.ai(backend = GenerativeBackend.googleAI())
    .generativeModel("MODEL_NAME",
        // Config for cloud-hosted model
        generationConfig = generationConfig {
          temperature = 0.8f,
          topK = 10
        },
        // Config for on-device model
        onDeviceConfig = onDeviceConfig {
          mode = InferenceMode.PREFER_ON_DEVICE,
          temperature = 0.8f,
          topK = 5
        })

Java

// Config for cloud-hosted model
GenerationConfig generationConfig = new GenerationConfig.Builder()
    .setTemperature(0.8f)
    .setTopK(10)
    .build();

// Config for on-device model
OnDeviceConfig onDeviceConfig = new OnDeviceConfig.Builder()
    .setMode(InferenceMode.PREFER_ON_DEVICE)
    .setTemperature(0.8f)
    .setTopK(5)
    .build();

GenerativeModel ai = FirebaseAI.getInstance(GenerativeBackend.googleAI())
    .generativeModel(
        "MODEL_NAME",
        generationConfig,
        onDeviceConfig
    );

GenerativeModelFutures model = GenerativeModelFutures.from(ai);