Générer une sortie structurée (JSON, par exemple) à l'aide de l'API Gemini


Par défaut, Gemini API renvoie les réponses sous forme de texte non structuré. Toutefois, certains cas d'utilisation nécessitent du texte structuré, comme le format JSON. Par exemple, vous pouvez utiliser la réponse pour d'autres tâches en aval qui nécessitent un schéma de données établi.

Pour vous assurer que la sortie générée par le modèle respecte toujours un schéma spécifique, vous pouvez définir un schéma de réponse, qui fonctionne comme un modèle pour les réponses du modèle. Vous pouvez ensuite extraire directement les données des résultats du modèle avec moins de post-traitement.

Voici quelques exemples :

  • Assurez-vous que la réponse d'un modèle produit un fichier JSON valide et est conforme au schéma que vous avez fourni.
    Par exemple, le modèle peut générer des entrées structurées pour les recettes qui incluent toujours le nom de la recette, la liste des ingrédients et les étapes. Vous pouvez ensuite analyser et afficher plus facilement ces informations dans l'interface utilisateur de votre application.

  • Limitez la façon dont un modèle peut répondre lors des tâches de classification.
    Par exemple, vous pouvez demander au modèle d'annoter le texte avec un ensemble spécifique d'étiquettes (par exemple, un ensemble spécifique d'énumérations comme positive et negative), plutôt que les étiquettes produites par le modèle (qui peuvent avoir un degré de variabilité comme good, positive, negative ou bad).

Ce guide vous explique comment générer une sortie JSON en fournissant un responseSchema dans un appel à generateContent. Il se concentre sur les entrées textuelles uniquement, mais Gemini peut également produire des réponses structurées aux requêtes multimodales qui incluent des images, des vidéos et des contenus audio en entrée.

Vous trouverez d'autres exemples au bas de cette page, par exemple comment générer des valeurs d'énumération en sortie. Pour voir d'autres exemples de génération de sortie structurée, consultez la liste des exemples de schémas et de réponses de modèle dans la documentation Google Cloud.

Avant de commencer

Si vous ne l'avez pas déjà fait, suivez le guide de démarrage des SDK Vertex AI in Firebase. Assurez-vous d'avoir effectué les opérations suivantes:

  1. Configurez un projet Firebase nouveau ou existant, y compris en utilisant le forfait Blaze et en activant les API requises.

  2. Associez votre application à Firebase, y compris en l'enregistrant et en ajoutant votre configuration Firebase à votre application.

  3. Ajoutez le SDK et initialisez le service Vertex AI et le modèle génératif dans votre application.

Une fois que vous avez connecté votre application à Firebase, ajouté le SDK et initialisé le service Vertex AI et le modèle génératif, vous pouvez appeler Gemini API.

Étape 1: Définissez un schéma de réponse

Définissez un schéma de réponse pour spécifier la structure de la sortie d'un modèle, les noms des champs et le type de données attendu pour chaque champ.

Lorsqu'un modèle génère sa réponse, il utilise le nom du champ et le contexte de votre requête. Pour que votre intention soit claire, nous vous recommandons d'utiliser une structure claire, des noms de champs non ambigus et même des descriptions si nécessaire.

Éléments à prendre en compte pour les schémas de réponse

Tenez compte des points suivants lorsque vous rédigez votre schéma de réponse:

  • La taille du schéma de réponse est comptabilisée dans la limite des jetons d'entrée.

  • La fonctionnalité de schéma de réponse est compatible avec les types MIME de réponse suivants:

    • application/json: sortie JSON telle que définie dans le schéma de réponse (utile pour les exigences de sortie structurée)

    • text/x.enum: affichez une valeur d'énumération telle que définie dans le schéma de réponse (utile pour les tâches de classification).

  • La fonctionnalité de schéma de réponse est compatible avec les champs de schéma suivants:

    enum
    items
    maxItems
    nullable
    properties
    required

    Si vous utilisez un champ non compatible, le modèle peut toujours traiter votre requête, mais ignore le champ. Notez que la liste ci-dessus est un sous-ensemble de l'objet de schéma OpenAPI 3.0 (voir la documentation de référence sur le schéma de Vertex AI).

  • Par défaut, pour les SDK Vertex AI in Firebase, tous les champs sont considérés comme obligatoires, sauf si vous les spécifiez comme facultatifs dans un tableau optionalProperties. Pour ces champs facultatifs, le modèle peut les renseigner ou les ignorer.

    Notez que ce comportement est l'opposé du comportement par défaut de Vertex AI Gemini API.

Étape 2: Envoyez une invite avec un schéma de réponse pour générer du code JSON.

L'exemple suivant montre comment générer une sortie JSON structurée.

Pour générer une sortie structurée, vous devez spécifier lors de l'initialisation du modèle le responseMimeType approprié (dans cet exemple, application/json) ainsi que le responseSchema que vous souhaitez que le modèle utilise.

L'utilisation de responseSchema est compatible avec Gemini 1.5 Pro et Gemini 1.5 Flash.

Découvrez comment choisir un modèle Gemini et éventuellement une localisation adaptée à votre cas d'utilisation et à votre application.

Exemples supplémentaires

Pour voir d'autres exemples d'utilisation et de génération de sorties structurées, consultez la liste des exemples de schémas et de réponses de modèle dans la documentation Google Cloud.

Générer des valeurs d'énumération en sortie

L'exemple suivant montre comment utiliser un schéma de réponse pour une tâche de classification. Le modèle doit identifier le genre d'un film en fonction de sa description. La sortie est une valeur d'énumération en texte brut que le modèle sélectionne parmi une liste de valeurs définies dans le schéma de réponse fourni.

Pour effectuer cette tâche de classification structurée, vous devez spécifier lors de l'initialisation du modèle le responseMimeType approprié (text/x.enum dans cet exemple) ainsi que le responseSchema que vous souhaitez que le modèle utilise.

Découvrez comment choisir un modèle Gemini et éventuellement une localisation adaptée à votre cas d'utilisation et à votre application.

Autres options pour contrôler la génération de contenu

  • Découvrez la conception d'invites pour pouvoir influencer le modèle afin de générer des résultats spécifiques à vos besoins.
  • Configurez les paramètres du modèle pour contrôler la manière dont le modèle génère une réponse. Ces paramètres incluent le nombre maximal de jetons de sortie, la température, topK et topP.
  • Utilisez les paramètres de sécurité pour ajuster la probabilité de recevoir des réponses pouvant être considérées comme dangereuses, y compris les propos incitant à la haine et les contenus à caractère sexuel explicite.
  • Définissez des instructions système pour orienter le comportement du modèle. Cette fonctionnalité est comme un "préambule" que vous ajoutez avant que le modèle ne soit exposé à d'autres instructions de l'utilisateur final.


Envoyer des commentaires sur votre expérience avec Vertex AI in Firebase