Model seçme

İstem API'si, uygulamanız tarafından kullanılan Gemini Nano sürümünü açıkça seçmenize olanak tanır. Model yayın 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 modeli seçmek için ModelConfig sınıfında iki temel parametreyi yapılandırmanız gerekir: release stage (yayın aşaması) ve model preference (model tercihi).

Yayınlama aşamaları

Yayın 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 son model sürümünü seçer. Bu aşama, beta özellikleri veya daha yeni model mimarileri kararlı aşamada yaygın olarak dağıtılmadan önce test etmenize olanak tanır.

Geliştirici önizlemesi için ön koşullar ve kayıt talimatları hakkında bilgi edinmek istiyorsanız AICore Geliştirici Önizlemesi Kılavuzu'na bakın.

Model tercihi

Model tercihi, kullanım alanınız için hangi performans özelliklerinin en önemli olduğunu 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üresi gerektiren ve gecikmeye duyarlı uygulamalar için önerilir.

Üretken modeli yapılandırma

Belirli bir model varyantını kullanmak için 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);

Modelin kullanılabilirliğini kontrol etme

Bazı cihazlar, yayın 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 kullanılabilir.

API, tüm kullanılabilir model yapılandırmalarını önceden listelemek için bir yöntem sağlamaz. Bunun yerine, istemciyi istediğiniz yapılandırmayla başlatın ve ardından durumunu doğrulayın.

  • İstemciyi başlatın: Tercih ettiğiniz ModelConfig kullanarak GenerativeModel örneğini oluşturun.
  • Durumu kontrol edin: Belirli model varyantının cihazda kullanılabilir olduğunu doğrulamak için örnek üzerinde 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));

SDK, gelecekteki olası yapılandırmalarla ileriye dönük uyumluluğu sağlamak için istemci başlatma sırasında GenAiException oluşturmayı önleyecek ş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. Önizleme yapılandırması için checkStatus() false döndürülürse uygulamanız ModelReleaseStage.STABLE ve ModelPreference.FULL'ye sorunsuz bir şekilde geri dönmelidir.
  • Geliştirme ve üretim için model yayınlama aşamalarını kullanma: Geliştirme ve dahili test sırasında önizleme aşamasını kullanarak yaklaşan model iyileştirmelerini değerlendirin. Kullanıcılarınızın tutarlı bir deneyim yaşamasını sağlamak için herkese açık üretim sürümlerinizde Kararlı'ya geçin.

Bilinen sorunlar

  • Önizleme sürümü aşamasındaki bazı cihazlar, çıkışta birden fazla aday göstermeyi desteklemez ve candidateCount değeri 1'den büyük ayarlanırsa hata döndürür. Daha fazla bilgi için API referansı bölümüne bakın.
  • Bazı uygulamalarda birden fazla örnek desteklenmez. Performans, nihai üretimden daha yavaş olacaktır.
  • Görüntü girişi şu anda yalnızca Pixel 10'da çalışmaktadır.
  • nanov4-fast modeli, bazı cihazlarda belirli istemlere kötü yanıtlar verebilir.