Sélectionnez un modèle

L'API Prompt vous permet de sélectionner explicitement la version de Gemini Nano utilisée par votre application. En configurant la phase de version 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 : la phase de version et la préférence de modèle.

Phases de version

La phase de version vous permet de choisir entre un modèle stable ou un modèle en preview :

  • 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.
  • Preview (ModelReleaseStage.PREVIEW) : sélectionne la dernière version du modèle en phase de preview. Cette phase vous permet de tester les fonctionnalités bêta ou les architectures de modèle plus récentes avant qu'elles ne soient largement déployées en phase stable.

Pour connaître les prérequis et obtenir des instructions d'inscription à la preview développeur, consultez le guide 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 du modèle et ses fonctionnalités complètes 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 rapide à partir de la phase de 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 version 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 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.

  • Initialiser le client : créez l'instance GenerativeModel à l'aide du ModelConfig de votre choix.
  • 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 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

  • Mettre en œuvre des stratégies de secours : comme la disponibilité des modèles en preview n'est pas garantie sur tous les appareils, mettez toujours en œuvre une stratégie de secours. Si checkStatus() renvoie false pour une configuration en preview, votre application doit revenir à ModelReleaseStage.STABLE et ModelPreference.FULL.
  • Utiliser les phases de version du modèle pour le développement et la production : utilisez la phase de preview pendant le développement et les tests internes pour évaluer les améliorations à venir du modèle. Passez à la phase stable pour vos versions publiques en production afin de garantir un comportement cohérent pour vos utilisateurs.

Problèmes connus

  • Pour certains appareils en phase de version preview, ils ne seront pas compatibles avec plusieurs candidats dans la sortie et renverront une erreur si candidateCount est défini sur une valeur supérieure à 1. Pour en savoir plus, consultez la documentation de référence de l'API.
  • Plusieurs exemples ne sont pas compatibles avec certaines implémentations. Les performances seront plus lentes que celles de la production finale.
  • L'entrée d'image ne fonctionne actuellement que sur le Pixel 10.
  • Le modèle nanov4-fast peut donner de mauvaises réponses pour certaines requêtes sur certains appareils.