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
Demander « réponds en JSON » dans le prompt puis parser à l'aveugle : un jour la réponse commence par « Voici le JSON : ».
Termes liés
Sources
Fiche mise à jour le 2026-09-27