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
GenerativeModelmenggunakanModelConfigpilihan 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()menampilkanfalseuntuk konfigurasi pratinjau, aplikasi Anda harus melakukan roll back dengan benar keModelReleaseStage.STABLEdanModelPreference.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
candidateCountditetapkan 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-fastmungkin memberikan respons yang buruk untuk perintah tertentu di beberapa perangkat.