+140 XP

Demander une sortie structurée : listes, tableaux, JSON

Collez ce bloc désordonné dans ChatGPT : *« Sarah Lee, sarah@acme.io, marketing lead, arrivée en mars 2023. Il y a aussi Raj Patel (raj.patel@acme.io) qui dirige les ventes, il est là depuis 2021. Ah et Mia, notre designer, mia.d@acme.io, a commencé l'automne dernier. »*

Ajoutez maintenant une phrase : *« Transforme ça en tableau avec les colonnes Nom, Email, Rôle, Année d'arrivée. »*

Vous récupérez ceci en quelques secondes :

NomEmailRôleAnnée d'arrivée
Sarah Leesarah@acme.ioMarketing Lead2023
Raj Patelraj.patel@acme.ioVentes2021
Miamia.d@acme.ioDesigner2025

C'est toute la leçon résumée : si vous voulez une forme précise, demandez cette forme. Le modèle réorganisera volontiers votre texte. Il a juste besoin de connaître la cible.

Pourquoi la structure compte

Par défaut, les modèles d'IA répondent en prose : paragraphes, explications, remplissage sympathique. **C'est très bien pour lire. C'est catastrophique pour *utiliser*.**

Si vous voulez :

  • Parcourir des options rapidement, demandez une liste.
  • Comparer des éléments côte à côte, demandez un tableau.
  • Charger des données dans Excel ou Google Sheets, demandez du CSV.
  • Alimenter un autre programme, demandez du JSON.

Chaque format n'est qu'un contenant différent pour la même information. Choisir le bon vous évite le nettoyage de copier-coller plus tard.

Les quatre formats, simplement

Les listes

La structure la plus simple. Utile pour des étapes, des options ou des éléments courts.

*« Donne-moi 5 objets d'email pour un email de lancement. En puces, sans explications. »*

Ajoutez « sans explications » ou « juste la liste » pour empêcher le modèle de rembourrer chaque élément de commentaires.

Les tableaux

Idéal quand chaque élément a les mêmes champs. Le geste décisif consiste à nommer vos colonnes.

*« Résume ces trois ordinateurs portables dans un tableau. Colonnes : Modèle, Prix, Autonomie, Poids. »*

Quand vous nommez les colonnes, le modèle remplit exactement celles-là et rien d'autre. Si vous ne les nommez pas, il devine, et le résultat est plus brouillon.

Le csv

CSV signifie « comma-separated values » (valeurs séparées par des virgules). C'est du texte brut où chaque ligne est un enregistrement et où les virgules séparent les champs. C'est la langue universelle des tableurs.

*« Sors la liste de contacts en CSV avec une ligne d'en-tête. »*
Name,Email,Role,Start Year
Sarah Lee,sarah@acme.io,Marketing Lead,2023
Raj Patel,raj.patel@acme.io,Sales,2021
Mia,mia.d@acme.io,Designer,2025

Copiez ça, collez-le dans un fichier .csv (ou directement dans Google Sheets via Fichier > Importer), et vous avez un tableur opérationnel.

Le json

Le JSON (« JavaScript Object Notation ») est le format que les programmes utilisent pour se transmettre des données. Pas besoin d'être développeur pour le reconnaître : c'est un ensemble d'étiquettes et de valeurs entourées d'accolades et de crochets.

*« Sors les mêmes contacts sous forme de tableau JSON d'objets avec les clés : name, email, role, start_year. »*
json
[
  { "name": "Sarah Lee", "email": "sarah@acme.io", "role": "Marketing Lead", "start_year": 2023 },
  { "name": "Raj Patel", "email": "raj.patel@acme.io", "role": "Sales", "start_year": 2021 },
  { "name": "Mia", "email": "mia.d@acme.io", "role": "Designer", "start_year": 2025 }
]

Vous passerez au JSON quand un autre outil doit lire la sortie : une automatisation dans Zapier ou Make, un script, ou une application que vous construisez.

Si vous voulez savoir à quoi ressemble vraiment du JSON valide, le [site officiel JSON](https://www.json.org/json-en.html) propose une référence claire en une page.

Les formulations exactes qui font obéir les modèles

Les modèles sont bons en structure, mais les demandes vagues donnent des résultats vagues. Ces formulations resserrent la sortie de façon fiable.

Nommez vos champs. « Colonnes : Nom, Email, Rôle » vaut mieux que « fais un tableau ».

Indiquez le format explicitement. « Sors en CSV. » « Renvoie du JSON valide. » « Utilise un tableau markdown. »

Fixez les limites. « Pas d'explication, juste le tableau. » « N'ajoute pas de résumé. » Ça élimine l'intro bavarde et la conclusion « Dis-moi si tu as besoin d'autre chose ! ».

Traitez les données manquantes d'emblée. « Si un champ est inconnu, écris N/A. » Sinon le modèle invente des valeurs ou laisse des trous irréguliers.

Verrouillez la structure quand ça compte. « Chaque objet doit avoir les mêmes clés, même vides. » Ça évite qu'une ligne perde discrètement un champ.

Mis bout à bout, un bon prompt ressemble à ça :

*« À partir du texte ci-dessous, extrais chaque personne. Renvoie du JSON valide : un tableau d'objets avec les clés name, email, role, start_year. Si une valeur manque, utilise null. Aucun commentaire, JSON uniquement. »*

Ce prompt est ennuyeux à dessein. Les prompts ennuyeux produisent une structure fiable.

Un vrai workflow : des notes en vrac vers une feuille propre

Disons que vous avez copié une page d'inscriptions à un événement dans un paragraphe chaotique. Voici la manœuvre complète.

Étape 1. Collez le texte en vrac.

Étape 2. Prompt :

*« Extrais tous les participants en CSV. Ligne d'en-tête, colonnes : Nom, Entreprise, Email, Type de billet. Si un champ manque, laisse-le vide. CSV uniquement, aucun texte en plus. »*

Étape 3. Copiez le résultat dans une nouvelle Google Sheet (Coller, puis Données > Scinder le texte en colonnes si besoin, même si l'import CSV découpe généralement tout seul).

Étape 4. Si quelques lignes semblent fausses, ne relancez pas tout le prompt. Dites simplement : *« La ligne 4 a l'entreprise dans la colonne email, corrige seulement cette ligne. »*

Cette boucle (extraire, vérifier à l'œil, corriger un point) est plus rapide que de nettoyer les données à la main et bien moins sujette à l'erreur que de le faire de tête.

Vérification des acquis

1. D'après la leçon, quel est le principe fondamental pour obtenir une sortie structurée d'un modèle d'IA ?

2. Vous devez charger une liste de contacts dans Google Sheets avec un minimum de nettoyage. Quel format demander à l'IA ?

3. Pourquoi la leçon dit-elle que nommer vos colonnes est « le geste décisif » quand vous demandez un tableau ?

CHOIX MULTIPLES

4. Sélectionnez TOUTES les affirmations correctes sur l'adéquation entre formats de sortie et usages, d'après la leçon.

Sélectionnez toutes les réponses correctes.

CHOIX MULTIPLES

5. Sélectionnez TOUTES les affirmations correctes sur l'importance de la sortie structurée et la façon de la demander.

Sélectionnez toutes les réponses correctes.

Obtenir de la structure via l'API (pour les un peu techniques)

Si vous branchez l'IA dans un programme, vous voulez une sortie fiable *à chaque fois*. En 2026, les grands fournisseurs proposent une fonctionnalité de « structured output » ou de « mode JSON » qui force le modèle à renvoyer du JSON valide conforme à une forme que vous définissez. Fini l'analyse d'accolades cassées.

Voici un exemple minimal avec la librairie Python d'OpenAI. Vous décrivez la forme avec un schéma, et le modèle est contraint de s'y conformer.

python
from openai import OpenAI
client = OpenAI()

messy = "Sarah Lee, sarah@acme.io, marketing lead, joined 2023. Raj Patel raj.patel@acme.io runs sales since 2021."

response = client.chat.completions.create(
    model="gpt-4.1",
    messages=[
        {"role": "system", "content": "Extract people as JSON."},
        {"role": "user", "content": messy},
    ],
    response_format={
        "type": "json_schema",
        "json_schema": {
            "name": "contacts",
            "schema": {
                "type": "object",
                "properties": {
                    "people": {
                        "type": "array",
                        "items": {
                            "type": "object",
                            "properties": {
                                "name": {"type": "string"},
                                "email": {"type": "string"},
                                "role": {"type": "string"},
                                "start_year": {"type": "integer"}
                            },
                            "required": ["name", "email", "role", "start_year"]
                        }
                    }
                },
                "required": ["people"]
            }
        }
    }
)

print(response.choices[0].message.content)

Le bénéfice : la sortie est garantie être du JSON valide avec exactement ces clés. Votre ligne de code suivante peut la charger sans planter. Claude et Gemini offrent des fonctionnalités équivalentes (tool/function calling et modes de sortie structurée), donc le principe se transpose d'un outil à l'autre.

Si vous ne codez pas, vous obtenez déjà l'essentiel de ce bénéfice en écrivant un prompt précis dans la fenêtre de chat. L'API rend simplement la chose infaillible pour un usage répété et automatisé.

Structured Outputs with the OpenAI API

Watch on YouTube

Erreurs courantes et correctifs rapides

Le modèle ajoute du bavardage autour de votre tableau. Ajoutez « Sors le tableau uniquement, aucun texte avant ni après. »

Les nombres reviennent en texte (comme « 2 023 » avec une séparation). Précisez « start_year en entier simple, sans formatage ».

Les lignes n'ont pas les mêmes colonnes. Dites « Chaque ligne doit avoir toutes les colonnes ; utilise null pour les valeurs manquantes. »

Le tableau est trop large pour être lu. Demandez-lui de le basculer : « Fais un tableau vertical avec un attribut par ligne » pour un élément unique, ou scindez en deux tableaux.

Le CSV casse parce qu'un champ contient une virgule (comme « Lee, Sarah »). Dites-lui : « Entoure de guillemets doubles tout champ contenant une virgule. » C'est le comportement CSV standard et les tableurs s'y attendent.

L'état d'esprit

Voyez-vous comme quelqu'un qui tend au modèle un formulaire vierge. Plus le formulaire est clair (colonnes nommées, format indiqué, règles pour les vides), mieux il le remplit. Vous n'espérez pas une bonne sortie. Vous la *spécifiez*.

Une fois que ça clique, vous n'acceptez plus les murs de texte. Vous commencez à dire « en tableau », « en CSV », « en JSON », et vous obtenez des données réellement exploitables.

Points clés

  • Nommez le format et les champs. « Tableau avec les colonnes X, Y, Z » ou « JSON valide avec les clés a, b, c » vaut mieux que n'importe quelle demande vague.
  • Coupez le bavardage avec « pas d'explication, sortie uniquement ». Rien que ça rend le copier-coller propre.
  • Adaptez le format à la destination : listes pour lire, tableaux pour comparer, CSV pour les tableurs, JSON pour les programmes.
  • Anticipez les données manquantes en disant au modèle quoi faire des vides (N/A, null ou vide), pour ne jamais récupérer de valeurs inventées.
  • Pour un travail répété ou automatisé, utilisez le structured output / mode JSON de l'API afin de garantir la forme à chaque fois.

À faire, tiré de cette leçon

Ces actions sont compilées dans le plan d'action du rôle.

  • Nommez les champs exacts et le format, en cohérence avec la destination
  • Définir le traitement des données manquantes dans une sortie structurée
  • Utilisez la structured output de l'API ou le mode JSON pour les travaux automatisés
Voir le plan d'action complet →

Articles liés

Les articles récents du blog qui s'appuient sur cette leçon.