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 integrada 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.
Establece 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
Preferir la inferencia integrada en el dispositivo: Establece
primaryen un modelo de "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, recurre 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 de nube ysecondaryen un modelo de "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, recurre 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) )
Inferencia solo integrado en el dispositivo o solo en la nube
El SDK admite la configuración de solo un model, lo que significa que el SDK solo intentará realizar inferencias integrado en el dispositivo o en la nube. Además, no creas un
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 de "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 de 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 )
Verifica si el modelo integrado en el dispositivo está disponible
Las verificaciones manuales de la disponibilidad integrada en el dispositivo solo son necesarias si quieres mostrar esa información al usuario o solicitar que los usuarios finales tomen medidas 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 modelo alojado en la nube.
Para verificar de forma manual 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 integrada en el dispositivo o en la nube
Si usas un HybridModel (y configuras los modelos primary y secondary),
puede ser útil saber qué modelo se usó para una solicitud determinada.
Esta información la proporciona 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ó: el nombre del modelo, por ejemplo,
gemini-3.1-flash-lite - Modelo integrado en el dispositivo que se usó:
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 de nube frente a 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.
Este es un ejemplo en el que se establecen los parámetros de configuración de 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
)
)
)
// ...
Envía comentarios sobre tu experiencia con Firebase AI Logic