Konfigurationsoptionen für hybride Funktionen in Apple-Apps


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

Sie müssen den Startleitfaden zum Erstellen von Hybrid-Anwendungen durchgearbeitet haben.

Inferenzmodus festlegen

In den Beispielen im Startleitfaden wird gezeigt, wie Sie zuerst die On-Device-Inferenz implementieren und dann auf das in der Cloud gehostete Modell zurückgreifen. Dies ist nur einer der verfügbaren „Inferenzmodi“, die Sie implementieren können.

Hybride Inferenz

  • On-Device-Inferenz bevorzugen: Setzen Sie primary auf ein „System“-Modell und secondary auf ein Cloud-Modell.

    Versuchen Sie, das On-Device-Modell zu verwenden, wenn es verfügbar ist und den Typ der Anfrage unterstützt. Andernfalls wird ein Fehler auf dem Gerät protokolliert und automatisch ein Fallback auf das in der Cloud gehostete Modell durchgeführt.

    // 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 On-Device- oder nur Cloud-Inferenz

Das SDK unterstützt nur die Festlegung eines einzelnen model. Das bedeutet, dass das SDK nur entweder die On-Device- oder die In-Cloud-Inferenz versucht. Außerdem erstellen Sie für diesen Anwendungsfall keine HybridModel. Für eine hybride Nutzung müssen Sie jedoch eine HybridModel erstellen und sowohl das primary- als auch das secondary-Modell festlegen (wie oben beschrieben).

  • Nur On-Device-Inferenz: Setzen Sie model auf ein „System“-Modell. Für diesen Anwendungsfall erstellen Sie keine HybridModel.

    Versuchen Sie, das On-Device-Modell zu verwenden, wenn es verfügbar ist und den Typ der Anfrage unterstützt. Andernfalls wird eine Ausnahme ausgelöst.

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

    Versuchen Sie, das in der Cloud gehostete Modell zu verwenden, wenn das Gerät online und das Modell verfügbar ist. Andernfalls wird eine Ausnahme ausgelöst.

    // 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 anzeigen oder ihn 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, prüfen Sie das Attribut isAvailable:

if FirebaseAI.SystemLanguageModel.default.isAvailable {
  // The on-device model is ready to use.
} else {
  // The on-device model is unavailable.
}

Wenn Sie die genauen Gründe für die Verfügbarkeit des On-Device-Modells prüfen möchten, sehen Sie sich das Attribut 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
}

Feststellen, 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 vom Attribut modelVersion von rawResponse bereitgestellt.

Wenn Sie auf diese Property zugreifen, wird einer der folgenden Werte zurückgegeben:

  • Verwendetes in der Cloud gehostetes Modell: der Modellname, z. B. gemini-3.1-flash-lite
  • Verwendetes On-Device-Modell: apple-foundation-models-system-language-model
// let response = try await session.respond(to: ...

print("You used: \(response.rawResponse.modelVersion)")

print(response.content)

Modellkonfiguration zum Steuern von Antworten verwenden

In jeder Anfrage an ein Modell können Sie eine Modellkonfiguration mitsenden, um zu steuern, wie das Modell eine Antwort generiert. In der Cloud gehostete Modelle und On-Device-Modelle bieten unterschiedliche Konfigurationsoptionen (Cloud- und On-Device-Parameter).

Diese Optionen werden für jede Anfrage an das Modell konfiguriert.

Hier ein Beispiel, in dem die Konfigurationen für die cloudbasierten und On-Device-Modelle für die hybride 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 zu Ihren Erfahrungen mit Firebase AI Logic geben