Skip to main content

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

Les noms de parametres different selon les trois protocoles, mais le mecanisme sous-jacent est identique : la sortie du modele correspond strictement au JSON Schema que vous fournissez.

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 champ model.
Python

Protocole natif Claude

Utilisation directe via le SDK Anthropic, avec le parametre output_config.format.

Points cles pour la redaction du Schema

Champs obligatoires

Tout type object doit declarer explicitement additionalProperties: false, sinon certains fournisseurs en amont rejetteront la requete.

Objets imbriques

Les object imbriques necessitent egalement additionalProperties: false :

Differences de Schema entre protocoles

Lorsque vous appelez un modele Claude via le protocole OpenAI, la passerelle convertit automatiquement le format du Schema et nettoie les mots-cles incompatibles — aucune adaptation manuelle n’est necessaire.

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
  • Repli transparent : Même si la version du modèle qui traite finalement votre requête ne prend pas en charge les sorties structurées, la requête aboutit normalement, la dégradation étant signalée dans l’en-tête de réponse
  • 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

Exemple de detection

Python

Difference avec le mode json_object

Le mode json_object ne peut pas etre converti vers le protocole natif Claude. Si vous envoyez response_format: {"type": "json_object"} a Claude via le protocole OpenAI, l’en-tete de reponse signalera une degradation json_object_unsupported_on_anthropic. Il est recommande d’utiliser directement le type json_schema.

Questions frequentes

Serie Claude (via output_config.format de l’API Anthropic) :
  • Opus / Sonnet / Haiku 4.5 et versions ulterieures
  • Fable / Mythos 5 et versions ulterieures
Serie OpenAI (via response_format) :
  • GPT-4o et versions ulterieures, serie GPT-5
Serie Gemini (via responseSchema) :
  • Gemini 2.5 et versions ulterieures
Vous pouvez consulter les etiquettes de capacites de chaque modele sur la page de liste des modeles.
Oui. Lorsque vous appelez un modele Claude via le protocole OpenAI, la passerelle effectue automatiquement :
  1. La conversion de response_format en output_config.format
  2. La suppression des mots-cles du Schema non pris en charge par Anthropic (minimum, maxLength, etc.)
  3. Si des mots-cles ont ete nettoyes, l’en-tete de reponse signale schema_keywords_stripped
La conversion inverse (protocole Claude vers modele OpenAI) est egalement automatique.
Oui. Le champ format (sorties structurees) dans output_config et le champ effort (intensite de reflexion) dans reasoning sont des parametres independants qui peuvent etre definis simultanement :
La plupart des plateformes d’agregation d’API renvoient directement une erreur lorsqu’un modele ne prend pas en charge les sorties structurees. AIHubMix adopte une strategie de degradation gracieuse : suppression automatique des parametres incompatibles, retour normal de la reponse du modele, et notification au client de la raison de la degradation via l’en-tete X-Structured-Output-Degraded. Votre application ne sera pas interrompue.