Apple के ऐप्लिकेशन में हाइब्रिड अनुभवों के लिए कॉन्फ़िगरेशन के विकल्प


इस पेज पर, हाइब्रिड और डिवाइस पर मौजूद डेटा को इस्तेमाल करने वाले अनुभवों के लिए, कॉन्फ़िगरेशन के इन विकल्पों के बारे में बताया गया है:

पक्का करें कि आपने हाइब्रिड अनुभव बनाने के शुरुआती निर्देश पढ़ लिए हों.

"अनुमान लगाने का मोड" सेट करना

शुरू करने से जुड़ी गाइड में दिए गए उदाहरणों में, यह दिखाया गया है कि सबसे पहले डिवाइस पर मौजूद मॉडल का इस्तेमाल कैसे किया जाता है. इसके बाद, क्लाउड पर होस्ट किए गए मॉडल का इस्तेमाल कैसे किया जाता है. यह उपलब्ध "अनुमान लगाने के मोड" में से सिर्फ़ एक है, जिसे लागू किया जा सकता है.

हाइब्रिड इन्फ़रेंस

  • डिवाइस पर मौजूद मॉडल को प्राथमिकता दें: primary को "सिस्टम" मॉडल पर और secondary को क्लाउड मॉडल पर सेट करें.

    अगर डिवाइस पर मौजूद मॉडल उपलब्ध है और वह अनुरोध के टाइप के साथ काम करता है, तो उसका इस्तेमाल करने की कोशिश करें. ऐसा न होने पर, डिवाइस पर गड़बड़ी लॉग करें. इसके बाद, क्लाउड पर होस्ट किए गए मॉडल पर अपने-आप वापस आ जाएं.

    // 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)
    )
    
  • क्लाउड में मौजूद मॉडल को प्राथमिकता दें: primary को क्लाउड मॉडल पर और secondary को "सिस्टम" मॉडल पर सेट करें.

    अगर डिवाइस ऑनलाइन है और मॉडल उपलब्ध है, तो क्लाउड पर होस्ट किए गए मॉडल का इस्तेमाल करने की कोशिश करें. अगर डिवाइस ऑफ़लाइन है, तो डिवाइस पर मौजूद मॉडल का इस्तेमाल करें. अन्य सभी मामलों में, अपवाद थ्रो करें.

    // 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)
    )
    

सिर्फ़ डिवाइस पर या सिर्फ़ क्लाउड में अनुमान लगाने की सुविधा

एसडीके टूल, model को सिर्फ़ एक बार सेट करने की सुविधा देता है. इसका मतलब है कि एसडीके टूल, डिवाइस पर या क्लाउड में मौजूद डेटा के आधार पर अनुमान लगाने की कोशिश सिर्फ़ एक बार करेगा. साथ ही, इस इस्तेमाल के उदाहरण के लिए HybridModel नहीं बनाया जाता. हालांकि, हाइब्रिड अनुभव के लिए, आपको HybridModel बनाना होगा. साथ ही, primary और secondary, दोनों मॉडल सेट करने होंगे. इसका तरीका ऊपर बताया गया है.

  • सिर्फ़ डिवाइस पर अनुमान लगाने की सुविधा: model को "सिस्टम" मॉडल पर सेट करें. इस इस्तेमाल के उदाहरण के लिए, HybridModel नहीं बनाया जाता.

    अगर डिवाइस पर मौजूद मॉडल उपलब्ध है और वह अनुरोध के टाइप के साथ काम करता है, तो उसका इस्तेमाल करने की कोशिश करें. इसके अलावा, अपवाद दिखाएं.

    // 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
    )
    
  • सिर्फ़ क्लाउड में मौजूद मॉडल से अनुमान पाने की सुविधा: model को क्लाउड मॉडल पर सेट करें. इस इस्तेमाल के उदाहरण के लिए, HybridModel नहीं बनाया जाता.

    अगर डिवाइस ऑनलाइन है और मॉडल उपलब्ध है, तो क्लाउड पर होस्ट किए गए मॉडल का इस्तेमाल करने की कोशिश करें. इसके अलावा, अपवाद दिखाएं.

    // 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
    )
    

देखें कि डिवाइस पर मौजूद मॉडल उपलब्ध है या नहीं

डिवाइस पर मॉडल की उपलब्धता की मैन्युअल तरीके से जांच करना सिर्फ़ तब ज़रूरी होता है, जब आपको उपयोगकर्ता को वह जानकारी दिखानी हो या आपको यह अनुरोध करना हो कि उपयोगकर्ता, डिवाइस पर मॉडल डाउनलोड करने के लिए कार्रवाई करें. अगर डिवाइस पर मौजूद मॉडल उपलब्ध नहीं है और आपने primary को डिवाइस पर मौजूद मॉडल और secondary को क्लाउड मॉडल पर सेट किया है, तो SDK टूल अपने-आप क्लाउड पर होस्ट किए गए मॉडल का इस्तेमाल करेगा.

मैन्युअल तरीके से यह देखने के लिए कि डिवाइस पर मौजूद मॉडल का इस्तेमाल किया जा सकता है या नहीं, isAvailable प्रॉपर्टी की जांच करें:

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

डिवाइस पर मौजूद मॉडल की उपलब्धता की वजहें जानने के लिए, availability प्रॉपर्टी की जांच करें:

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
}

यह पता लगाना कि डिवाइस पर या क्लाउड में अनुमान लगाने की सुविधा का इस्तेमाल किया गया था या नहीं

अगर आपने HybridModel का इस्तेमाल किया है और primary और secondary, दोनों मॉडल सेट किए हैं, तो यह जानना मददगार हो सकता है कि किसी अनुरोध के लिए किस मॉडल का इस्तेमाल किया गया था. यह जानकारी, हर जवाब में rawResponse की modelVersion प्रॉपर्टी से मिलती है.

इस प्रॉपर्टी को ऐक्सेस करने पर, आपको इनमें से कोई एक वैल्यू मिलेगी:

  • क्लाउड पर होस्ट किए गए मॉडल का इस्तेमाल किया गया: मॉडल का नाम, उदाहरण के लिए gemini-3.1-flash-lite
  • डिवाइस पर इस्तेमाल किया गया मॉडल: apple-foundation-models-system-language-model
// let response = try await session.respond(to: ...

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

print(response.content)

जवाबों को कंट्रोल करने के लिए, मॉडल कॉन्फ़िगरेशन का इस्तेमाल करना

मॉडल को किए गए हर अनुरोध में, मॉडल कॉन्फ़िगरेशन भेजा जा सकता है. इससे यह कंट्रोल किया जा सकता है कि मॉडल जवाब कैसे जनरेट करे. क्लाउड पर होस्ट किए गए मॉडल और डिवाइस पर मौजूद मॉडल, कॉन्फ़िगरेशन के अलग-अलग विकल्प देते हैं (क्लाउड बनाम डिवाइस पर मौजूद पैरामीटर).

  • क्लाउड पर होस्ट किए गए मॉडल: GenerationConfig में उनका कॉन्फ़िगरेशन सेट करें.
  • डिवाइस पर मौजूद मॉडल: FirebaseAI.GenerationOptions में जाकर, इनके कॉन्फ़िगरेशन सेट करें.

इन विकल्पों को मॉडल से किए गए हर अनुरोध के लिए कॉन्फ़िगर किया जाता है.

यहां एक उदाहरण दिया गया है, जिसमें हाइब्रिड इन्फ़्रेंस के लिए, क्लाउड पर होस्ट किए गए और डिवाइस पर मौजूद मॉडल के कॉन्फ़िगरेशन सेट किए गए हैं:

// ...

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 के साथ अपने अनुभव के बारे में सुझाव/राय दें या शिकायत करें