En esta página, se describen las siguientes opciones de configuración para las experiencias híbridas y integradas en el dispositivo:
Verifica si el modelo integrado en el dispositivo está disponible.
Determina si se usó la inferencia integrado en el dispositivo o en la nube.
Usa la configuración del modelo para controlar las respuestas (como la temperatura).
Asegúrate de haber completado la guía de introducción para crear experiencias híbridas.
Cómo establecer un "modo de inferencia"
En los ejemplos de la guía de introducción, se muestra cómo implementar primero la inferencia integrada en el dispositivo y, luego, recurrir al modelo alojado en la nube. Este es solo uno de los "modos de inferencia" disponibles que puedes implementar.
Inferencia híbrida
Preferencia de inferencia integrado en el dispositivo: Establece
primaryen un modelo "del sistema" ysecondaryen un modelo de nube.Intenta usar el modelo integrado en el dispositivo si está disponible y admite el tipo de solicitud. De lo contrario, registra un error en el dispositivo y, luego, vuelve automáticamente al modelo alojado en la nube.
// 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) )Preferir la inferencia en la nube: Establece
primaryen un modelo en la nube ysecondaryen un modelo "del sistema".Intenta usar el modelo alojado en la nube si el dispositivo está en línea y si el modelo está disponible. Si el dispositivo no tiene conexión, se recurrirá al modelo integrado en el dispositivo. En todos los demás casos de falla, arroja una excepción.
// 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) )
Solo inferencia integrado en el dispositivo o solo en la nube
El SDK admite la configuración de solo un único model, lo que significa que el SDK solo intentará la inferencia integrado en el dispositivo o en la nube. Además, no creas un objeto HybridModel para este caso de uso. Sin embargo, para una experiencia híbrida, debes crear un HybridModel y configurar los modelos primary y secondary (como se describió anteriormente).
Solo inferencia integrada en el dispositivo: Establece
modelen un modelo "del sistema". No creas unHybridModelpara este caso de uso.Intenta usar el modelo integrado en el dispositivo si está disponible y admite el tipo de solicitud. De lo contrario, arroja una excepción.
// 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 )Solo inferencia en la nube: Establece
modelen un modelo en la nube. No creas unHybridModelpara este caso de uso.Intenta usar el modelo alojado en la nube si el dispositivo está en línea y si el modelo está disponible. De lo contrario, arroja una excepción.
// 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 )
Cómo verificar si el modelo integrado en el dispositivo está disponible
Las verificaciones manuales de la disponibilidad integrado en el dispositivo solo son necesarias si quieres mostrar esa información al usuario o solicitar que los usuarios finales realicen acciones para descargar el modelo integrado en el dispositivo. Si el modelo integrado en el dispositivo no está disponible (y configuraste primary como un modelo integrado en el dispositivo y secondary como un modelo en la nube), el SDK recurrirá automáticamente al uso del modelo alojado en la nube.
Para verificar manualmente si el modelo integrado en el dispositivo se puede usar, inspecciona la propiedad isAvailable:
if FirebaseAI.SystemLanguageModel.default.isAvailable {
// The on-device model is ready to use.
} else {
// The on-device model is unavailable.
}
Para verificar los motivos específicos de la disponibilidad del modelo integrado en el dispositivo, inspecciona la propiedad 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
}
Determina si se usó la inferencia integrado en el dispositivo o en la nube
Si usas un HybridModel (y estableces los modelos primary y secondary), puede ser útil saber qué modelo se usó para una solicitud determinada.
Esta información se proporciona en la propiedad modelVersion de rawResponse en cada respuesta.
Cuando accedas a esta propiedad, el valor que se devolverá será uno de los siguientes:
- Modelo alojado en la nube que se usó: Nombre del modelo, por ejemplo,
gemini-3.1-flash-lite - Modelo integrado en el dispositivo utilizado:
apple-foundation-models-system-language-model
// let response = try await session.respond(to: ...
print("You used: \(response.rawResponse.modelVersion)")
print(response.content)
Usa la configuración del modelo para controlar las respuestas
En cada solicitud a un modelo, puedes enviar una configuración del modelo para controlar cómo este genera una respuesta. Los modelos alojados en la nube y los modelos integrados en el dispositivo ofrecen diferentes opciones de configuración (parámetros en la nube frente a integrados en el dispositivo).
- Modelos alojados en la nube: Establece su configuración en un
GenerationConfig. - Modelos integrados en el dispositivo: Establece su configuración en
FirebaseAI.GenerationOptions.
Estas opciones se configuran para cada solicitud al modelo.
A continuación, se muestra un ejemplo que establece las configuraciones para los modelos alojados en la nube y integrados en el dispositivo para la inferencia híbrida:
// ...
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
)
)
)
// ...
Enviar comentarios sobre tu experiencia con Firebase AI Logic