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


Bu sayfada, karma ve cihaz üzerinde 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, önce cihaz üzerinde çıkarım yapmayı deneme ve ardından bulutta barındırılan modele geçme işleminin nasıl uygulanacağı gösterilmektedir. Bu, uygulayabileceğiniz "çıkarım modlarından" yalnızca biridir.

Karma çıkarım

  • Cihaz üzerinde çıkarımı tercih etme: primary değerini bir "sistem" modeline, secondary değerini ise bir bulut modeline ayarlayın.

    Mevcutsa ve istek türünü destekliyorsa cihaz üzerindeki modeli kullanmaya çalışır. Aksi takdirde, cihazda bir hata kaydı oluşturulur ve otomatik olarak bulutta barındırılan modele geri dönülür.

    // Imports + initialization of Gemini API backend service
    // ...
    
    // Initialize a cloud model that supports your use case
    let cloudModel = ai.geminiModel(name: "GEMINI_MODEL_NAME")
    // Initialize an on-device model that supports your use case
    let systemModel = FirebaseAI.SystemLanguageModel.default
    
    // Create a GenerativeModelSession with a hybrid model.
    // Provide your preferred model as `primary` and your fallback model as `secondary`
    // Attempt to use the on-device model; otherwise, fall back to the cloud-hosted model.
    let session = ai.generativeModelSession(
      model: .hybridModel(primary: systemModel, secondary: cloudModel)
    )
    
  • Bulutta çıkarımı tercih etme: primary değerini bir bulut modeline, secondary değerini ise bir "sistem" modeline ayarlayın.

    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ülür. Diğer tüm hata durumlarında bir istisna oluşturun.

    // Imports + initialization of Gemini API backend service
    // ...
    
    // Initialize a cloud model that supports your use case
    let cloudModel = ai.geminiModel(name: "GEMINI_MODEL_NAME")
    // Initialize an on-device model that supports your use case
    let systemModel = FirebaseAI.SystemLanguageModel.default
    
    // Create a GenerativeModelSession with a hybrid model.
    // Provide your preferred model as `primary` and your fallback model as `secondary`
    // Attempt to use the cloud-hosted model; otherwise, fall back to the on-device model.
    let session = ai.generativeModelSession(
      model: .hybridModel(primary: cloudModel, secondary: systemModel)
    )
    

Yalnızca cihaz üzerinde veya yalnızca bulutta çıkarım

SDK yalnızca tek bir model ayarlanmasını destekler. Bu nedenle SDK, yalnızca cihaz üzerinde veya bulutta çıkarım yapmaya çalışır. Ayrıca bu kullanım alanı için HybridModel oluşturmazsınız. Ancak karma bir deneyim için HybridModel oluşturmanız ve hem primary hem de secondary modellerini ayarlamanız gerekir (yukarıda açıklandığı gibi).

  • Yalnızca cihaz üzerinde çıkarım: model değerini "sistem" modeli olarak ayarlayın. Bu kullanım alanı için HybridModel oluşturmazsınız.

    Mevcutsa ve istek türünü destekliyorsa cihaz üzerindeki modeli kullanmaya çalışır. Aksi takdirde bir istisna oluşturun.

    // Imports + initialization of Gemini API backend service
    // ...
    
    // Initialize an on-device model that supports your use case
    let systemModel = FirebaseAI.SystemLanguageModel.default
    
    // Create a GenerativeModelSession with the on-device model.
    let session = ai.generativeModelSession(
      model: systemModel
    )
    
  • Yalnızca bulutta çıkarım: model değerini bir bulut modeli olarak ayarlayın. Bu kullanım alanı için HybridModel oluşturmazsınız.

    Cihaz internete bağlıysa ve model kullanılabiliyorsa bulutta barındırılan modeli kullanmaya çalışır. Aksi takdirde bir istisna oluşturun.

    // Imports + initialization of Gemini API backend service
    // ...
    
    // Initialize a cloud model that supports your use case
    let cloudModel = ai.geminiModel(name: "GEMINI_MODEL_NAME")
    
    // Create a GenerativeModelSession with a cloud model.
    let session = ai.generativeModelSession(
      model: cloudModel
    )
    

Cihaz üzerinde modelin kullanılabilir olup olmadığını kontrol etme

Cihaz üzerinde kullanılabilirliğin manuel olarak kontrol edilmesi yalnızca bu bilgileri kullanıcıya göstermek veya son kullanıcılardan cihaz üzerinde modeli indirmek için işlem yapmalarını istemek istiyorsanız gereklidir. Cihaz üzerinde model kullanılamıyorsa ve primary parametresini cihaz üzerinde bir modele, secondary parametresini ise bulut modeline ayarladıysanız SDK otomatik olarak bulutta barındırılan modeli kullanır.

Cihaz üzerindeki modelin gerçekten kullanılabilir olup olmadığını manuel olarak kontrol etmek için isAvailable özelliğini inceleyin:

if FirebaseAI.SystemLanguageModel.default.isAvailable {
  // The on-device model is ready to use.
} else {
  // The on-device model is unavailable.
}

Cihaz üzerinde model kullanılabilirliğinin belirli nedenlerini kontrol etmek için availability özelliğini inceleyin:

switch FirebaseAI.SystemLanguageModel.default.availability {
case .available:
  // The on-device model is ready to use.
  break
case .unavailable(.deviceNotEligible):
  // This device does not support Apple Intelligence.
  break
case .unavailable(.appleIntelligenceNotEnabled):
  // The user has not enabled Apple Intelligence in Settings.
  break
case .unavailable(.modelNotReady):
  // The model is still being downloaded.
  break
case let .unavailable(reason):
  // The model is unavailable due to the specified `reason`.
  break
}

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

HybridModel kullanıyorsanız (ve hem primary hem de secondary modellerini ayarladıysanız) belirli bir istek için hangi modelin kullanıldığını bilmek faydalı olabilir. Bu bilgi, her yanıttaki rawResponse öğesinin modelVersion özelliği tarafından sağlanır.

Bu özelliğe eriştiğinizde döndürülen değer aşağıdakilerden biri olur:

  • Kullanılan bulutta barındırılan model: model adı (ör. gemini-3.1-flash-lite)
  • Kullanılan cihaz üzerindeki model: apple-foundation-models-system-language-model
// let response = try await session.respond(to: ...

print("You used: \(response.rawResponse.modelVersion)")

print(response.content)

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

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 çalışan modeller farklı yapılandırma seçenekleri sunar (bulut ve cihaz üzerinde çalışan parametreleri).

Bu seçenekler, modele gönderilen her istek için yapılandırılır.

Aşağıda, karma çıkarım için bulutta barındırılan ve cihaz üzerinde modellerin yapılandırmalarını belirleyen bir örnek verilmiştir:

// ...

let response = try await session.respond(
  to: "Why is the sky blue?",
  options: .hybrid(
    // Config for cloud-hosted model
    gemini: GenerationConfig(
      temperature: 0.8,
      topP: 0.9,
      thinkingConfig: ThinkingConfig(thinkingLevel: .high)
    ),
    // Config for on-device model
    foundationModels: FirebaseAI.GenerationOptions(
      sampling: .random(probabilityThreshold: 0.9),
      temperature: 0.8
    )
  )
)

// ...


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