L'accès direct au modèle 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 les préférences 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 : l'étape de lancement et la préférence de modèle.
Étapes de lancement
La phase de lancement vous permet de choisir entre un modèle stable ou en version preview :
- Stable (
ModelReleaseStage.STABLE) : sélectionne la dernière version du modèle entièrement testée et 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 nouvelles architectures de modèles avant qu'elles ne soient déployées à grande échelle dans l'étape stable.
Pour connaître les conditions préalables 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.
- Complet (
ModelPreference.FULL) : cette préférence est recommandée lorsque la précision du modèle et l'ensemble des fonctionnalités sont prioritaires 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 l'étape 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 d'étapes de lancement et de préférences 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. À la place, initialisez le client avec la configuration souhaitée, puis vérifiez son état.
- Initialiser 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é ascendante avec d'éventuelles configurations futures, 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
- Mettre en œuvre des stratégies de remplacement : étant donné que la disponibilité des modèles en preview n'est pas garantie sur tous les appareils, mettez toujours en œuvre une stratégie de remplacement. Si
checkStatus()renvoiefalsepour une configuration d'aperçu, votre application doit revenir correctement àModelReleaseStage.STABLEetModelPreference.FULL. - Utilisez les étapes de publication du modèle pour le développement et la production : utilisez l'étape Preview pendant le développement et les tests internes pour évaluer les améliorations à venir 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
- Certains appareils en phase de version preview ne sont pas compatibles avec plusieurs candidats dans la sortie et renvoient une erreur si
candidateCountest défini sur une valeur supérieure à 1. Pour en savoir plus, consultez la documentation de référence de l'API. - Les échantillons multiples ne sont pas compatibles avec certaines implémentations. Les performances seront plus lentes que celles de la production finale.