En esta página, se describen las siguientes opciones de configuración para experiencias híbridas e integradas en el dispositivo:
Verificar si el modelo integrado en el dispositivo está disponible
Determinar si se usó la inferencia integrado en el dispositivo o en la nube
Usar 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.
Establecer un "modo de inferencia"
En los ejemplos de la guía de introducción, se muestra cómo implementar el intento de inferencia integrado en el dispositivo primero 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: Configura
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, 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: Configura
primaryen un modelo de nube ysecondaryen un modelo "del sistema".Intenta usar el modelo alojado en la nube si el dispositivo está en línea y 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) )
Solo inferencia integrado en el dispositivo o solo en la nube
El SDK admite configurar solo un model, lo que significa que el SDK solo intentará la inferencia 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: Configura
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: Configura
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 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 )
Verificar si el modelo integrado en el dispositivo está disponible
Las verificaciones manuales de disponibilidad en el dispositivo solo son necesarias si deseas 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 en un modelo integrado en el dispositivo y secondary en un modelo de nube), el SDK recurrirá automáticamente al uso del modelo alojado en la nube.
Para verificar manualmente si el modelo integrado en el dispositivo es realmente utilizable, 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 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
}
Determinar si se usó la inferencia integrado 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 mostrará será uno de los siguientes:
- Modelo alojado en la nube usado: el nombre del modelo, por ejemplo,
gemini-3.1-flash-lite - Modelo integrado en el dispositivo usado:
apple-foundation-models-system-language-model
// let response = try await session.respond(to: ...
print("You used: \(response.rawResponse.modelVersion)")
print(response.content)
Usar 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 el modelo 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 vs. en el dispositivo ).
- Modelos alojados en la nube: Configura su configuración en un
GenerationConfig. - Modelos integrados en el dispositivo: Configura su configuración dentro de
FirebaseAI.GenerationOptions.
Estas opciones se configuran para cada solicitud al modelo.
Este es un ejemplo que establece las configuraciones para los modelos alojados en la nube y los modelos 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