Apercu des capacites
Les sorties structurees (Structured Outputs) permettent a la reponse du modele de respecter strictement un JSON Schema que vous definissez, garantissant que la valeur retournee peut etre directement analysee par votre programme, sans regex ni post-traitement. Contrairement a une simple instruction dans le prompt demandant au modele de “retourner du JSON”, les sorties structurees reposent sur le decodage contraint (Constrained Decoding) : le fournisseur en amont compile le JSON Schema en regles grammaticales qui contraignent la generation token par token lors de l’inference — le modele ne peut pas produire de contenu violant le Schema. Cas d’usage typiques :- Extraction d’entites et de champs a partir de texte non structure
- Classification / etiquetage / analyse de sentiments
- Transmission standardisee de resultats intermediaires dans un raisonnement multi-etapes
- Contraintes de typage fort sur les parametres d’appel d’outils d’un Agent
Correspondance des parametres par protocole
| Protocole | Parametre | Modeles compatibles |
|---|---|---|
OpenAI Chat /v1/chat/completions | response_format.type: "json_schema" | Claude 4.5+, GPT-4o / GPT-5 et successeurs, serie Gemini |
Anthropic Messages /v1/messages | output_config.format.type: "json_schema" | Claude 4.5+ (direct / Vertex) ; Bedrock uniquement 4.5—4.6 |
OpenAI Responses /v1/responses | text.format.type: "json_schema" | Selon les capacites du modele en amont |
Limitations AWS Bedrock
Sur AWS Bedrock, les versions de Claude 4.7 et ulterieures utilisent le chemin d’inference Mantle, qui ne prend actuellement pas en chargeoutput_config.format. La passerelle supprime automatiquement le champ format pour ces modeles et signale la degradation dans un en-tete de reponse (voir Mecanisme de degradation automatique ci-dessous) — la requete ne provoquera pas d’erreur.
Demarrage rapide
Protocole OpenAI (recommande)
Compatible avec tous les modeles prenant en charge les sorties structurees, universel entre fournisseurs.Utilisation d’autres modeles (exemple GLM-5.2)
Le meme jeu de parametres du protocole OpenAI s’applique a tous les modeles prenant en charge les sorties structurees — il suffit de changer le champmodel.
Protocole natif Claude
Utilisation directe via le SDK Anthropic, avec le parametreoutput_config.format.
Points cles pour la redaction du Schema
Champs obligatoires
Tout typeobject doit declarer explicitement additionalProperties: false, sinon certains fournisseurs en amont rejetteront la requete.
Objets imbriques
Lesobject imbriques necessitent egalement additionalProperties: false :
Differences de Schema entre protocoles
| Caracteristique | Protocole OpenAI | Protocole Anthropic |
|---|---|---|
Champ name | Obligatoire | Non pris en charge (gere automatiquement par la passerelle lors des appels inter-protocoles) |
Champ strict | Optionnel, true recommande | Non pris en charge |
Contraintes numeriques (minimum, maximum, etc.) | Prises en charge | Non prises en charge (nettoyees automatiquement par la passerelle, sans impact sur la requete) |
Contraintes de chaine (minLength, maxLength) | Prises en charge | Non prises en charge (nettoyees automatiquement par la passerelle) |
Mecanisme de degradation automatique
Par defaut, la passerelle active la protection par degradation automatique des sorties structurees pour toutes les requetes. Lorsqu’un modele ou une plateforme ne prend pas en charge cette fonctionnalite, la passerelle ne renvoie pas d’erreur mais supprime automatiquement les contraintes de Schema et signale la raison de la degradation dans un en-tete de reponse. Votre requete recevra toujours une reponse normale du modele, mais la sortie ne sera pas soumise aux contraintes strictes du Schema. Cela signifie que vous pouvez activer les sorties structurees de maniere uniforme cote client sans avoir a gerer la compatibilite pour chaque modele :- Changement de modele sans souci : lorsque le meme code bascule entre Claude, GPT, Gemini et GLM, meme si le modele cible ne prend pas en charge les sorties structurees, la requete ne provoquera pas d’erreur
- Routage Fallback transparent : lorsque le canal principal est indisponible et qu’un routage Fallback redirige vers un canal de secours, meme si la version du modele de ce canal ne prend pas en charge les sorties structurees, la requete aboutira normalement
- Logique client simplifiee : inutile de maintenir une liste des modeles compatibles avec les sorties structurees, la passerelle gere tout automatiquement ; le client n’a qu’a verifier l’en-tete de reponse pour decider si une analyse supplementaire est necessaire
En-tetes de reponse
| reason | Signification |
|---|---|
model_unsupported | Ce modele (ou ce modele sur la plateforme actuelle) ne prend pas en charge les sorties structurees |
json_object_unsupported_on_anthropic | Le mode json_object ne peut pas etre converti au format Anthropic |
json_schema_missing_schema | Le type json_schema a ete specifie mais le champ schema est manquant |
schema_keywords_stripped | Certains mots-cles de contrainte du Schema ont ete nettoyes (par ex. minimum, maxLength) |
Exemple de detection
Difference avec le mode json_object
json_schema (Sorties structurees) | json_object | |
|---|---|---|
| Garantie de sortie | Correspondance stricte avec le Schema specifie | Garantit uniquement un JSON valide |
| Controle des champs | Noms, types et caractere obligatoire des champs sont contraints | Aucune contrainte |
| Protocoles compatibles | OpenAI / Anthropic / Responses | Protocole compatible OpenAI uniquement |
| Support Claude | Via output_config.format | Non pris en charge |
Questions frequentes
Quels modeles prennent en charge les Structured Outputs ?
Quels modeles prennent en charge les Structured Outputs ?
output_config.format de l’API Anthropic) :- Opus / Sonnet / Haiku 4.5 et versions ulterieures
- Fable / Mythos 5 et versions ulterieures
- Plateforme Bedrock : uniquement 4.5—4.6 ; Vertex AI identique a l’acces direct
response_format) :- GPT-4o et versions ulterieures, serie GPT-5
responseSchema) :- Gemini 2.5 et versions ulterieures
Pourquoi certains modeles Claude sur Bedrock ne prennent-ils pas en charge les sorties structurees ?
Pourquoi certains modeles Claude sur Bedrock ne prennent-ils pas en charge les sorties structurees ?
output_config.format. La passerelle gere cela automatiquement : elle supprime le champ format et renvoie une reponse normale, tout en ajoutant l’en-tete de degradation X-Structured-Output-Degraded: model_unsupported. Claude 4.5—4.6 est entierement pris en charge sur Bedrock.Le JSON Schema est-il modifie lors d'appels inter-protocoles ?
Le JSON Schema est-il modifie lors d'appels inter-protocoles ?
- La conversion de
response_formatenoutput_config.format - La suppression des mots-cles du Schema non pris en charge par Anthropic (
minimum,maxLength, etc.) - Si des mots-cles ont ete nettoyes, l’en-tete de reponse signale
schema_keywords_stripped
Les Structured Outputs peuvent-ils etre utilises simultanement avec Extended Thinking ?
Les Structured Outputs peuvent-ils etre utilises simultanement avec Extended Thinking ?
format (sorties structurees) dans output_config et le champ effort (intensite de reflexion) dans reasoning sont des parametres independants qui peuvent etre definis simultanement :Quelle est la difference du mecanisme de degradation par rapport a d'autres plateformes d'agregation comme OpenRouter ?
Quelle est la difference du mecanisme de degradation par rapport a d'autres plateformes d'agregation comme OpenRouter ?
X-Structured-Output-Degraded. Votre application ne sera pas interrompue.