Les sorties structurées vous permettent de limiter la sortie générée d'un modèle Claude afin qu'elle soit exactement conforme à un schéma JSON spécifique. Cela est utile pour vous assurer que les réponses de vos modèles Claude sont toujours dans le format précis requis pour les applications, les bases de données et les pipelines de traitement en aval.
Les sorties structurées offrent deux fonctionnalités complémentaires que vous pouvez utiliser indépendamment ou ensemble dans la même requête :
- Sorties JSON (
output_config.format) : limitent la réponse textuelle du modèle à un objet JSON correspondant à un schéma que vous fournissez. Utilisez cette option lorsque vous devez extraire des données structurées à partir de texte, générer des rapports structurés ou mettre en forme des réponses d'API. - Utilisation stricte des outils (
tools[].strict) : garantit que les arguments que le modèle transmet à un outil correspondent à l'input_schemade l'outil. Utilisez cette option lorsque vous avez besoin d'appels de fonction de type sécurisé dans des workflows agentifs.
Pour en savoir plus, consultez la documentation d'Anthropic sur la création avec Claude : sorties structurées et utilisation stricte des outils.
Modèles Anthropic Claude compatibles
Gemini Enterprise Agent Platform est compatible avec les sorties structurées pour les modèles Anthropic Claude suivants :
- Claude Opus 4.7
- Claude Sonnet 4.6
- Claude Opus 4.6
- (Bientôt disponible) Claude Opus 4.5
- (Bientôt disponible) Claude Sonnet 4.5
- (Bientôt disponible) Claude Haiku 4.5
Contrôler l'accès aux sorties structurées
Par défaut, les sorties structurées sont désactivées par la contrainte de règle d'administration constraints/vertexai.allowedPartnerModelFeatures. Pour activer les sorties structurées, vous devez configurer cette contrainte afin d'autoriser explicitement la fonctionnalité structured_outputs.
Vous pouvez également configurer la contrainte de règle d'administration constraints/vertexai.allowedModels pour limiter l'accès aux modèles Claude.
Pour obtenir des instructions détaillées sur la configuration des contraintes de règle d'administration, consultez Contrôler l'accès aux modèles Model Garden.
Envoyer une requête de sortie structurée
Pour demander une sortie JSON, envoyez une requête POST au point de terminaison du modèle de l'éditeur et incluez le paramètre output_config dans le corps de votre requête. Le paramètre output_config spécifie le schéma JSON auquel la réponse du modèle doit être conforme.
REST
L'exemple suivant montre comment envoyer une requête à l'API Agent Platform qui extrait des informations de contact structurées à partir d'un e-mail non structuré. La réponse est limitée à un objet JSON avec les champs name, email, plan_interest et demo_requested.
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- LOCATION : région compatible avec les modèles Anthropic Claude. Pour utiliser le point de terminaison global, consultez Spécifier le point de terminaison global.
- MODEL : modèle Claude compatible, par exemple
claude-opus-4-7. - ROLE : rôle associé à un
message. Vous pouvez spécifier
userouassistant. Le premier message doit utiliser le rôleuser. Les modèles Claude fonctionnent avec des toursuseretassistantalternés. Si le message final utilise le rôleassistant, le contenu de la réponse continue immédiatement à partir du contenu de ce message. Cela vous permet de limiter une partie de la réponse du modèle. - CONTENT : contenu du message
userouassistant(du texte, par exemple). Exemple :Extract the key information from this email: John Smith (john@example.com) is interested in our Enterprise plan and wants to schedule a demo for next Tuesday at 2pm. - MAX_TOKENS:
Nombre maximal de jetons pouvant être générés dans la réponse. Un jeton correspond environ à 3,5 caractères. 100 jetons correspondent à environ 60-80 mots.
Spécifiez une valeur inférieure pour obtenir des réponses plus courtes et une valeur supérieure pour des réponses potentiellement plus longues.
- STREAM : valeur booléenne qui spécifie
si la réponse est diffusée ou non. Définissez la valeur sur
truepour diffuser la réponse et surfalsepour la renvoyer simultanément. Les sorties structurées sont généralement renvoyées avecfalse.
L'exemple utilise les champs de sortie structurée suivants. Pour en savoir plus sur chaque champ, consultez la section Champs des requêtes.
output_config: bloc de configuration de premier niveau qui contrôle la structure de la réponse du modèle.output_config.format.type: défini surjson_schemapour limiter la réponse à un objet JSON conforme au schéma fourni.output_config.format.schema: schéma JSON qui définit la structure requise de la réponse du modèle. Le schéma doit être conforme au sous-ensemble de schéma JSON compatible.
Méthode HTTP et URL :
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/anthropic/models/MODEL:rawPredict
Corps JSON de la requête :
{
"anthropic_version": "vertex-2023-10-16",
"messages": [
{
"role": "ROLE",
"content": "CONTENT"
}
],
"max_tokens": MAX_TOKENS,
"stream": STREAM,
"output_config": {
"format": {
"type": "json_schema",
"schema": {
"type": "object",
"properties": {
"name": {"type": "string"},
"email": {"type": "string"},
"plan_interest": {"type": "string"},
"demo_requested": {"type": "boolean"}
},
"required": ["name", "email", "plan_interest", "demo_requested"],
"additionalProperties": false
}
}
}
}
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/anthropic/models/MODEL:rawPredict"
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/anthropic/models/MODEL:rawPredict" | Select-Object -Expand Content
Vous devriez recevoir une réponse JSON semblable à la suivante. Le champ text du bloc content contient une chaîne JSON conforme au schéma que vous avez spécifié dans output_config.
Champs des demandes
Les champs suivants sont spécifiques aux sorties JSON. Pour en savoir plus sur les autres champs de requête, consultez la documentation de référence de l'API Messages Claude.
output_config: bloc de configuration de premier niveau qui contrôle la structure de la réponse du modèle.output_config.format: définition du format de la sortie. Seul le typejson_schemaest compatible.output_config.format.type: type de format de sortie à appliquer. Définissez cette option surjson_schemapour limiter la réponse à un objet JSON.output_config.format.schema: schéma JSON qui définit la structure requise de la réponse du modèle. Les sorties structurées sont compatibles avec le schéma JSON standard, avec quelques limites, par exemple, la nécessité de définiradditionalPropertiessurfalsepour les objets et l'impossibilité de prendre en charge les contraintes numériques ou de longueur de chaîne. Pour obtenir la liste complète des fonctionnalités compatibles et non compatibles, consultez la documentation d'Anthropic sur les limitesdu schéma JSON. Dans le schéma, vous spécifiez généralement les éléments suivants :type: type JSON de la valeur à ce niveau (le plus souventobjectpour le schéma racine).properties: mappage des noms de champs à leurs définitions de type, qui décrivent chaque champ que le modèle doit renvoyer.required: liste des noms de propriétés que le modèle doit inclure dans sa réponse.additionalProperties: valeur booléenne qui, lorsqu'elle est définie surfalse, empêche le modèle d'inclure des champs qui ne sont pas déclarés dansproperties.
Utiliser l'utilisation stricte des outils
L'utilisation stricte des outils garantit que les arguments que le modèle transmet à un outil correspondent à l'input_schema de l'outil. Sans le mode strict, le modèle peut appeler un outil
avec des arguments de type incorrect (par exemple, "2" au lieu de 2) ou omettre
des champs obligatoires, ce qui peut interrompre vos fonctions en aval et nécessiter une logique de nouvelle tentative. Lorsque le mode strict est activé, l'API utilise un échantillonnage contraint par la grammaire pour s'assurer que :
- Le
namede l'outil est toujours l'un des outils que vous avez fournis. - L'outil
inputest toujours conforme à l'input_schemade l'outil.
Utilisez l'utilisation stricte des outils lorsque vous devez valider les paramètres des outils, créer des workflows agentifs, garantir des appels de fonction de type sécurisé ou gérer des outils complexes avec des propriétés imbriquées.
Pour activer l'utilisation stricte des outils, définissez "strict": true comme champ de premier niveau dans la
définition de votre outil, à côté de name, description et input_schema.
REST
L'exemple suivant montre comment envoyer une requête à l'API Agent Platform qui définit un outil get_weather strict. Le modèle est garanti d'appeler l'outil avec une chaîne location et une unit facultative qui est celsius ou fahrenheit.
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- LOCATION : région compatible avec les modèles Anthropic Claude. Pour utiliser le point de terminaison global, consultez Spécifier le point de terminaison global.
- MODEL : modèle Claude compatible, par exemple
claude-opus-4-7. - ROLE : rôle associé à un
message. Le premier message doit utiliser le rôle
user. - CONTENT : contenu du message
userouassistant(du texte, par exemple). Exemple :What is the weather in San Francisco? - MAX_TOKENS:
Nombre maximal de jetons pouvant être générés dans la réponse. Un jeton correspond environ à 3,5 caractères. 100 jetons correspondent à environ 60-80 mots.
Spécifiez une valeur inférieure pour obtenir des réponses plus courtes et une valeur supérieure pour des réponses potentiellement plus longues.
- STREAM : valeur booléenne qui spécifie
si la réponse est diffusée ou non. Définissez la valeur sur
truepour diffuser la réponse et surfalsepour la renvoyer simultanément.
L'exemple utilise les champs d'utilisation stricte des outils suivants. Pour en savoir plus sur chaque champ, consultez la section Champs d'utilisation stricte des outils.
tools[].strict: valeur booléenne qui, lorsqu'elle est définie surtrue, active l'échantillonnage contraint par la grammaire pour l'outil. Le modèle est garanti d'appeler l'outil avec des arguments correspondant à l'input_schema.tools[].input_schema: schéma JSON qui définit les arguments que le modèle peut transmettre à l'outil. Lorsquestrictesttrue, le schéma doit être conforme au même sous-ensemble de schéma JSON que le schémaoutput_configpour les sorties JSON.
Méthode HTTP et URL :
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/anthropic/models/MODEL:rawPredict
Corps JSON de la requête :
{
"anthropic_version": "vertex-2023-10-16",
"messages": [
{
"role": "ROLE",
"content": "CONTENT"
}
],
"max_tokens": MAX_TOKENS,
"stream": STREAM,
"tools": [
{
"name": "get_weather",
"description": "Get the current weather in a given location",
"strict": true,
"input_schema": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city and state, for example San Francisco, CA"
},
"unit": {
"type": "string",
"enum": ["celsius", "fahrenheit"]
}
},
"required": ["location"],
"additionalProperties": false
}
}
]
}
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/anthropic/models/MODEL:rawPredict"
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/anthropic/models/MODEL:rawPredict" | Select-Object -Expand Content
Vous devriez recevoir une réponse JSON semblable à la suivante. Le
tool_use bloc de contenu contient un champ input dont les
clés et les types de valeurs sont garantis de correspondre à l'
input_schema.
Champs d'utilisation stricte des outils
Les champs suivants sont spécifiques à l'utilisation stricte des outils. Pour en savoir plus sur les autres champs de définition d'outil, consultez la documentation d'Anthropic sur la définition des outils.
tools[].strict: valeur booléenne qui, lorsqu'elle est définie surtrue, active l'échantillonnage contraint par la grammaire pour l'outil. Lorsquestrictesttrue, l'entrée de l'outil du modèle est limitée pour correspondre au schéma dansinput_schema. La valeur par défaut estfalse.tools[].input_schema: schéma JSON qui définit les arguments que le modèle peut transmettre à l'outil. Lorsquestrictesttrue, le schéma doit être conforme au même sous-ensemble de schéma JSON que celui utilisé par les sorties JSON. En particulier, vous devez :- Définir
additionalPropertiessurfalsepour chaque objet du schéma. - Lister chaque propriété dans le tableau
required.
- Définir