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_CLOUDONLY_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 [プレビュー](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_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 プロバイダをクリックして、このページでプロバイダ固有のコンテンツとコードを表示します。

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

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