Structured outputs (sortie JSON contrainte)

IA / LLM 🟡 Mid

Dé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 : ».
#ia#api#typescript#interview

Fiche mise à jour le 2026-09-27

← → au clavier pour passer d'une fiche à l'autre