Doğrudan model erişimi, uygulamanızın kullandığı Gemini Nano sürümünü açıkça seçmenize olanak tanır. Model yayınlama aşamasını ve performans tercihini yapılandırarak yeni model özelliklerine daha erken erişebilir veya uygulamanızı belirli donanım kısıtlamaları için optimize edebilirsiniz.
Model yapılandırmalarını anlama
Belirli bir model seçmek için ModelConfig sınıfında iki temel parametreyi yapılandırmanız gerekir: sürüm aşaması ve model tercihi.
Yayın aşamaları
Sürüm aşaması, kararlı veya önizleme modeli arasında seçim yapmanıza olanak tanır:
- Kararlı (
ModelReleaseStage.STABLE): Tam olarak test edilmiş ve tüketici cihazlarında bulunan en son model sürümünü seçer. Bu, varsayılan ayardır. - Önizleme (
ModelReleaseStage.PREVIEW): Önizleme aşamasındaki en yeni model sürümünü seçer. Bu aşama, beta özelliklerini veya daha yeni model mimarilerini kararlı aşamada geniş çapta dağıtılmadan önce test etmenize olanak tanır.
Geliştirici Önizlemesi'nin ön koşulları ve kayıt talimatları için AICore Geliştirici Önizlemesi kılavuzuna bakın.
Model tercihi
Model tercihi, kullanım alanınız için en önemli performans özelliklerini belirtmenize olanak tanır.
- Tam (
ModelPreference.FULL): Model doğruluğu ve tüm özellikler hıza göre önceliklendirildiğinde bu tercih önerilir. - Hızlı (
ModelPreference.FAST): Bu tercih, minimum yanıt süreleri gerektiren gecikmeye duyarlı uygulamalar için önerilir.
Üretken modeli yapılandırma
Belirli bir model varyantını kullanmak için bir ModelConfig tanımlamanız ve istemciyi başlatırken bunu GenerationConfig öğenize iletmeniz gerekir.
Aşağıdaki örnekte, istemcinin Önizleme aşamasındaki bir Hızlı modeli kullanacak şekilde nasıl yapılandırılacağı gösterilmektedir:
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);
Model kullanılabilirliğini kontrol etme
Bazı cihazlar, sürüm aşaması ve model tercihi kombinasyonlarının tümünü desteklemez. Önizleme modelleri yalnızca AICore Geliştirici Önizlemesi kılavuzundaki desteklenen cihazlar listesinde yer alan cihazlarda kullanılabilir.
API, mevcut tüm model yapılandırmalarını önceden listeleyen bir yöntem sunmaz. Bunun yerine, istemciyi istediğiniz yapılandırmayla başlatın ve ardından durumunu doğrulayın.
- İstemciyi başlatma: Tercih ettiğiniz
ModelConfigkullanarakGenerativeModelörneğini oluşturun. Durumu kontrol etme: Belirli bir model varyantının cihazda kullanılabilir olduğunu doğrulamak için örnekte
checkStatus()yöntemini çağırın.
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));
Gelecekteki olası yapılandırmalarla ileriye dönük uyumluluk sağlamak için SDK, istemci başlatma sırasında GenAiException hatası vermeyecek şekilde tasarlanmıştır ve kullanılabilirlik doğrulaması için yalnızca checkStatus() yöntemini kullanır.
En iyi uygulamalar
- Yedek stratejiler uygulayın: Önizleme modellerinin tüm cihazlarda kullanılabileceği garanti edilmediğinden her zaman bir yedek strateji uygulayın.
checkStatus(), bir önizleme yapılandırması içinfalsedöndürürse uygulamanız sorunsuz bir şekildeModelReleaseStage.STABLEveModelPreference.FULL'ye geri dönmelidir. - Geliştirme ve üretim için model sürüm aşamalarını kullanın: Geliştirme ve dahili test sırasında, gelecekteki model iyileştirmelerini değerlendirmek için Önizleme aşamasını kullanın. Kullanıcılarınıza tutarlı bir deneyim sunmak için herkese açık üretim sürümlerinizde Kararlı kanalına geçin.
Bilinen sorunlar
- Önizleme sürümü aşamasındaki bazı cihazlar, çıkışta birden fazla adayı desteklemez ve
candidateCountdeğeri 1'den büyük olarak ayarlanırsa hata döndürür. Daha fazla bilgi için API referansına bakın. - Bazı uygulamalarda birden fazla örnek desteklenmez. Performans, son üretimden daha yavaş olacaktır.