خيارات الإعداد للتجارب الهجينة في تطبيقات Apple

Firebase AI Logic


توضّح هذه الصفحة خيارات الإعداد التالية للتجارب المختلطة والتجارب على الجهاز فقط:

يُرجى التأكّد من إكمال [دليل البدء لإنشاء تجارب مختلطة].

ضبط "وضع الاستنتاج"

توضّح الأمثلة في دليل البدء كيفية محاولة إجراء الاستنتاج على الجهاز أولاً، ثم الرجوع إلى النموذج المستضاف على السحابة الإلكترونية. هذا مجرّد واحد من "أوضاع الاستنتاج" المتاحة التي يمكنك تنفيذها.

الاستنتاج المختلط

  • تفضيل الاستنتاج على الجهاز فقط: اضبط 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 models)، فقد يكون من المفيد معرفة النموذج الذي تم استخدامه لطلب معيّن. توفّر هذه المعلومات السمة 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