L'API Prompt vous permet de sélectionner explicitement la version de Gemini Nano utilisée par votre application. En configurant l'étape de publication du modèle et la préférence de performances, vous pouvez accéder plus tôt aux nouvelles fonctionnalités du modèle ou optimiser votre application pour des contraintes matérielles spécifiques.
Comprendre les configurations de modèle
Pour sélectionner un modèle spécifique, vous devez configurer deux paramètres clés dans la classe ModelConfig : release_stage et model_preference.
Phases de publication
L'étape de publication vous permet de choisir entre un modèle stable ou un modèle en préversion :
- Stable (
ModelReleaseStage.STABLE) : sélectionne la dernière version du modèle qui a été entièrement testée et qui est disponible sur les appareils grand public. Il s'agit du paramètre par défaut. - Aperçu (
ModelReleaseStage.PREVIEW) : sélectionne la dernière version du modèle en phase d'aperçu. Cette étape vous permet de tester les fonctionnalités bêta ou les architectures de modèles plus récentes avant qu'elles ne soient largement déployées à l'étape stable.
Pour connaître les prérequis et les instructions d'inscription à la preview développeur, consultez le guide de la preview développeur AICore.
Préférence de modèle
La préférence de modèle vous permet de spécifier les caractéristiques de performances les plus importantes pour votre cas d'utilisation.
- Complète (
ModelPreference.FULL) : cette préférence est recommandée lorsque la précision et les capacités complètes du modèle sont privilégiées par rapport à la vitesse. - Rapide (
ModelPreference.FAST) : cette préférence est recommandée pour les applications sensibles à la latence qui nécessitent des temps de réponse minimaux.
Configurer le modèle génératif
Pour utiliser une variante de modèle spécifique, vous devez définir un ModelConfig et le transmettre à votre GenerationConfig lors de l'initialisation du client.
L'exemple suivant montre comment configurer le client pour qu'il utilise un modèle Fast de la phase 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);
Vérifier la disponibilité du modèle
Tous les appareils ne sont pas compatibles avec toutes les combinaisons de phase de publication et de préférence de modèle. Les modèles en preview ne sont disponibles que sur la liste des appareils compatibles du guide de la preview développeur AICore.
L'API ne fournit pas de méthode permettant de lister toutes les configurations de modèle disponibles à l'avance. Initialisez plutôt le client avec la configuration souhaitée, puis vérifiez son état.
- Initialisez le client : créez l'instance
GenerativeModelà l'aide de votreModelConfigpréféré. Vérifier l'état : appelez la méthode
checkStatus()sur l'instance pour vérifier que la variante de modèle spécifique est disponible sur l'appareil.
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));
Pour assurer la compatibilité avec les futures configurations potentielles, le SDK est conçu pour éviter de générer une GenAiException lors de l'initialisation du client, en s'appuyant uniquement sur la méthode checkStatus() pour vérifier la disponibilité.
Bonnes pratiques
- Implémentez des stratégies de secours : comme la disponibilité des modèles d'aperçu sur tous les appareils n'est pas garantie, implémentez toujours une stratégie de secours. Si
checkStatus()renvoiefalsepour une configuration d'aperçu, votre application doit revenir àModelReleaseStage.STABLEetModelPreference.FULLde manière fluide. - Utilisez les étapes de publication du modèle pour le développement et la production : utilisez l'étape Aperçu pendant le développement et les tests internes pour évaluer les prochaines améliorations du modèle. Passez à la version stable pour vos versions de production publiques afin de garantir un comportement cohérent pour vos utilisateurs.
Problèmes connus
- Pour certains appareils en version preview, plusieurs candidats ne seront pas pris en charge dans la sortie et une erreur sera renvoyée si
candidateCountest défini sur une valeur supérieure à 1. Pour en savoir plus, consultez la documentation de référence de l'API. - Plusieurs échantillons ne sont pas acceptés dans certaines implémentations. Les performances seront plus lentes que celles de la production finale.