Structured outputs (sortie JSON contrainte)
IA / LLM 🟡 MidDéfinition
Mécanisme qui force la réponse à respecter un JSON Schema, sans regex ni retries. Anthropic : output_config.format de type json_schema, et strict: true sur les outils pour garantir les arguments. OpenAI : text.format json_schema avec strict: true dans la Responses API. Limites Anthropic : pas de schémas récursifs ni de contraintes numériques (minimum, maximum).
Analogie
Un formulaire à cases au lieu d'une lettre libre : impossible de rendre une réponse hors format.
Exemple de code
import { z } from 'zod';
import { zodToJsonSchema } from 'zod-to-json-schema';
const Ticket = z.object({
categorie: z.enum(['auth', 'paiement', 'design', 'autre']),
urgence: z.enum(['basse', 'moyenne', 'haute']),
resume: z.string(),
}).strict();
const msg = await client.messages.create({
model: 'claude-sonnet-5', max_tokens: 300,
output_config: { format: { type: 'json_schema', schema: zodToJsonSchema(Ticket) } },
messages: [{ role: 'user', content: 'Ticket : le paiement CB échoue depuis hier' }],
});
const ticket = Ticket.parse(JSON.parse(msg.content[0].text)); // toujours valide
Cas d'usage
Extraction vers une base, classification, génération de configuration : tout ce qu'un programme doit parser.
Anti-pattern
Termes liés
En entretien
Explique-moi ce qu'est un structured output.
C'est un mécanisme qui force la réponse du modèle à respecter un JSON Schema donné, sans avoir besoin de regex ni de retries. Chez Anthropic ça passe par output_config.format en json_schema, avec strict: true sur les outils pour garantir les arguments.
Quelle différence avec juste demander « réponds en JSON » dans le prompt ?
Demander « réponds en JSON » dans le prompt puis parser à l'aveugle finit par casser le jour où la réponse commence par « Voici le JSON : ». Le structured output garantit le format au niveau de l'API, comme un formulaire à cases plutôt qu'une lettre libre.
Quelle est une limite connue des structured outputs chez Anthropic ?
Ils ne supportent pas les schémas récursifs ni les contraintes numériques comme minimum ou maximum. Il faut en tenir compte en concevant le schéma.
Sources
Fiche mise à jour le 2026-09-27