Options de configuration pour les expériences hybrides dans les applications Android


Cette page décrit les options de configuration suivantes pour les expériences hybrides :

Assurez-vous d'avoir suivi le guide de démarrage pour créer des expériences hybrides.

Définir un mode d'inférence

Les exemples du guide de démarrage utilisent le mode PREFER_ON_DEVICE, mais il ne s'agit que de l'un des quatre modes d'inférence disponibles.

Voici les modes d'inférence disponibles :

  • PREFER_ON_DEVICE : tente d'utiliser le modèle sur l'appareil s'il est disponible et compatible avec le type de requête. Sinon, enregistrez une erreur sur l'appareil, puis revenez automatiquement au modèle hébergé dans le cloud.

    Kotlin

    val config = OnDeviceConfig(mode = InferenceMode.PREFER_ON_DEVICE)
    

    Java

    InferenceMode mode = InferenceMode.PREFER_ON_DEVICE;
    OnDeviceConfig config = new OnDeviceConfig(mode);
    
  • ONLY_ON_DEVICE : tente d'utiliser le modèle sur l'appareil s'il est disponible et compatible avec le type de requête. Sinon, générez une exception.

    Kotlin

    val config = OnDeviceConfig(mode = InferenceMode.ONLY_ON_DEVICE)
    

    Java

    InferenceMode mode = InferenceMode.ONLY_ON_DEVICE;
    OnDeviceConfig config = new OnDeviceConfig(mode);
    
  • PREFER_IN_CLOUD : tente d'utiliser le modèle hébergé dans le cloud si l'appareil est en ligne et si le modèle est disponible. Si l'appareil est hors connexion, revenez au modèle sur l'appareil. Dans tous les autres cas d'échec, générez une exception.

    Kotlin

    val config = OnDeviceConfig(mode = InferenceMode.PREFER_IN_CLOUD)
    

    Java

    InferenceMode mode = InferenceMode.PREFER_IN_CLOUD;
    OnDeviceConfig config = new OnDeviceConfig(mode);
    
  • ONLY_IN_CLOUD : tente d'utiliser le modèle hébergé dans le cloud si l'appareil est en ligne et si le modèle est disponible. Sinon, générez une exception.

    Kotlin

    val config = OnDeviceConfig(mode = InferenceMode.ONLY_IN_CLOUD)
    

    Java

    InferenceMode mode = InferenceMode.ONLY_IN_CLOUD;
    OnDeviceConfig config = new OnDeviceConfig(mode);
    

Déterminer si l'inférence sur l'appareil ou dans le cloud a été utilisée

Si votre mode d'inférence est PREFER_ON_DEVICE ou PREFER_IN_CLOUD, il peut être utile de savoir quel mode a été utilisé pour les requêtes données. Ces informations sont fournies par la propriété inferenceSource de chaque réponse.

Lorsque vous accédez à cette propriété, la valeur renvoyée est ON_DEVICE ou IN_CLOUD.

Kotlin

// ...

print("You used: ${result.response.inferenceSource}")

print(result.response.text)

Java

// ...

System.out.println("You used: " + result.getResponse().getInferenceSource());

System.out.println(result.getResponse().getText());

Spécifier un modèle à utiliser

Cliquez sur votre fournisseur Gemini API pour afficher le contenu et le code spécifiques à ce fournisseur sur cette page.

Vous pouvez spécifier un modèle à utiliser lorsque vous créez l'instance generativeModel (Kotlin | Java).

  • Spécifiez un modèle hébergé dans le cloud :

    • Si votre mode d'inférence est PREFER_ON_DEVICE, PREFER_IN_CLOUD ou ONLY_IN_CLOUD, vous devez spécifier explicitement un modèle hébergé dans le cloud à utiliser. Le SDK ne dispose pas de modèle hébergé dans le cloud par défaut.

    • Trouvez les noms de modèles pour tous les modèles Gemini hébergés dans le cloud compatibles.

  • Spécifiez un modèle sur l'appareil :

    • Si votre mode d'inférence est PREFER_ON_DEVICE, PREFER_IN_CLOUD ou ONLY_ON_DEVICE, vous pouvez facultativement spécifier dans onDeviceConfig une "catégorie" de modèle à utiliser sur l'appareil. Les catégories sont une combinaison de la phase de publication et des caractéristiques de performances.

    • Les valeurs de catégorie acceptées sont listées ci-dessous.
      AICore sélectionne automatiquement le modèle sur l'appareil qui répond aux conditions de la catégorie spécifiée et qui est compatible avec l'appareil. Par exemple, si vous spécifiez PREVIEW et que l'appareil est un Pixel 9, Gemini Nano 4 Full [Preview] (nano-v4-full) sera probablement sélectionné automatiquement.

      • STABLE : dernière version stable du modèle sur l'appareil.

        • Entièrement testé et disponible sur les appareils grand public.

        • Par exemple, Gemini Nano 3 (nano-v3) ou Gemini Nano 2 (nano-v2).

        • Paramètre par défaut du modèle sur l'appareil si aucun OnDeviceModelOption n'est spécifié.

      • PREVIEW : la dernière preview du modèle sur l'appareil avec des capacités de performances complètes.

        • Conçu pour une puissance de raisonnement plus élevée et des tâches complexes.

        • Par exemple, Gemini Nano 4 Full [Preview] (nano-v4-full, qui est basé sur Gemma 4 E4B).

      • PREVIEW_FAST : dernière préversion du modèle rapide sur l'appareil.

        • Optimisé pour une vitesse maximale et une latence plus faible.

        • Par exemple, Gemini Nano 4 Fast [Preview] (nano-v4-fast, basé sur Gemma 4 E2B).

Kotlin

val model = Firebase.ai(backend = GenerativeBackend.googleAI())
    .generativeModel(
        // Specify a cloud-hosted model.
        // Required for `PREFER_ON_DEVICE`, `PREFER_IN_CLOUD`, and `ONLY_IN_CLOUD` inference modes.
        modelName = "CLOUD_HOSTED_MODEL_NAME",
        onDeviceConfig = OnDeviceConfig(
            mode = InferenceMode.INFERENCE_MODE,
            // (Optional) Specify an on-device model category.
            // AICore will auto-select an on-device model based on this category.
            // If not specified, AICore will auto-select the default stable on-device model.
            modelOption = OnDeviceModelOption.ON-DEVICE_MODEL_CATEGORY)
    )

Java

GenerativeModel ai = FirebaseAI.getInstance(GenerativeBackend.googleAI())
    .generativeModel(
        // Specify a cloud-hosted model.
        // Required for `PREFER_ON_DEVICE`, `PREFER_IN_CLOUD`, and `ONLY_IN_CLOUD` inference modes.
        "CLOUD_HOSTED_MODEL_NAME",
        /* config = */ null,
        /* safetySettings = */ null,
        /* tools = */ null,
        /* toolConfig = */ null,
        /* systemInstruction = */ null,
        /* requestOptions = */ new RequestOptions(),
        new OnDeviceConfig(
                /* mode = */ InferenceMode.INFERENCE_MODE,
                /* maxOutputTokens = */ null,
                /* temperature = */ null,
                /* topK = */ null,
                /* seed = */ null,
                /* candidateCount = */ 1,
                // (Optional) Specify an on-device model category.
                // AICore will auto-select an on-device model based on this category.
                // If not specified, AICore will auto-select the default stable on-device model.
                /* modelOption = */ OnDeviceModelOption.ON-DEVICE_MODEL_CATEGORY)
    );

GenerativeModelFutures model = GenerativeModelFutures.from(ai);

Utiliser la configuration du modèle pour contrôler les réponses

Cliquez sur votre fournisseur Gemini API pour afficher le contenu et le code spécifiques à ce fournisseur sur cette page.

Dans chaque requête envoyée à un modèle, vous pouvez inclure une configuration de modèle pour contrôler la manière dont le modèle génère une réponse. Les modèles hébergés dans le cloud et les modèles sur l'appareil offrent différentes options de configuration (paramètres cloud et sur l'appareil).

Pour les modèles hébergés dans le cloud, définissez leur configuration directement dans la configuration du modèle. Toutefois, pour les modèles sur l'appareil, définissez leur configuration dans un onDeviceConfig.

La configuration est conservée pendant toute la durée de vie de l'instance. Si vous souhaitez utiliser une autre configuration, créez une instance GenerativeModel avec cette configuration.

Voici un exemple qui définit les configurations pour les modèles hébergés dans le cloud et sur l'appareil qui pourraient être utilisés si le mode d'inférence PREFER_ON_DEVICE est défini :

Kotlin

val model = Firebase.ai(backend = GenerativeBackend.googleAI())
    .generativeModel("MODEL_NAME",
        // Config for cloud-hosted model
        generationConfig = generationConfig {
          temperature = 0.8f,
          topK = 10
        },
        // Config for on-device model
        onDeviceConfig = onDeviceConfig {
          mode = InferenceMode.PREFER_ON_DEVICE,
          temperature = 0.8f,
          topK = 5
        })

Java

// Config for cloud-hosted model
GenerationConfig generationConfig = new GenerationConfig.Builder()
    .setTemperature(0.8f)
    .setTopK(10)
    .build();

// Config for on-device model
OnDeviceConfig onDeviceConfig = new OnDeviceConfig.Builder()
    .setMode(InferenceMode.PREFER_ON_DEVICE)
    .setTemperature(0.8f)
    .setTopK(5)
    .build();

GenerativeModel ai = FirebaseAI.getInstance(GenerativeBackend.googleAI())
    .generativeModel(
        "MODEL_NAME",
        generationConfig,
        onDeviceConfig
    );

GenerativeModelFutures model = GenerativeModelFutures.from(ai);