モデルを選択

Prompt API を使用すると、アプリで使用する Gemini Nano のバージョンを明示的に選択できます。モデルのリリース ステージとパフォーマンス設定を構成することで、新しいモデル機能をいち早く利用したり、特定のハードウェア制約に合わせてアプリを最適化したりできます。

モデル構成について

特定のモデルを選択するには、ModelConfig クラス内で 2 つのキーパラメータ(リリース ステージモデル設定)を構成する必要があります。

リリース ステージ

リリース ステージでは、安定版モデルとプレビュー版モデルのどちらかを選択できます。

  • Stable(ModelReleaseStage.STABLE): 詳細にテストされ、一般ユーザー向けデバイスに搭載されている最新のモデル バージョンを選択します。これはデフォルトの設定です。
  • プレビュー(ModelReleaseStage.PREVIEW): プレビュー段階の最新のモデル バージョンを選択します。このステージでは、ベータ版の機能や新しいモデル アーキテクチャを、安定版ステージに広くデプロイする前にテストできます。

デベロッパー プレビューの前提条件と登録手順については、AICore デベロッパー プレビュー ガイドをご覧ください。

モデル設定

モデルの優先度を使用すると、ユースケースで最も重要なパフォーマンス特性を指定できます。

  • フル(ModelPreference.FULL): 速度よりもモデルの精度と完全な機能を優先する場合に推奨される設定です。
  • 高速(ModelPreference.FAST): 最小応答時間を必要とするレイテンシの影響を受けやすいアプリにおすすめの設定です。

生成モデルを構成する

特定のモデル バリアントを使用するには、ModelConfig を定義して、クライアントの初期化時に GenerationConfig に渡す必要があります。

次の例は、プレビュー ステージの 高速モデルを使用するようにクライアントを構成する方法を示しています。

Kotlin

// Define the configuration with a specific stage and preference
val previewFastConfig = generationConfig {
    modelConfig = modelConfig {
        releaseStage = ModelReleaseStage.PREVIEW
        preference = ModelPreference.FAST
    }
}

// Initialize the GenerativeModel with the configuration
val generativeModel = Generation.getClient(previewFastConfig)

Java

// Define the configuration with a specific stage and preference
GenerationConfig previewFastConfig = new GenerationConfig.Builder()
    .setModelConfig(new ModelConfig.Builder()
        .setReleaseStage(ModelReleaseStage.PREVIEW)
        .setPreference(ModelPreference.FAST)
        .build())
    .build();

// Initialize the GenerativeModel with the configuration
GenerativeModel generativeModel = Generation.INSTANCE.getClient(previewFastConfig);

モデルの可用性を確認する

すべてのデバイスが、リリース ステージとモデル設定のすべての組み合わせをサポートしているわけではありません。プレビュー モデルは、AICore デベロッパー プレビュー ガイドのサポートされているデバイスのリストでのみご利用いただけます。

API には、使用可能なすべてのモデル構成を事前に一覧表示するメソッドはありません。代わりに、目的の構成でクライアントを初期化してから、そのステータスを確認します。

  • クライアントを初期化する: 任意の ModelConfig を使用して GenerativeModel インスタンスを作成します。
  • ステータスを確認する: インスタンスで checkStatus() メソッドを呼び出し、特定のモデル バリエーションがデバイスで利用可能であることを確認します。

Kotlin

val generativeModel = Generation.getClient(previewFastConfig)

// Verify that the specific preview model is available
val status = generativeModel.checkStatus()

when (status) {
    FeatureStatus.UNAVAILABLE -> {
        // Specified preview model is not available on this device
    }
    FeatureStatus.DOWNLOADABLE -> {
        // Specified preview model is available for this device, but not downloaded yet.
        // Model may be downloaded through the AICore app or by calling generativeModel.download()
    }
    FeatureStatus.AVAILABLE -> {
        // Proceed with inference
    }
    FeatureStatus.DOWNLOADING -> {
        // Specified preview model is downloading
    }
}

Java

GenerativeModel generativeModel = Generation.INSTANCE.getClient(previewFastConfig);

// For Java, use GenerativeModelFutures if you prefer ListenableFuture
GenerativeModelFutures generativeModelFutures = GenerativeModelFutures.from(generativeModel);
Futures.addCallback(
    generativeModelFutures.checkStatus(),
    new FutureCallback<Integer>() {
        @Override
        public void onSuccess(Integer status) {
            if (status == FeatureStatus.AVAILABLE) {
                // Proceed with inference
            } else if (status == FeatureStatus.DOWNLOADING) {
                // Specified preview model is downloading
            } else if (status == FeatureStatus.DOWNLOADABLE) {
                // Specified preview model is available for this device, but not downloaded yet.
                // Call generativeModelFutures.download(callback) or use the AICore app.
            } else if (status == FeatureStatus.UNAVAILABLE) {
                // Specified preview model is not available on this device
            }
        }

        @Override
        public void onFailure(Throwable t) {
            // Handle failure
        }
    },
    ContextCompat.getMainExecutor(context));

将来の構成との前方互換性を確保するため、SDK はクライアントの初期化中に GenAiException をスローしないように設計されており、可用性の検証には checkStatus() メソッドのみを使用します。

ベスト プラクティス

  • フォールバック戦略を実装する: プレビュー モデルはすべてのデバイスで利用できるとは限らないため、常にフォールバック戦略を実装してください。プレビュー構成に対して checkStatus()false を返す場合、アプリは ModelReleaseStage.STABLEModelPreference.FULL に適切に戻る必要があります。
  • 開発と本番環境にモデル リリース ステージを使用する: 開発と内部テストでプレビュー ステージを使用して、今後のモデルの改善を評価します。一般公開のプロダクション リリースでは、安定版に切り替えて、ユーザーの動作の一貫性を確保します。

既知の問題

  • プレビュー リリース ステージの一部のデバイスでは、出力で複数の候補がサポートされず、candidateCount が 1 より大きい値に設定されているとエラーが返されます。詳しくは、API リファレンスをご覧ください。
  • 一部の実装では、複数のサンプルはサポートされていません。パフォーマンスは最終的なプロダクションよりも遅くなります。
  • 画像入力は現在、Google Pixel 10 でのみご利用いただけます。
  • nanov4-fast モデルは、一部のデバイスで特定のプロンプトに対して不適切な回答を返すことがあります。