Comment obtenir une sortie JSON de ChatGPT et d'autres LLM
By Learnia Team
Comment obtenir une sortie JSON de ChatGPT et d'autres LLM
📅 Dernière mise à jour : 28 janvier 2026
📚 Articles liés : Guide de prompting ChatGPT 5.2 | Techniques de meta-prompting | GPT-5.2-Codex en détail
Table des matières
- →Pourquoi la sortie JSON est importante
- →Techniques de base
- →Problèmes courants
- →Mode JSON natif
- →Comparaison par modèle
- →Patterns JSON avancés
- →FAQ
Obtenir de l'IA une réponse JSON bien formatée au lieu de paragraphes de texte peut sembler magique — quand ça fonctionne. Mais cela peut aussi être frustrant quand le modèle ajoute des commentaires supplémentaires ou casse le format.
Explorons pourquoi la sortie structurée est importante et les concepts clés pour y parvenir correctement.
Learn AI — From Prompts to Agents
Pourquoi la sortie JSON est importante
Quand vous construisez des applications avec l'IA, vous ne voulez pas de la prose — vous voulez des données analysables.
Le problème de la sortie non structurée
Utilisateur : Liste les 3 meilleurs langages de programmation
IA : Bien sûr ! Voici les 3 meilleurs langages de programmation :
1. Python - Idéal pour les débutants et la data science
2. JavaScript - Essentiel pour le développement web
3. TypeScript - JavaScript avec des types
Ce sont tous d'excellents choix selon vos besoins...
C'est agréable pour les humains mais terrible pour le code. Vous ne pouvez pas extraire les données de manière fiable.
La puissance de la sortie structurée
{
"languages": [
{"name": "Python", "use_case": "Data science, débutants"},
{"name": "JavaScript", "use_case": "Développement web"},
{"name": "TypeScript", "use_case": "JavaScript typé"}
]
}
Maintenant votre code peut analyser cela directement. Plus besoin d'acrobaties avec les regex.
Techniques de base pour la sortie JSON
1. Instructions de format explicites
Dites à l'IA exactement quel format vous souhaitez :
Retournez votre réponse sous forme d'objet JSON avec cette structure :
{
"title": "string",
"summary": "string",
"tags": ["tableau", "de", "chaînes"]
}
Ne produisez que le JSON, aucun autre texte.
2. Fournir un exemple
Montrez à l'IA ce que vous attendez :
Extrayez les informations produit de cette description et retournez le résultat en JSON.
Exemple de sortie :
{"name": "Widget Pro", "price": 29.99, "category": "Outils"}
Description : "Le SuperBlender 3000 coûte 149 € et fait partie de notre catégorie Cuisine"
3. Utiliser les messages système (API)
Avec l'API, le message système peut imposer le format :
System : Vous êtes un répondeur JSON uniquement. Produisez du JSON valide et rien d'autre.
Problèmes courants
1. Texte supplémentaire autour du JSON
Le modèle peut dire « Voici le JSON : » avant la sortie effective.
Solution : Soyez explicite : « Produisez UNIQUEMENT du JSON valide. Pas d'introduction, pas d'explication. »
2. Syntaxe JSON invalide
Guillemets manquants, virgules en trop ou crochets cassés.
Solution : Demandez au modèle de valider : « Assurez-vous que le JSON est valide et analysable. »
3. Structure incohérente
Parfois les clés sont présentes, parfois non.
Solution : Définissez le schéma explicitement et indiquez quels champs sont obligatoires.
Quand la sortie structurée excelle
La sortie structurée est essentielle pour :
- →Intégrations API — Alimenter d'autres systèmes avec la sortie IA
- →Stockage en base de données — Stocker les réponses dans un format structuré
- →Workflows d'automatisation — Intégrations Zapier, Make, n8n
- →Rendu frontend — Afficher les sorties IA dans des composants UI
- →Extraction de données — Extraire des informations structurées de texte non structuré
JSON vs. autres formats
| Format | Idéal pour | Limitation |
|---|---|---|
| JSON | API, intégration code | Verbose pour les données simples |
| Markdown | Documentation, sortie lisible | Plus difficile à analyser |
| CSV | Données tabulaires | Pas de structures imbriquées |
| YAML | Fichiers de config, lisibilité humaine | Moins courant dans les API |
Le JSON est le choix le plus universel pour l'usage programmatique.
Mode JSON natif (API)
Les API modernes proposent désormais un mode JSON qui garantit une sortie JSON valide. C'est un changement majeur pour la fiabilité.
Mode JSON OpenAI (GPT-5.2)
import openai
client = openai.OpenAI()
response = client.chat.completions.create(
model="gpt-5.2",
response_format={"type": "json_object"},
messages=[
{"role": "system", "content": "Output valid JSON only."},
{"role": "user", "content": "List top 3 programming languages with use cases"}
]
)
# JSON valide garanti
import json
data = json.loads(response.choices[0].message.content)
Mode JSON Claude
import anthropic
client = anthropic.Anthropic()
message = client.messages.create(
model="claude-sonnet-4-5-20250514",
max_tokens=1024,
messages=[
{
"role": "user",
"content": """Return a JSON object with this exact structure:
{"languages": [{"name": "...", "use_case": "..."}]}
List top 3 programming languages. Output ONLY the JSON."""
}
]
)
Sortie structurée Gemini
Gemini prend en charge la sortie structurée basée sur un schéma :
import google.generativeai as genai
model = genai.GenerativeModel('gemini-3-pro')
response = model.generate_content(
"List top 3 programming languages",
generation_config=genai.GenerationConfig(
response_mime_type="application/json",
response_schema={
"type": "object",
"properties": {
"languages": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {"type": "string"},
"use_case": {"type": "string"}
}
}
}
}
}
)
)
Sortie JSON par modèle
| Modèle | Mode JSON | Validation de schéma | Fiabilité |
|---|---|---|---|
| GPT-5.2 | ✅ Natif | Via function calling | Excellente |
| GPT-4o | ✅ Natif | Via function calling | Très bonne |
| Claude Sonnet 4.5 | ✅ Natif | Via tool use | Excellente |
| Gemini 3 Pro | ✅ Natif | ✅ Basé sur schéma | Excellente |
| DeepSeek V3 | ⚠️ Prompting | Manuelle | Bonne |
| Llama 3 | ⚠️ Prompting | Manuelle | Variable |
Patterns JSON avancés
Pattern 1 : Définition de schéma
Définissez votre schéma explicitement pour des résultats cohérents :
Retournez un objet JSON correspondant à cette interface TypeScript :
interface ProductAnalysis {
name: string;
category: string;
sentiment: "positive" | "negative" | "neutral";
keyFeatures: string[]; // exactement 3 éléments
priceRange: {
min: number;
max: number;
currency: "USD" | "EUR";
};
}
Pattern 2 : Instructions de validation
Demandez au modèle de s'auto-valider :
Avant de produire la sortie, vérifiez votre JSON :
1. Tous les champs obligatoires sont présents
2. Les tableaux ont la longueur correcte
3. Pas de virgules en trop
4. Les chaînes sont correctement entre guillemets
5. Compatible avec JSON.parse()
Si un contrôle échoue, corrigez avant de produire la sortie.
Pattern 3 : Récupération d'erreurs
Gérez le JSON malformé avec élégance :
import json
import re
def parse_llm_json(response: str) -> dict:
# Essayer l'analyse directe
try:
return json.loads(response)
except json.JSONDecodeError:
pass
# Extraire le JSON d'un bloc de code markdown
match = re.search(r'```json?\s*([\s\S]*?)```', response)
if match:
try:
return json.loads(match.group(1))
except json.JSONDecodeError:
pass
# Extraire le premier bloc { }
match = re.search(r'\{[\s\S]*\}', response)
if match:
try:
return json.loads(match.group(0))
except json.JSONDecodeError:
pass
raise ValueError("Impossible d'analyser le JSON de la réponse")
FAQ
Le mode JSON consomme-t-il plus de tokens ?
Non. Le mode JSON n'augmente pas l'utilisation de tokens. Cependant, demander une sortie structurée produit souvent des réponses plus concises.
Peut-on utiliser le mode JSON avec le streaming ?
Oui, mais vous devrez mettre la réponse en mémoire tampon et l'analyser une fois complète, car du JSON partiel n'est pas valide.
Que faire si le modèle retourne du JSON invalide malgré le mode JSON ?
Avec le mode JSON natif, c'est extrêmement rare. Si cela arrive, relancez la requête. Pour les applications critiques, implémentez une logique de validation et de relance.
Faut-il utiliser le function calling au lieu du mode JSON ?
Le function calling (tool use) est préférable quand vous avez besoin que le modèle choisisse entre des actions. Le mode JSON est préférable pour l'extraction de données pure.
Articles liés
- →Guide de prompting ChatGPT 5.2 — Maîtriser les fonctionnalités de GPT-5.2
- →Techniques de meta-prompting — Patterns avancés de prompting
- →GPT-5.2-Codex en détail — Codage avec sortie structurée
- →Commandes slash Claude Code — Sortie structurée en CLI
Points clés à retenir
- →La sortie structurée rend les réponses IA lisibles par les machines
- →Utilisez des instructions de format explicites et des exemples
- →Indiquez « JSON uniquement, aucun autre texte » pour éviter les ajouts
- →Définissez clairement votre schéma pour la cohérence
- →Le mode JSON des API modernes offre des garanties
Prêt à maîtriser les sorties structurées ?
Cet article a couvert le quoi et le pourquoi de l'obtention de JSON depuis l'IA. Mais une sortie structurée fiable nécessite des techniques plus avancées.
Dans notre Module 2 — Sorties structurées, vous apprendrez :
- →Les techniques avancées de définition de schéma
- →Comment gérer les champs optionnels vs obligatoires
- →Les stratégies de validation pour les systèmes de production
- →Le travail avec les structures imbriquées et complexes
- →L'utilisation du mode JSON et des API de function calling
→ Explorer le Module 2 : Sorties structurées
Dernière mise à jour : 28 janvier 2026
Module 2 — Structured Outputs
Learn to get reliable, formatted responses like JSON and tables.
Weekly AI Insights
Tools, techniques & news — curated for AI practitioners. Free, no spam.
Free, no spam. Unsubscribe anytime.
→Related Articles
FAQ
Comment obtenir une sortie JSON de ChatGPT ?+
Utilisez des instructions de format explicites, fournissez des exemples ou activez le mode JSON dans l'API. Indiquez « Produisez UNIQUEMENT du JSON valide, aucun autre texte. »
Qu'est-ce que le mode JSON dans ChatGPT ?+
Le mode JSON garantit une sortie JSON valide depuis l'API. Activez-le avec response_format={'type': 'json_object'} dans votre appel API.
Pourquoi ChatGPT ajoute-t-il du texte autour de mon JSON ?+
Le modèle essaie d'être utile. Empêchez cela en indiquant explicitement « Pas d'introduction, pas d'explication, uniquement la sortie JSON. »
Claude et Gemini peuvent-ils produire du JSON ?+
Oui. Tous les principaux LLM prennent en charge la sortie JSON via un prompting explicite. Claude et GPT-5.2 supportent également le mode JSON natif.
Comment valider le JSON provenant des LLM ?+
Utilisez des bibliothèques de validation de schéma comme Pydantic (Python) ou Zod (TypeScript). Définissez votre structure attendue et validez les réponses.