Pilih model

Prompt API memungkinkan Anda memilih secara eksplisit versi Gemini Nano yang digunakan oleh aplikasi Anda. Dengan mengonfigurasi tahap rilis model dan preferensi performa, Anda dapat mengakses kemampuan model baru lebih awal atau mengoptimalkan aplikasi untuk batasan hardware tertentu.

Memahami konfigurasi model

Untuk memilih model tertentu, Anda harus mengonfigurasi dua parameter utama dalam kelas ModelConfig: tahap rilis dan preferensi model.

Tahapan rilis

Tahap rilis memungkinkan Anda memilih antara model stabil atau pratinjau:

  • Stabil (ModelReleaseStage.STABLE): Memilih versi model terbaru yang diuji sepenuhnya dan tersedia di perangkat konsumen. Setelan ini adalah setelan default.
  • Pratinjau (ModelReleaseStage.PREVIEW): Memilih versi model terbaru dalam tahap pratinjau. Tahap ini memungkinkan Anda menguji fitur beta atau arsitektur model yang lebih baru sebelum di-deploy secara luas ke tahap stabil.

Untuk mengetahui prasyarat dan petunjuk pendaftaran untuk pratinjau developer, lihat panduan Pratinjau Developer AICore.

Preferensi model

Preferensi model memungkinkan Anda menentukan karakteristik performa mana yang paling penting untuk kasus penggunaan Anda.

  • Penuh (ModelPreference.FULL): Preferensi ini direkomendasikan jika akurasi model dan kemampuan penuh lebih diprioritaskan daripada kecepatan.
  • Cepat (ModelPreference.FAST): Preferensi ini direkomendasikan untuk aplikasi yang sensitif terhadap latensi dan memerlukan waktu respons minimal.

Mengonfigurasi model generatif

Untuk menggunakan varian model tertentu, Anda harus menentukan ModelConfig dan meneruskannya ke GenerationConfig saat menginisialisasi klien.

Contoh berikut menunjukkan cara mengonfigurasi klien untuk menggunakan model Fast dari tahap Pratinjau:

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

Memeriksa ketersediaan model

Tidak semua perangkat mendukung setiap kombinasi tahap rilis dan preferensi model. Model pratinjau hanya tersedia di daftar perangkat yang didukung dalam panduan Pratinjau Developer AICore.

API tidak menyediakan metode untuk mencantumkan semua konfigurasi model yang tersedia di awal. Sebagai gantinya, lakukan inisialisasi klien dengan konfigurasi yang Anda inginkan, lalu verifikasi statusnya.

  • Lakukan inisialisasi klien: Buat instance GenerativeModel menggunakan ModelConfig pilihan Anda.
  • Periksa status: Panggil metode checkStatus() pada instance untuk memverifikasi bahwa varian model tertentu tersedia di perangkat.

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

Untuk memastikan kompatibilitas ke depan dengan potensi konfigurasi mendatang, SDK dirancang untuk menghindari pengecualian GenAiException selama inisialisasi klien, dan hanya mengandalkan metode checkStatus() untuk verifikasi ketersediaan.

Praktik terbaik

  • Terapkan strategi penggantian: Karena model pratinjau tidak dijamin tersedia di semua perangkat, selalu terapkan strategi penggantian. Jika checkStatus() menampilkan false untuk konfigurasi pratinjau, aplikasi Anda harus melakukan roll back dengan benar ke ModelReleaseStage.STABLE dan ModelPreference.FULL.
  • Gunakan tahap rilis model untuk pengembangan dan produksi: Gunakan tahap Pratinjau selama pengembangan dan pengujian internal untuk mengevaluasi peningkatan model mendatang. Beralihlah ke Stabil untuk rilis produksi publik Anda guna memastikan perilaku yang konsisten bagi pengguna Anda.

Masalah umum

  • Untuk beberapa perangkat dalam tahap rilis pratinjau, perangkat tersebut tidak akan mendukung beberapa kandidat dalam output dan akan menampilkan error jika candidateCount ditetapkan lebih besar dari 1. Lihat referensi API untuk mengetahui detail selengkapnya.
  • Beberapa sampel tidak didukung pada beberapa penerapan. Performa akan lebih lambat daripada produksi akhir.
  • Input gambar saat ini hanya berfungsi di Pixel 10.
  • Model nanov4-fast mungkin memberikan respons yang buruk untuk perintah tertentu di beberapa perangkat.