Android アプリのハイブリッド エクスペリエンスの構成オプション


このページでは、ハイブリッド エクスペリエンスの次の構成オプションについて説明します。

ハイブリッド エクスペリエンスの構築の スタートガイドを完了していることを確認してください。

推論モードを設定する

スタートガイドの例では PREFER_ON_DEVICE モードを使用していますが、 これは使用可能な 4 つの 推論モードの 1 つにすぎません。

使用可能な推論モードは次のとおりです。

  • 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_DEVICEPREFER_IN_CLOUD、または ONLY_IN_CLOUD の場合は、使用するクラウドでホストされるモデルを明示的に指定する必要があります 。SDK にはデフォルトのクラウドでホストされるモデルはありません。

    • サポートされているすべての クラウドでホストされる Gemini モデルのモデル名を確認します。

  • デバイス上のモデルを指定する:

    • 推論モードが PREFER_ON_DEVICEPREFER_IN_CLOUD、または ONLY_ON_DEVICE の場合は、使用するデバイス上のモデルの「カテゴリ」を onDeviceConfigオプションで指定できます。カテゴリは、リリース ステージとパフォーマンス特性の組み合わせです。

    • サポートされているカテゴリ値は次のとおりです。
      AICore は、指定されたカテゴリの条件を満たし、デバイスでサポートされているデバイス上のモデルを自動的に選択します。たとえば、PREVIEW を指定し、デバイスが Google Pixel 9 の場合、 Gemini Nano 4 Full [プレビュー]nano-v4-full)が自動的に選択される可能性があります。

      • STABLE: 最新の 安定版のデバイス上のモデル。

        • 完全にテストされ、一般ユーザー向けデバイスで利用できます。

        • 例: Gemini Nano 3nano-v3)、 Gemini Nano 2nano-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_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);

モデル構成を使用してレスポンスを制御する

Gemini API プロバイダをクリックして、このページでプロバイダ固有のコンテンツとコードを表示します。

モデルへのリクエストごとに、モデル構成を送信して、モデルがレスポンスを生成する方法を制御できます。クラウドでホストされるモデルとデバイス上のモデル では、構成オプションが異なります (クラウド パラメータと デバイス上の パラメータ)。

クラウドでホストされるモデルの場合は、モデルの構成で直接構成を設定します。ただし、デバイス上のモデルの場合は、 an 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);