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