این صفحه گزینههای پیکربندی زیر را برای تجربیات ترکیبی و روی دستگاه شرح میدهد:
مشخص کنید که آیا از استنتاج درون دستگاهی یا درون ابری استفاده شده است.
از پیکربندی مدل برای کنترل پاسخها (مانند دما) استفاده کنید.
مطمئن شوید که راهنمای شروع به کار برای ساخت تجربیات ترکیبی را تکمیل کردهاید.
تنظیم «حالت استنتاج»
مثالهای موجود در راهنمای شروع به کار، نحوه پیادهسازی ابتدا تلاش برای استنتاج روی دستگاه و سپس بازگشت به مدل میزبانی ابری را نشان میدهند. این تنها یکی از «حالتهای استنتاج» موجود است که میتوانید پیادهسازی کنید.
استنتاج ترکیبی
استنتاج روی دستگاه را ترجیح دهید :
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 بازخورد دهید