בדף הזה מתוארות אפשרויות ההגדרה הבאות לחוויות היברידיות ובמכשיר:
מוודאים שסיימתם את המדריך לתחילת העבודה על פיתוח חוויות היברידיות.
הגדרת "מצב היסק"
הדוגמאות במדריך לתחילת הדרך מראות איך להטמיע ניסיון להסקת מסקנות במכשיר קודם, ואז לחזור למודל שמתארח בענן. זה רק אחד מ "מצבי ההיסק" הזמינים שאפשר להטמיע.
הסקה משולבת
העדפת הסקה במכשיר: מגדירים את
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