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


Bu sayfada, hibrit 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ı denemenin, ardından bulutta barındırılan modele geri dönmenin nasıl uygulanacağı gösterilmektedir. Bu, uygulayabileceğiniz "çıkarım modlarından" yalnızca biridir.

Karma çıkarım

  • Cihaz üzerinde çıkarım tercih et: primary değerini "sistem" modeli, secondary değerini ise bulut modeli olarak ayarlayın.

    Cihaz üzerinde model varsa ve istek türünü destekliyorsa bu modeli kullanmayı deneyin. Aksi takdirde, cihazda bir hata kaydedin ve ardından otomatik olarak bulutta barındırılan modele geri dönün.

    // 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 yapmayı tercih et: primary değerini bir bulut modeli, secondary değerini ise "sistem" modeli olarak ayarlayın.

    Cihaz çevrimiçiyse ve model kullanılabiliyorsa bulutta barındırılan modeli kullanmayı deneyin. Cihaz çevrimdışıysa cihaz üzerindeki modele geri dönün. Diğer tüm hata durumlarında 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 ayarlamayı destekler. Bu nedenle SDK, yalnızca cihaz üzerinde veya bulutta çıkarım yapmayı dener. 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 "system" modeline ayarlayın. Bu kullanım alanı için HybridModel oluşturmazsınız.

    Cihaz üzerinde model varsa ve istek türünü destekliyorsa bu modeli kullanmayı deneyin. 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 öğesini bir bulut modeli olarak ayarlayın. Bu kullanım alanı için HybridModel oluşturmazsınız.

    Cihaz çevrimiçiyse ve model kullanılabiliyorsa bulutta barındırılan modeli kullanmayı deneyin. Aksi takdirde hata verin.

    // 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ılabilirlik için manuel kontroller yalnızca bu bilgiyi kullanıcıya göstermek veya son kullanıcılardan cihaz üzerinde modeli indirmelerini istemek istiyorsanız gereklidir. Cihaz üzerinde model kullanılamıyorsa ve primary cihaz üzerinde bir modele, secondary ise bulut modeline ayarlanmışsa SDK otomatik olarak bulutta barındırılan modeli kullanmaya geri döner.

Apple Intelligence'ı etkinleştirmesini (böylece cihaz üzerinde model indirme işlemini tetiklemesini) isteyebilirsiniz.

Cihaz üzerinde 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 belirli model kullanılabilirliği 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 mi yoksa bulutta mı çıkarım yapıldığını belirleme

HybridModel kullanıyorsanız (hem primary hem de secondary modellerini ayarladıysanız) belirli bir istek için hangi modelin kullanıldığını bilmek faydalı olabilir. Bu bilgiler, her yanıtta rawResponse mülkünün 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)
  • Cihaz üzerinde kullanılan 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 istekle birlikte, modelin nasıl yanıt oluşturacağını kontrol etmek için bir model yapılandırması gönderebilirsiniz. Bulutta barındırılan modeller ve cihaz üzerinde modeller farklı yapılandırma seçenekleri sunar (bulut ve cihaz üzerinde parametreleri).

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

Hibrit çıkarım için bulutta barındırılan ve cihaz üzerinde modellerin yapılandırmalarını ayarlayan bir örneği aşağıda bulabilirsiniz:

// ...

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 bildirim verme