Konfigurationsoptionen für hybride Funktionen in Apple-Apps


Auf dieser Seite werden die folgenden Konfigurationsoptionen für Hybrid- und On-Device-Erlebnisse beschrieben:

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 primary auf ein „System“-Modell und secondary auf 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 primary auf ein Cloud-Modell und secondary auf 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 model auf ein „System“-Modell fest. Für diesen Anwendungsfall erstellen Sie kein HybridModel.

    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 model auf ein Cloud-Modell fest. Für diesen Anwendungsfall erstellen Sie kein HybridModel.

    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).

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