Vous pouvez vous assurer que la sortie générée d'un modèle respecte toujours un schéma spécifique afin de recevoir des réponses mises en forme de manière cohérente. Par exemple, vous pouvez avoir un schéma de données établi que vous utilisez pour d'autres tâches. Si le modèle suit le même schéma, vous pouvez extraire directement les données de la sortie du modèle sans aucun post-traitement.
Pour spécifier la structure de la sortie d'un modèle, définissez un schéma de réponse, qui fonctionne comme un plan pour les réponses du modèle. Lorsque vous envoyez une requête et incluez le schéma de réponse, la réponse du modèle suit toujours le schéma défini.
Vous pouvez contrôler la sortie générée lorsque vous utilisez les modèles suivants :
Modèles Gemini :
Modèles ouverts :
Pour les modèles ouverts, suivez ce guide de l'utilisateur.
Exemples de cas d'utilisation
Un schéma de réponse peut par exemple être appliqué pour s'assurer que la réponse d'un modèle produit du code JSON valide et qu'elle est conforme à votre schéma. Les sorties de modèles génératifs peuvent présenter un certain degré de variabilité. Par conséquent, l'inclusion d'un schéma de réponse vous assure de toujours recevoir du code JSON valide. Par conséquent, vos tâches en aval peuvent s'attendre à obtenir une entrée JSON valide à partir des réponses générées.
Un autre exemple consiste à limiter la façon dont un modèle peut répondre. Par exemple, vous pouvez demander à un modèle d'annoter du texte avec des étiquettes définies par l'utilisateur, et non avec celles qu'il produit. Cette contrainte est utile lorsque vous attendez un ensemble spécifique d'étiquettes, comme positive
ou negative
, et que ne voulez pas recevoir une combinaison d'autres étiquettes que le modèle pourrait générer, telles que good
, positive
, negative
ou bad
.
Remarques
Les points suivants décrivent les limites potentielles si vous prévoyez d'utiliser un schéma de réponse :
- Vous devez utiliser l'API pour définir et utiliser un schéma de réponse. La console n'est pas compatible.
- La taille du schéma de réponse est comptabilisée dans la limite des jetons d'entrée.
- Seuls certains formats de sortie sont acceptés, tels que
application/json
outext/x.enum
. Pour en savoir plus, consultez le paramètreresponseMimeType
dans la documentation de référence de l'API Gemini. - La sortie structurée accepte un sous-ensemble de champs indiqués dans la documentation de référence du schéma Vertex AI. Pour en savoir plus, consultez Champs de schéma compatibles.
Un schéma complexe peut entraîner une erreur
InvalidArgument: 400
. Cette complexité peut être due à des noms de propriété longs, des limites de longueur de tableau longues, des énumérations comportant de nombreuses valeurs, des objets avec de nombreuses propriétés facultatives ou d'une combinaison de ces facteurs.Si vous recevez cette erreur avec un schéma valide, apportez une ou plusieurs des modifications suivantes pour la résoudre :
- Raccourcissez les noms de propriété ou d'énumérations.
- Aplatissez les tableaux imbriqués.
- Réduisez le nombre de propriétés à l'aide de contraintes, par exemple des limites minimale et maximale.
- Réduisez le nombre de propriétés à l'aide de contraintes complexes, telles que des propriétés avec des formats complexes comme
date-time
. - Réduisez le nombre de propriétés facultatives.
- Réduisez le nombre de valeurs valides pour les énumérations.
Champs de schéma compatibles
La sortie structurée accepte les champs suivants du schéma Vertex AI. Si vous utilisez un champ non compatible, Vertex AI peut toujours traiter votre requête, mais il ignore le champ.
anyOf
enum
: seuls les enumsstring
sont acceptésformat
items
maximum
maxItems
minimum
minItems
nullable
properties
propertyOrdering
*required
* propertyOrdering
est spécifiquement destiné aux sorties structurées et ne fait pas partie du schéma Vertex AI. Ce champ définit l'ordre dans lequel les propriétés sont générées. Les propriétés listées doivent être uniques et être des clés valides dans le dictionnaire properties
.
Lorsque vous définissez un schéma, le modèle ne suit pas strictement l'ordre des propriétés que vous définissez dans le champ properties
. Pour appliquer un ordre spécifique à la génération des propriétés, utilisez le champ propertyOrdering
. Les propriétés listées dans propertyOrdering
sont générées en premier, dans l'ordre spécifié, suivies de toutes les autres propriétés.
Si vous utilisez le SDK Python, l'ordre par défaut des propriétés suit l'ordre défini dans votre schéma. Dans tous les autres cas, les propriétés sont générées par ordre alphabétique, les propriétés requises étant regroupées en premier, suivies des propriétés facultatives.
Pour le champ format
, Vertex AI accepte les valeurs suivantes : date
, date-time
, duration
et time
. La description et le format de chaque valeur figurent dans le registre OpenAPI Initiative.
Avant de commencer
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. N'utilisez que les champs compatibles, comme indiqué dans la section Remarques. Tous les autres champs sont ignorés.
Incluez votre schéma de réponse uniquement dans le champ responseSchema
. Ne dupliquez pas le schéma dans votre requête d'entrée. Le cas échéant, la sortie générée risquerait d'être de moins bonne qualité.
Pour obtenir des exemples de schémas, consultez Exemples de schémas et de réponses de modèle.
Comportement du modèle et schéma de réponse
Lorsqu'un modèle génère une réponse, il utilise les noms de champs et le contexte de votre requête. Par conséquent, nous vous recommandons d'utiliser une structure claire et des noms de champs non ambigus pour que votre intention soit explicite.
Par défaut, les champs sont facultatifs, ce qui signifie que le modèle peut remplir les champs ou les ignorer. Vous pouvez définir les champs selon vos besoins pour forcer le modèle à fournir une valeur. Si le contexte de la requête d'entrée associée est insuffisant, le modèle génère des réponses principalement basées sur les données sur lesquelles il a été entraîné.
Si les résultats ne sont pas ceux escomptés, ajoutez plus de contexte à vos requêtes d'entrée ou modifiez votre schéma de réponse. Par exemple, examinez la réponse du modèle sans sortie structurée pour voir comment le modèle répond. Vous pouvez ensuite modifier le schéma de réponse pour qu'il corresponde mieux à la sortie du modèle.
Envoyer une requête avec un schéma de réponse
Par défaut, tous les champs sont facultatifs, ce qui signifie qu'un modèle peut générer une réponse à un champ. Pour forcer le modèle à toujours générer une réponse à un champ, définissez le champ comme obligatoire.
Python
Installation
pip install --upgrade google-genai
Pour en savoir plus, consultez la documentation de référence du SDK.
Définissez des variables d'environnement pour utiliser le SDK Gen AI avec Vertex AI :
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=global export GOOGLE_GENAI_USE_VERTEXAI=True
Go
Découvrez comment installer ou mettre à jour le Go.
Pour en savoir plus, lisez la documentation de référence du SDK.
Définissez des variables d'environnement pour utiliser le SDK Gen AI avec Vertex AI :
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=global export GOOGLE_GENAI_USE_VERTEXAI=True
Node.js
Installer
npm install @google/genai
Pour en savoir plus, consultez la documentation de référence du SDK.
Définissez des variables d'environnement pour utiliser le SDK Gen AI avec Vertex AI :
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=global export GOOGLE_GENAI_USE_VERTEXAI=True
REST
Avant d'utiliser les données de requête, remplacez les éléments suivants :
- GENERATE_RESPONSE_METHOD : type de réponse que le modèle doit générer.
Choisissez la méthode de renvoi de la réponse du modèle :
streamGenerateContent
: la réponse s'affiche progressivement à mesure qu'elle est générée afin que les utilisateurs ressentent moins la latence.generateContent
: la réponse est renvoyée une fois qu'elle a été entièrement générée.
- LOCATION : région dans laquelle traiter la requête.
- PROJECT_ID : ID de votre projet.
- MODEL_ID : ID du modèle multimodal que vous souhaitez utiliser.
- ROLE : rôle dans une conversation associée au contenu. La spécification d'un rôle est requise, même dans les cas d'utilisation à un seul tour.
Les valeurs acceptées incluent les suivantes :
USER
: spécifie le contenu que vous envoyez.
- TEXT : instructions textuelles à inclure dans la requête.
- RESPONSE_MIME_TYPE : type de format du texte candidat généré. Pour obtenir la liste des valeurs acceptées, consultez le paramètre
responseMimeType
dans l'API Gemini. - RESPONSE_SCHEMA : schéma que le modèle doit suivre lors de la génération des réponses. Pour en savoir plus, consultez la documentation de référence sur le schéma.
Méthode HTTP et URL :
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:GENERATE_RESPONSE_METHOD
Corps JSON de la requête :
{ "contents": { "role": "ROLE", "parts": { "text": "TEXT" } }, "generation_config": { "responseMimeType": "RESPONSE_MIME_TYPE", "responseSchema": RESPONSE_SCHEMA, } }
Pour envoyer votre requête, choisissez l'une des options suivantes :
curl
Enregistrez le corps de la requête dans un fichier nommé request.json
, puis exécutez la commande suivante :
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:GENERATE_RESPONSE_METHOD"
PowerShell
Enregistrez le corps de la requête dans un fichier nommé request.json
, puis exécutez la commande suivante :
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:GENERATE_RESPONSE_METHOD" | Select-Object -Expand Content
Vous devriez recevoir une réponse JSON semblable à la suivante.
Exemple de commande curl
LOCATION="us-central1"
MODEL_ID="gemini-2.5-flash"
PROJECT_ID="test-project"
GENERATE_RESPONSE_METHOD="generateContent"
cat << EOF > request.json
{
"contents": {
"role": "user",
"parts": {
"text": "List a few popular cookie recipes."
}
},
"generation_config": {
"maxOutputTokens": 2048,
"responseMimeType": "application/json",
"responseSchema": {
"type": "array",
"items": {
"type": "object",
"properties": {
"recipe_name": {
"type": "string",
},
},
"required": ["recipe_name"],
},
}
}
}
EOF
curl \
-X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/publishers/google/models/${MODEL_ID}:${GENERATE_RESPONSE_METHOD} \
-d '@request.json'
Exemples de schémas pour la sortie JSON
Les sections suivantes présentent divers exemples de requêtes et de schémas de réponse. Un exemple de réponse du modèle est également inclus après chaque exemple de code.
- Prévoir la météo pour chaque jour de la semaine dans un tableau
- Classer un produit avec une énumération bien définie
Prévoir la météo pour chaque jour de la semaine
L'exemple suivant génère un objet forecast
pour chaque jour de la semaine, qui inclut un tableau de propriétés (par exemple, température et taux d'humidité attendus pour la journée). Certaines propriétés sont définies sur "nullable" afin que le modèle puisse renvoyer une valeur nulle lorsqu'il ne dispose pas de suffisamment de contexte pour générer une réponse pertinente. Cette stratégie permet de réduire les hallucinations.
Python
Installation
pip install --upgrade google-genai
Pour en savoir plus, consultez la documentation de référence du SDK.
Définissez des variables d'environnement pour utiliser le SDK Gen AI avec Vertex AI :
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=global export GOOGLE_GENAI_USE_VERTEXAI=True
Go
Découvrez comment installer ou mettre à jour le Go.
Pour en savoir plus, lisez la documentation de référence du SDK.
Définissez des variables d'environnement pour utiliser le SDK Gen AI avec Vertex AI :
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=global export GOOGLE_GENAI_USE_VERTEXAI=True
Node.js
Installer
npm install @google/genai
Pour en savoir plus, consultez la documentation de référence du SDK.
Définissez des variables d'environnement pour utiliser le SDK Gen AI avec Vertex AI :
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=global export GOOGLE_GENAI_USE_VERTEXAI=True
Classer un produit
L'exemple suivant inclut des énumérations dans lesquelles le modèle doit classer le type et la condition d'un objet à partir d'une liste de valeurs données.
Python
Installation
pip install --upgrade google-genai
Pour en savoir plus, consultez la documentation de référence du SDK.
Définissez des variables d'environnement pour utiliser le SDK Gen AI avec Vertex AI :
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=global export GOOGLE_GENAI_USE_VERTEXAI=True
Go
Découvrez comment installer ou mettre à jour le Go.
Pour en savoir plus, lisez la documentation de référence du SDK.
Définissez des variables d'environnement pour utiliser le SDK Gen AI avec Vertex AI :
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=global export GOOGLE_GENAI_USE_VERTEXAI=True
Node.js
Installer
npm install @google/genai
Pour en savoir plus, consultez la documentation de référence du SDK.
Définissez des variables d'environnement pour utiliser le SDK Gen AI avec Vertex AI :
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=global export GOOGLE_GENAI_USE_VERTEXAI=True
Java
Découvrez comment installer ou mettre à jour le Java.
Pour en savoir plus, lisez la documentation de référence du SDK.
Définissez des variables d'environnement pour utiliser le SDK Gen AI avec Vertex AI :
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=global export GOOGLE_GENAI_USE_VERTEXAI=True