Opcje konfiguracji środowisk hybrydowych w aplikacjach Apple


Na tej stronie opisujemy te opcje konfiguracji w przypadku środowisk hybrydowych i na urządzeniu:

Upewnij się, że masz za sobą przewodnik dla początkujących dotyczący tworzenia środowisk hybrydowych.

Ustaw „tryb wnioskowania”.

Przykłady w przewodniku dla początkujących pokazują, jak najpierw wdrożyć próbę wnioskowania na urządzeniu, a potem przejść na model hostowany w chmurze. To tylko jeden z dostępnych „trybów wnioskowania”, które możesz wdrożyć.

Wnioskowanie hybrydowe

  • Prefer on-device inference (Preferuj wnioskowanie na urządzeniu): ustaw primary na model „systemowy”, a secondary na model w chmurze.

    Spróbuj użyć modelu na urządzeniu, jeśli jest dostępny i obsługuje typ żądania. W przeciwnym razie zarejestruj błąd na urządzeniu, a następnie automatycznie wróć do modelu hostowanego w chmurze.

    // 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)
    )
    
  • Prefer in-cloud inference (Preferuj wnioskowanie w chmurze): ustaw primary na model w chmurze, a secondary na model „systemowy”.

    Spróbuj użyć modelu hostowanego w chmurze, jeśli urządzenie jest online i model jest dostępny. Jeśli urządzenie jest offline, wróć do modelu na urządzeniu. W pozostałych przypadkach zgłoś wyjątek.

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

Wnioskowanie tylko na urządzeniu lub tylko w chmurze

Pakiet SDK obsługuje ustawienie tylko jednego parametru model, co oznacza, że będzie on tylko próbował przeprowadzić wnioskowanie na urządzeniu lub w chmurze. W tym przypadku użycia nie tworzysz też HybridModel. W przypadku hybrydowego środowiska musisz jednak utworzyć HybridModel i ustawić oba modele primarysecondary (jak opisano powyżej).

  • Tylko wnioskowanie na urządzeniu: ustaw model na model „systemowy”. W tym przypadku użycia nie tworzysz HybridModel.

    Spróbuj użyć modelu na urządzeniu, jeśli jest dostępny i obsługuje typ żądania. W przeciwnym razie zgłoś wyjątek.

    // 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
    )
    
  • Tylko wnioskowanie w chmurze: ustaw model na model chmurowy. W tym przypadku użycia nie tworzysz HybridModel.

    Spróbuj użyć modelu hostowanego w chmurze, jeśli urządzenie jest online i model jest dostępny. W przeciwnym razie zgłoś wyjątek.

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

Sprawdzanie, czy model na urządzeniu jest dostępny

Ręczne sprawdzanie dostępności na urządzeniu jest konieczne tylko wtedy, gdy chcesz wyświetlić te informacje użytkownikowi lub poprosić użytkowników o pobranie modelu na urządzenie. Jeśli model na urządzeniu jest niedostępny, a wartość parametru primary to model na urządzeniu, a wartość parametru secondary to model w chmurze, pakiet SDK automatycznie przełączy się na model hostowany w chmurze.

Aby ręcznie sprawdzić, czy model na urządzeniu jest rzeczywiście użyteczny, sprawdź właściwość isAvailable:

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

Aby sprawdzić konkretne przyczyny dostępności modelu na urządzeniu, sprawdź właściwość 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
}

Określanie, czy użyto wnioskowania na urządzeniu czy w chmurze

Jeśli używasz HybridModel (i ustawisz oba modele primarysecondary), może być przydatne, aby wiedzieć, który model został użyty w danym żądaniu. Te informacje są podawane przez właściwość modelVersion obiektu rawResponse w każdej odpowiedzi.

Gdy uzyskasz dostęp do tej właściwości, zwrócona wartość będzie jedną z tych:

  • Używany model hostowany w chmurze: nazwa modelu, np. gemini-3.1-flash-lite
  • Używany model na urządzeniu: apple-foundation-models-system-language-model
// let response = try await session.respond(to: ...

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

print(response.content)

Kontrolowanie odpowiedzi za pomocą konfiguracji modelu

W każdym żądaniu wysyłanym do modelu możesz przesłać konfigurację modelu, aby określić, jak ma on generować odpowiedź. Modele hostowane w chmurze i modele na urządzeniu oferują różne opcje konfiguracji (parametry chmuryurządzenia).

Te opcje są konfigurowane dla każdego żądania do modelu.

Oto przykład, który ustawia konfiguracje modeli hostowanych w chmurze i na urządzeniu na potrzeby wnioskowania hybrydowego:

// ...

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

// ...


Prześlij opinię o korzystaniu z usługi Firebase AI Logic