モデルを選択

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

モデル構成を理解する

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

リリース ステージ

リリース ステージでは、安定版モデルまたはプレビュー版モデルを選択できます。

  • 安定版(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.STABLE と ModelPreference.FULL に適切に戻る必要があります。
  • 開発と本番環境にモデルのリリース ステージを使用する: 開発と内部テスト中にプレビュー ステージを使用して、今後のモデルの推定改善率を評価します。ユーザーに一貫した動作を提供するには、公開製品版リリースを Stable に切り替えます。

既知の問題

  • プレビュー リリース段階の一部のデバイスでは、出力で複数の候補がサポートされず、candidateCount が 1 より大きい値に設定されているとエラーが返されます。詳細については、API リファレンスをご覧ください。
  • 一部の実装では、複数のサンプルはサポートされていません。パフォーマンスは最終的な本番環境よりも遅くなります。