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

val model = Firebase.ai(backend = GenerativeBackend.googleAI())
    .generativeModel(
        modelName = "MODEL_NAME",
        onDeviceConfig = OnDeviceConfig(mode = InferenceMode.PREFER_ON_DEVICE)
    )

Java

GenerativeModel ai = FirebaseAI.getInstance(GenerativeBackend.googleAI())
    .generativeModel(
        "MODEL_NAME",
        new OnDeviceConfig(InferenceMode.PREFER_ON_DEVICE)
    );

GenerativeModelFutures model = GenerativeModelFutures.from(ai);

サポートされているすべての Gemini モデルのモデル名を確認します。

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

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);