Auf dieser Seite werden die folgenden Konfigurationsoptionen für Hybrid- und On-Device-Erlebnisse beschrieben:
Festlegen, ob die Inferenz auf dem Gerät oder in der Cloud verwendet wurde
Modellkonfiguration verwenden, um Antworten zu steuern (z. B. Temperatur)
Achten Sie darauf, dass Sie den Startleitfaden zum Erstellen von Hybrid-Erlebnissendurchgearbeitet haben.
„Inferenzmodus“ festlegen
In den Beispielen im Startleitfaden wird gezeigt, wie Sie zuerst die Inferenz auf dem Gerät versuchen und dann auf das in der Cloud gehostete Modell zurückgreifen. Dies ist nur einer der verfügbaren „Inferenzmodi“, die Sie implementieren können.
Hybrid-Inferenz
Inferenz auf dem Gerät bevorzugen: Legen Sie
primaryauf ein „System“-Modell undsecondaryauf ein Cloud-Modell fest.Versuchen Sie, das On-Device-Modell zu verwenden, wenn es verfügbar ist und den Anfragetyp unterstützt. Andernfalls protokollieren Sie einen Fehler auf dem Gerät und greifen Sie automatisch auf das in der Cloud gehostete Modell zurück.
// 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) )Inferenz in der Cloud bevorzugen: Legen Sie
primaryauf ein Cloud-Modell undsecondaryauf ein „System“-Modell fest.Versuchen Sie, das in der Cloud gehostete Modell zu verwenden, wenn das Gerät online und das Modell verfügbar ist. Wenn das Gerät offline ist, greifen Sie auf das On-Device-Modell zurück. In allen anderen Fehlerfällen lösen Sie eine Ausnahme aus.
// 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) )
Nur Inferenz auf dem Gerät oder nur Inferenz in der Cloud
Das SDK unterstützt die Festlegung nur eines einzelnen model. Das bedeutet, dass das SDK nur entweder die Inferenz auf dem Gerät oder in der Cloud versucht. Außerdem erstellen Sie für diesen Anwendungsfall kein HybridModel. Für ein Hybrid-Erlebnis müssen Sie jedoch ein HybridModel erstellen und sowohl primary als auch secondary-Modelle festlegen (wie oben beschrieben).
Nur Inferenz auf dem Gerät: Legen Sie
modelauf ein „System“-Modell fest. Für diesen Anwendungsfall erstellen Sie keinHybridModel.Versuchen Sie, das On-Device-Modell zu verwenden, wenn es verfügbar ist und den Anfragetyp unterstützt. Andernfalls lösen Sie eine Ausnahme aus.
// 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 )Nur Inferenz in der Cloud: Legen Sie
modelauf ein Cloud-Modell fest. Für diesen Anwendungsfall erstellen Sie keinHybridModel.Versuchen Sie, das in der Cloud gehostete Modell zu verwenden, wenn das Gerät online und das Modell verfügbar ist. Andernfalls lösen Sie eine Ausnahme aus.
// 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 )
Prüfen, ob das On-Device-Modell verfügbar ist
Manuelle Prüfungen der Verfügbarkeit auf dem Gerät sind nur erforderlich, wenn Sie diese Informationen dem Nutzer präsentieren oder Endnutzer auffordern möchten, das On-Device-Modell herunterzuladen. Wenn das On-Device-Modell nicht verfügbar ist und Sie primary auf ein On-Device-Modell und secondary auf ein Cloud-Modell festgelegt haben, greift das SDK automatisch auf das in der Cloud gehostete Modell zurück.
Wenn Sie manuell prüfen möchten, ob das On-Device-Modell tatsächlich verwendet werden kann, sehen Sie sich die Eigenschaft isAvailable an:
if FirebaseAI.SystemLanguageModel.default.isAvailable {
// The on-device model is ready to use.
} else {
// The on-device model is unavailable.
}
Wenn Sie nach bestimmten Gründen für die Verfügbarkeit des On-Device-Modells suchen möchten, sehen Sie sich die Eigenschaft availability an:
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
}
Festlegen, ob die Inferenz auf dem Gerät oder in der Cloud verwendet wurde
Wenn Sie ein HybridModel verwenden und sowohl primary als auch secondary-Modelle festlegen, kann es hilfreich sein zu wissen, welches Modell für eine bestimmte Anfrage verwendet wurde.
Diese Informationen werden in jeder Antwort über die Eigenschaft modelVersion von rawResponse bereitgestellt.
Wenn Sie auf diese Eigenschaft zugreifen, ist der zurückgegebene Wert einer der folgenden:
- In der Cloud gehostetes Modell verwendet: der Modellname, z. B.
gemini-3.1-flash-lite - On-Device-Modell verwendet:
apple-foundation-models-system-language-model
// let response = try await session.respond(to: ...
print("You used: \(response.rawResponse.modelVersion)")
print(response.content)
Modellkonfiguration verwenden, um Antworten zu steuern
In jeder Anfrage an ein Modell können Sie eine Modellkonfiguration senden, um zu steuern, wie das Modell eine Antwort generiert. In der Cloud gehostete Modelle und On-Device-Modelle bieten unterschiedliche Konfigurationsoptionen (Cloud vs. On-Device Parameter).
- In der Cloud gehostete Modelle: Legen Sie die Konfiguration in einer
GenerationConfigfest. - On-Device-Modelle: Legen Sie die Konfiguration in
FirebaseAI.GenerationOptionsfest.
Diese Optionen werden für jede Anfrage an das Modell konfiguriert.
Hier ein Beispiel, in dem die Konfigurationen für die in der Cloud gehosteten und On-Device-Modelle für die Hybrid-Inferenz festgelegt werden:
// ...
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
)
)
)
// ...
Feedback geben zu Ihren Erfahrungen mit Firebase AI Logic