Android uygulamalarındaki karma deneyimler için yapılandırma seçenekleri


Bu sayfada, karma deneyimler için aşağıdaki yapılandırma seçenekleri açıklanmaktadır:

Karma deneyimler oluşturmaya yönelik başlangıç kılavuzunu tamamladığınızdan emin olun.

Çıkarım modu ayarlama

Başlangıç kılavuzundaki örneklerde PREFER_ON_DEVICE modu kullanılmaktadır ancak bu, mevcut dört çıkarım modundan yalnızca biridir.

Kullanabileceğiniz çıkarım modları şunlardır:

  • PREFER_ON_DEVICE: Varsa ve istek türünü destekliyorsa cihaz üzerinde modeli kullanmaya çalışın. Aksi takdirde, cihazda bir hata kaydedin ve ardından otomatik olarak bulutta barındırılan modele geri dönün.

    Kotlin

    val config = OnDeviceConfig(mode = InferenceMode.PREFER_ON_DEVICE)
    

    Java

    InferenceMode mode = InferenceMode.PREFER_ON_DEVICE;
    OnDeviceConfig config = new OnDeviceConfig(mode);
    
  • ONLY_ON_DEVICE: Cihaz üzerinde model varsa ve istek türünü destekliyorsa bu modeli kullanmayı deneyin. Aksi takdirde istisna oluşturun.

    Kotlin

    val config = OnDeviceConfig(mode = InferenceMode.ONLY_ON_DEVICE)
    

    Java

    InferenceMode mode = InferenceMode.ONLY_ON_DEVICE;
    OnDeviceConfig config = new OnDeviceConfig(mode);
    
  • PREFER_IN_CLOUD: Cihaz internete bağlıysa ve model kullanılabiliyorsa bulutta barındırılan modeli kullanmaya çalışır. Cihaz çevrimdışıysa cihaz üzerinde modele geri dönün. Diğer tüm hata durumlarında bir istisna oluşturun.

    Kotlin

    val config = OnDeviceConfig(mode = InferenceMode.PREFER_IN_CLOUD)
    

    Java

    InferenceMode mode = InferenceMode.PREFER_IN_CLOUD;
    OnDeviceConfig config = new OnDeviceConfig(mode);
    
  • ONLY_IN_CLOUD: Cihaz internete bağlıysa ve model kullanılabiliyorsa bulutta barındırılan modeli kullanmaya çalışır. Aksi takdirde bir istisna oluşturun.

    Kotlin

    val config = OnDeviceConfig(mode = InferenceMode.ONLY_IN_CLOUD)
    

    Java

    InferenceMode mode = InferenceMode.ONLY_IN_CLOUD;
    OnDeviceConfig config = new OnDeviceConfig(mode);
    

Cihaz üzerinde veya bulutta çıkarım yapılıp yapılmadığını belirleme

Çıkarım modunuz PREFER_ON_DEVICE veya PREFER_IN_CLOUD ise belirli istekler için hangi modun kullanıldığını bilmek faydalı olabilir. Bu bilgiler, her yanıtın inferenceSource özelliği tarafından sağlanır.

Bu özelliğe eriştiğinizde döndürülen değer ON_DEVICE veya IN_CLOUD olur.

Kotlin

// ...

print("You used: ${result.response.inferenceSource}")

print(result.response.text)

Java

// ...

System.out.println("You used: " + result.getResponse().getInferenceSource());

System.out.println(result.getResponse().getText());

Kullanılacak modeli belirtme

Bu sayfada sağlayıcıya özel içerikleri ve kodları görüntülemek için Gemini API sağlayıcınızı tıklayın.

generativeModel örneğini oluştururken kullanılacak bir model belirleyebilirsiniz (Kotlin | Java).

  • Bulutta barındırılan bir model belirtme:

    • Çıkarım modunuz PREFER_ON_DEVICE, PREFER_IN_CLOUD veya ONLY_IN_CLOUD ise kullanılacak bulutta barındırılan bir modeli açıkça belirtmeniz gerekir. SDK'nın varsayılan bir bulutta barındırılan modeli yoktur.

    • Desteklenen tüm bulutta barındırılan Gemini modellerinin model adlarını bulun.

  • Cihaz üzerinde bir model belirtin:

    • Çıkarım modunuz PREFER_ON_DEVICE, PREFER_IN_CLOUD veya ONLY_ON_DEVICE ise onDeviceConfig içinde kullanılacak cihaz üzerinde model "kategorisini" isteğe bağlı olarak belirtebilirsiniz. Kategoriler, yayın aşaması ve performans özelliklerinin bir kombinasyonudur.

    • Desteklenen kategori değerleri aşağıda listelenmiştir.
      AICore, belirtilen kategorinin koşullarını karşılayan ve cihaz tarafından desteklenen cihaz üzerinde modeli otomatik olarak seçer. Örneğin, PREVIEW belirtirseniz ve cihaz Pixel 9 ise Gemini Nano 4 Full [Önizleme] (nano-v4-full) muhtemelen otomatik olarak seçilir.

      • STABLE: Cihaz üzerinde çalışan en yeni kararlı model.

        • Tamamen test edilmiş ve tüketici cihazlarında kullanıma sunulmuş olmalıdır.

        • Örneğin, Gemini Nano 3 (nano-v3) veya Gemini Nano 2 (nano-v2).

        • OnDeviceModelOption belirtilmezse cihaz üzerinde model için varsayılan ayar.

      • PREVIEW: Tam performans özelliklerine sahip en yeni önizleme cihaz üzerinde modeli.

        • Daha yüksek akıl yürütme gücü ve karmaşık görevler için tasarlanmıştır.

        • Örneğin, Gemini Nano 4 Full [Önizleme] (nano-v4-full, Gemma 4 E4B'ye dayanır).

      • PREVIEW_FAST: Hızlı olan en yeni önizleme cihaz üzerinde modeli.

        • Maksimum hız ve daha düşük gecikme için optimize edilmiştir.

        • Örneğin, Gemini Nano 4 Fast [Önizleme] (nano-v4-fast, Gemma 4 E2B'yi temel alır).

Kotlin

val model = Firebase.ai(backend = GenerativeBackend.googleAI())
    .generativeModel(
        // Specify a cloud-hosted model.
        // Required for `PREFER_ON_DEVICE`, `PREFER_IN_CLOUD`, and `ONLY_IN_CLOUD` inference modes.
        modelName = "CLOUD_MODEL_NAME",
        onDeviceConfig = OnDeviceConfig(
            mode = InferenceMode.INFERENCE_MODE,
            // (Optional) Specify an on-device model category.
            // AICore will auto-select an on-device model based on this category.
            // If not specified, AICore will auto-select the default stable on-device model.
            modelOption = OnDeviceModelOption.ON-DEVICE_MODEL_CATEGORY)
    )

Java

GenerativeModel ai = FirebaseAI.getInstance(GenerativeBackend.googleAI())
    .generativeModel(
        // Specify a cloud-hosted model.
        // Required for `PREFER_ON_DEVICE`, `PREFER_IN_CLOUD`, and `ONLY_IN_CLOUD` inference modes.
        "CLOUD_MODEL_NAME",
        /* config = */ null,
        /* safetySettings = */ null,
        /* tools = */ null,
        /* toolConfig = */ null,
        /* systemInstruction = */ null,
        /* requestOptions = */ new RequestOptions(),
        new OnDeviceConfig(
                /* mode = */ InferenceMode.INFERENCE_MODE,
                /* maxOutputTokens = */ null,
                /* temperature = */ null,
                /* topK = */ null,
                /* seed = */ null,
                /* candidateCount = */ 1,
                // (Optional) Specify an on-device model category.
                // AICore will auto-select an on-device model based on this category.
                // If not specified, AICore will auto-select the default stable on-device model.
                /* modelOption = */ OnDeviceModelOption.ON-DEVICE_MODEL_CATEGORY)
    );

GenerativeModelFutures model = GenerativeModelFutures.from(ai);

Yanıtları kontrol etmek için model yapılandırmasını kullanma

Bu sayfada sağlayıcıya özel içerikleri ve kodları görüntülemek için Gemini API sağlayıcınızı tıklayın.

Bir modele gönderdiğiniz her istekte, modelin nasıl yanıt üreteceğini kontrol etmek için bir model yapılandırması gönderebilirsiniz. Bulutta barındırılan modeller ve cihaz üzerinde modeller farklı şekilde yapılandırılır ve farklı yapılandırma seçenekleri sunar:

  • Bulutta barındırılan modeller: Yapılandırmayı generationConfig (Kotlin | Java) kullanarak ayarlayın. Kullanılabilir parametreler hakkında bilgi edinin.

  • Cihaz üzerinde modeller: Yapılandırmayı onDeviceConfig (Kotlin | Java) kullanarak ayarlayın. Kullanılabilir parametreler hakkında bilgi edinin (Kotlin | Java).

Yapılandırma, örneğin kullanım ömrü boyunca korunur. Farklı bir yapılandırma kullanmak istiyorsanız bu yapılandırmayla yeni bir GenerativeModel örneği oluşturun.

Aşağıda, PREFER_ON_DEVICE çıkarım modu ayarlanırsa kullanılabilecek bulutta barındırılan ve cihaz üzerinde modellerin yapılandırmalarını ayarlayan bir örnek verilmiştir:

Kotlin

// Config for cloud-hosted model
val generationConfig = generationConfig {
    maxOutputTokens = 200
    stopSequences = listOf("red")
}

// Config for on-device model
val onDeviceConfig = OnDeviceConfig(
    mode = InferenceMode.PREFER_ON_DEVICE,
    maxOutputTokens = 200
)

val model = Firebase.ai(backend = GenerativeBackend.googleAI())
    .generativeModel(
        modelName = "CLOUD_MODEL_NAME",
        generationConfig = generationConfig,
        onDeviceConfig = onDeviceConfig
    )

Java

// Config for cloud-hosted model
GenerationConfig generationConfig = new GenerationConfig.Builder()
    .setMaxOutputTokens(200)
    .setStopSequences(List.of("red"))
    .build();

// Config for on-device model
OnDeviceConfig onDeviceConfig = new OnDeviceConfig(
    /* mode = */ InferenceMode.PREFER_ON_DEVICE,
    /* maxOutputTokens = */ 200,
    /* temperature = */ null,
    /* topK = */ null,
    /* seed = */ null,
    /* candidateCount = */ 1,
    /* modelOption = */ null
);

GenerativeModel ai = FirebaseAI.getInstance(GenerativeBackend.googleAI())
    .generativeModel(
        "CLOUD_MODEL_NAME",
        generationConfig,
        /* safetySettings = */ null,
        /* tools = */ null,
        /* toolConfig = */ null,
        /* systemInstruction = */ null,
        /* requestOptions = */ new RequestOptions(),
        onDeviceConfig
    );

GenerativeModelFutures model = GenerativeModelFutures.from(ai);


Firebase AI Logic ile ilgili deneyiminiz hakkında geri bildirimde bulunun