Model seçme

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 ModelConfig kullanarak GenerativeModel ö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çin false döndürürse uygulamanız sorunsuz bir şekilde ModelReleaseStage.STABLE ve ModelPreference.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 candidateCount değ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.