La API de Prompt te permite seleccionar de forma explícita la versión de Gemini Nano que usa tu app. Si configuras la etapa de lanzamiento del modelo y la preferencia de rendimiento, puedes acceder a las nuevas capacidades del modelo antes o bien optimizar tu app para restricciones de hardware específicas.
Comprende la configuración del modelo
Para seleccionar un modelo específico, debes configurar dos parámetros clave dentro de la clase ModelConfig: la etapa de lanzamiento y la preferencia de modelo.
Etapas de lanzamiento
La etapa de lanzamiento te permite elegir entre un modelo estable o de vista previa:
- Estable (
ModelReleaseStage.STABLE): Selecciona la versión del modelo más reciente que se probó por completo y que está disponible en los dispositivos para el consumidor. Esta es la configuración predeterminada. - Vista previa (
ModelReleaseStage.PREVIEW): Selecciona la versión del modelo más reciente en la etapa de vista previa. Esta etapa te permite probar funciones beta o arquitecturas de modelos más recientes antes de que se implementen de forma generalizada en la etapa estable.
Para conocer los requisitos previos y las instrucciones de inscripción en la versión preliminar para desarrolladores, consulta la guía de la versión preliminar para desarrolladores de AICore.
Preferencia de modelo
La preferencia del modelo te permite especificar qué características de rendimiento son más importantes para tu caso de uso.
- Completo (
ModelPreference.FULL): Se recomienda esta preferencia cuando la precisión del modelo y las capacidades completas tienen prioridad sobre la velocidad. - Rápida (
ModelPreference.FAST): Se recomienda esta preferencia para las apps sensibles a la latencia que requieren tiempos de respuesta mínimos.
Configura el modelo generativo
Para usar una variante de modelo específica, debes definir un ModelConfig y pasarlo a tu GenerationConfig cuando inicialices el cliente.
En el siguiente ejemplo, se muestra cómo configurar el cliente para que use un modelo Fast de la etapa Preview:
Kotlin
// Define the configuration with a specific stage and preference
val previewFastConfig = generationConfig {
modelConfig = modelConfig {
releaseStage = ModelReleaseStage.PREVIEW
preference = ModelPreference.FAST
}
}
// Initialize the GenerativeModel with the configuration
val generativeModel = Generation.getClient(previewFastConfig)
Java
// Define the configuration with a specific stage and preference
GenerationConfig previewFastConfig = new GenerationConfig.Builder()
.setModelConfig(new ModelConfig.Builder()
.setReleaseStage(ModelReleaseStage.PREVIEW)
.setPreference(ModelPreference.FAST)
.build())
.build();
// Initialize the GenerativeModel with the configuration
GenerativeModel generativeModel = Generation.INSTANCE.getClient(previewFastConfig);
Cómo verificar la disponibilidad del modelo
No todos los dispositivos admiten todas las combinaciones de etapa de lanzamiento y preferencia de modelo. Los modelos de versión preliminar solo están disponibles en la lista de dispositivos compatibles de la guía de la versión preliminar para desarrolladores de AICore.
La API no proporciona un método para enumerar todas las configuraciones de modelos disponibles por adelantado. En su lugar, inicializa el cliente con la configuración que desees y, luego, verifica su estado.
- Inicializa el cliente: Crea la instancia
GenerativeModelcon tuModelConfigpreferido. Verifica el estado: Llama al método
checkStatus()en la instancia para verificar que la variante del modelo específica esté disponible en el dispositivo.
Kotlin
val generativeModel = Generation.getClient(previewFastConfig)
// Verify that the specific preview model is available
val status = generativeModel.checkStatus()
when (status) {
FeatureStatus.UNAVAILABLE -> {
// Specified preview model is not available on this device
}
FeatureStatus.DOWNLOADABLE -> {
// Specified preview model is available for this device, but not downloaded yet.
// Model may be downloaded through the AICore app or by calling generativeModel.download()
}
FeatureStatus.AVAILABLE -> {
// Proceed with inference
}
FeatureStatus.DOWNLOADING -> {
// Specified preview model is downloading
}
}
Java
GenerativeModel generativeModel = Generation.INSTANCE.getClient(previewFastConfig);
// For Java, use GenerativeModelFutures if you prefer ListenableFuture
GenerativeModelFutures generativeModelFutures = GenerativeModelFutures.from(generativeModel);
Futures.addCallback(
generativeModelFutures.checkStatus(),
new FutureCallback<Integer>() {
@Override
public void onSuccess(Integer status) {
if (status == FeatureStatus.AVAILABLE) {
// Proceed with inference
} else if (status == FeatureStatus.DOWNLOADING) {
// Specified preview model is downloading
} else if (status == FeatureStatus.DOWNLOADABLE) {
// Specified preview model is available for this device, but not downloaded yet.
// Call generativeModelFutures.download(callback) or use the AICore app.
} else if (status == FeatureStatus.UNAVAILABLE) {
// Specified preview model is not available on this device
}
}
@Override
public void onFailure(Throwable t) {
// Handle failure
}
},
ContextCompat.getMainExecutor(context));
Para garantizar la compatibilidad con posibles configuraciones futuras, el SDK está diseñado para evitar arrojar un GenAiException durante la inicialización del cliente, ya que se basa únicamente en el método checkStatus() para la verificación de disponibilidad.
Prácticas recomendadas
- Implementa estrategias de resguardo: Debido a que no se garantiza que los modelos de vista previa estén disponibles en todos los dispositivos, siempre debes implementar una estrategia de resguardo. Si
checkStatus()devuelvefalsepara una configuración de vista previa, tu app debe revertir correctamente aModelReleaseStage.STABLEyModelPreference.FULL. - Usa etapas de lanzamiento del modelo para el desarrollo y la producción: Usa la etapa de versión preliminar durante el desarrollo y las pruebas internas para evaluar las próximas mejoras del modelo. Cambia a Estable para tus versiones de producción públicas y garantizar un comportamiento coherente para los usuarios.
Problemas conocidos
- En el caso de algunos dispositivos en la etapa de lanzamiento de la versión preliminar, no admitirán varios candidatos en el resultado y mostrarán un error si
candidateCountse establece en un valor mayor que 1. Consulta la referencia de la API para obtener más detalles. - No se admiten varias muestras en algunas implementaciones. El rendimiento será más lento que el de la producción final.
- Actualmente, la entrada de imágenes solo funciona en el Pixel 10.
- El modelo
nanov4-fastpodría dar respuestas deficientes para ciertas instrucciones en algunos dispositivos.