Cette page décrit les options de configuration suivantes pour les expériences hybrides et sur l'appareil :
Déterminez si l'inférence sur l'appareil ou dans le cloud a été utilisée.
Utilisez la configuration du modèle pour contrôler les réponses (comme la température).
Assurez-vous d'avoir suivi le guide de démarrage pour créer des expériences hybrides.
Définir un "mode d'inférence"
Les exemples du guide de démarrage montrent comment implémenter la tentative d'inférence sur l'appareil en premier, puis comment revenir au modèle hébergé dans le cloud. Il ne s'agit que d'un des "modes d'inférence" disponibles que vous pouvez implémenter.
Inférence hybride
Préférez l'inférence sur l'appareil : définissez
primarysur un modèle "system" etsecondarysur un modèle cloud.Tentez d'utiliser le modèle sur l'appareil s'il est disponible et compatible avec le type de requête. Sinon, enregistrez une erreur sur l'appareil, puis revenez automatiquement au modèle hébergé dans le cloud.
// 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) )Préférer l'inférence dans le cloud : définissez
primarysur un modèle cloud etsecondarysur un modèle "system".Tentez d'utiliser le modèle hébergé dans le cloud si l'appareil est en ligne et si le modèle est disponible. Si l'appareil est hors connexion, repasser au modèle sur l'appareil. Dans tous les autres cas d'échec, générez une exception.
// 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) )
Inférence sur l'appareil uniquement ou dans le cloud uniquement
Le SDK ne permet de définir qu'un seul model, ce qui signifie qu'il ne tentera que l'inférence sur l'appareil ou dans le cloud. De plus, vous ne créez pas de HybridModel pour ce cas d'utilisation. Toutefois, pour une expérience hybride, vous devez créer un HybridModel et définir les modèles primary et secondary (comme décrit ci-dessus).
Inférence sur l'appareil uniquement : définissez
modelsur un modèle "system". Vous ne créez pas deHybridModelpour ce cas d'utilisation.Tentez d'utiliser le modèle sur l'appareil s'il est disponible et compatible avec le type de requête. Sinon, générez une exception.
// 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 )Inférence uniquement dans le cloud : définissez
modelsur un modèle cloud. Vous ne créez pas deHybridModelpour ce cas d'utilisation.Tentez d'utiliser le modèle hébergé dans le cloud si l'appareil est en ligne et si le modèle est disponible. Sinon, générez une exception.
// 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 )
Vérifier si le modèle sur l'appareil est disponible
Les vérifications manuelles de la disponibilité sur l'appareil ne sont nécessaires que si vous souhaitez communiquer cette information à l'utilisateur ou lui demander d'effectuer une action pour télécharger le modèle sur l'appareil. Si le modèle sur l'appareil n'est pas disponible et que vous avez défini primary sur un modèle sur l'appareil et secondary sur un modèle cloud, le SDK utilisera automatiquement le modèle hébergé dans le cloud.
Pour vérifier manuellement si le modèle sur l'appareil est réellement utilisable, inspectez la propriété isAvailable :
if FirebaseAI.SystemLanguageModel.default.isAvailable {
// The on-device model is ready to use.
} else {
// The on-device model is unavailable.
}
Pour vérifier les raisons spécifiques de la disponibilité du modèle sur l'appareil, inspectez la propriété 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
}
Déterminer si l'inférence sur l'appareil ou dans le cloud a été utilisée
Si vous utilisez un HybridModel (et que vous définissez les modèles primary et secondary), il peut être utile de savoir quel modèle a été utilisé pour une requête donnée.
Ces informations sont fournies par la propriété modelVersion de rawResponse dans chaque réponse.
Lorsque vous accédez à cette propriété, la valeur renvoyée est l'une des suivantes :
- Modèle hébergé dans le cloud utilisé : nom du modèle, par exemple
gemini-3.1-flash-lite - Modèle utilisé sur l'appareil :
apple-foundation-models-system-language-model
// let response = try await session.respond(to: ...
print("You used: \(response.rawResponse.modelVersion)")
print(response.content)
Utiliser la configuration du modèle pour contrôler les réponses
Dans chaque requête envoyée à un modèle, vous pouvez inclure une configuration de modèle pour contrôler la manière dont le modèle génère une réponse. Les modèles hébergés dans le cloud et les modèles sur l'appareil offrent différentes options de configuration (paramètres cloud et sur l'appareil).
- Modèles hébergés dans le cloud : définissez leur configuration dans un
GenerationConfig. - Modèles sur l'appareil : définissez leur configuration dans
FirebaseAI.GenerationOptions.
Ces options sont configurées pour chaque requête envoyée au modèle.
Voici un exemple qui définit les configurations pour les modèles hébergés dans le cloud et sur l'appareil pour l'inférence hybride :
// ...
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
)
)
)
// ...
Envoyer des commentaires sur votre expérience avec Firebase AI Logic