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 las configuraciones 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 del 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 más reciente del modelo que se probó por completo y que está en los dispositivos del consumidor. Esta es la configuración predeterminada. - Vista previa (
ModelReleaseStage.PREVIEW): Selecciona la versión más reciente del modelo 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 obtener los requisitos previos y las instrucciones de inscripción para la versión preliminar para desarrolladores, consulta la guía de la versión preliminar para desarrolladores de AICore.
Preferencia del 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 se prioriza la precisión del modelo y las capacidades completas por sobre la velocidad. - Rápido (
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 usar un modelo rápido de la etapa de vista previa:
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);
Verifica la disponibilidad del modelo
No todos los dispositivos admiten todas las combinaciones de etapa de lanzamiento y preferencia del modelo. Los modelos de vista previa 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 deseada 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 de 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 versiones anteriores con posibles configuraciones futuras, el SDK está diseñado para evitar arrojar una GenAiException durante la inicialización del cliente, y 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()muestrafalsepara una configuración de vista previa, tu app debería revertir correctamente aModelReleaseStage.STABLEyModelPreference.FULL. - Usa etapas de lanzamiento de modelos para el desarrollo y la producción: Usa la etapa de vista previa durante el desarrollo y las pruebas internas para evaluar las próximas mejoras del modelo. Cambia a estable para tus lanzamientos de producción públicos y garantizar un comportamiento coherente para tus usuarios.
Problemas conocidos
- En el caso de algunos dispositivos en la etapa de lanzamiento de vista previa, no admitirán varios candidatos en el resultado y mostrarán un error si
candidateCountse establece en un valor superior a 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 la producción final.