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

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

  • オンデバイス モデルを指定する:

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

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

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

        • 完全にテスト済みで、一般ユーザー向けデバイスに搭載されています。

        • たとえば、Gemini Nano 3(nano-v3)や Gemini Nano 2(nano-v2)などです。

        • OnDeviceModelOption が指定されていない場合、デバイス上のモデルのデフォルト設定。

      • PREVIEW: フル パフォーマンス機能を備えた最新のプレビュー オンデバイス モデル。

        • 高度な推論能力と複雑なタスクに対応するように設計されています。

        • たとえば、Gemini Nano 4 Full [プレビュー](Gemma 4 E4B に基づく nano-v4-full)。

      • PREVIEW_FAST: 高速な最新のプレビュー オンデバイス モデル。

        • 最大速度と低レイテンシに向けて最適化されています。

        • たとえば、Gemini Nano 4 Fast [プレビュー](Gemma 4 E2B に基づく nano-v4-fast)。

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 の使用感についてフィードバックを送信する