خيارات الإعداد للتجارب الهجينة في تطبيقات 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)
    )
    

الاستدلال على الجهاز فقط أو في السحابة الإلكترونية فقط

تتيح حزمة SDK ضبط فقط قيمة واحدة لـ model، ما يعني أنّ حزمة SDK ستحاول فقط إجراء الاستنتاج على الجهاز فقط أو في السحابة الإلكترونية. ولا يمكنك أيضًا إنشاء 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)، قد يكون من المفيد معرفة النموذج الذي تم استخدامه لطلب معيّن. يتم توفير هذه المعلومات من خلال السمة modelVersion لـ rawResponse في كل ردّ.

عند الوصول إلى هذه السمة، ستكون القيمة المعروضة إحدى القيم التالية:

  • النموذج المستضاف على السحابة الإلكترونية: اسم النموذج، مثل 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"