Le texte est cohérent. Pourtant, l'application ne peut pas le reprendre, car la quantité apparaît une fois sous la forme « six », une fois sous la forme 6 et une fois sous forme de phrase dans le commentaire. Les sorties structurées donnent un contrat à cette transmission. La partie la plus intéressante commence là où un JSON correct peut être faux sur le fond.
Chez Mistral, les Custom Structured Outputs utilisent pour cela un schéma JSON prédéfini. Les champs et les types de données sont décrits explicitement. Cela organise l'interface entre le modèle et l'application ; cela ne remplace pas la vérification qu'une valeur est réellement étayée par le texte source.
L'inconnu est un état à part entière
Notre note fictive mentionne des classeurs mais aucune quantité. La sortie doit conserver cette valeur manquante. Si vous insérez plutôt une quantité par défaut, l'enregistrement paraît plus complet et perd au passage une information importante.
Un petit schéma, indépendant de tout fournisseur, peut ressembler à ceci. Les mots-clés de schéma pris en charge par une interface donnée doivent être vérifiés dans sa documentation actuelle avant utilisation :
{
"type": "object",
"required": ["artikel", "menge", "klaerung"],
"additionalProperties": false,
"properties": {
"artikel": {"type": "string"},
"menge": {"type": ["integer", "null"], "minimum": 0},
"klaerung": {"type": "string"}
}
}
required exige que le champ soit présent. null autorise néanmoins une valeur explicitement inconnue. La borne inférieure s'applique aux quantités numériques. Savoir si une quantité est admissible pour le processus de commande réel peut nécessiter d'autres règles métier. Avant tout, le schéma indique quelle forme l'application en aval peut attendre.
Un aperçu sans modèle et sans commande
Vous pouvez déjà examiner le traitement avec des données d'exemple fixes. Enregistrez l'extrait HTML suivant, écrit par nos soins, comme fichier d'exemple local et ouvrez-le dans le navigateur. Il affiche un enregistrement mais n'envoie aucune requête API et n'enregistre aucune commande.
<!doctype html>
<meta charset="utf-8">
<p id="ausgabe"></p>
<script>
const daten = { artikel: "Folders", menge: null, klaerung: "Quantity missing" };
function pruefe(d) {
if (!d || typeof d !== "object" || Array.isArray(d)) throw Error("Object expected");
const keys = Object.keys(d).sort().join(",");
if (keys !== "artikel,klaerung,menge") throw Error("Check fields");
if (typeof d.artikel !== "string" || typeof d.klaerung !== "string")
throw Error("Text expected");
if (d.menge !== null && (!Number.isInteger(d.menge) || d.menge < 0))
throw Error("Check quantity");
}
pruefe(daten);
const menge = daten.menge === null ? "not yet known" : String(daten.menge);
document.querySelector("#ausgabe").textContent =
daten.artikel + ": " + menge + ". " + daten.klaerung;
</script>
La fonction est un validateur limité de notre cru, conçu exactement pour ce schéma pédagogique, et non une bibliothèque JSON Schema complète. Remplacez tour à tour la quantité par 6, par -1 et par la chaîne « six ». Ajoutez ensuite un champ inattendu. À chaque fois, observez l'affichage ou le message d'erreur dans les outils de développement.
Vous pouvez ainsi tester une transition avant qu'un modèle n'intervienne. Vous savez comment l'application traite les valeurs connues, inconnues et invalides. Une réponse ultérieure d'un modèle ne peut atteindre cet extrait qu'après avoir satisfait aux mêmes règles.
Vérifier le format et le sens séparément
Un 6 formellement autorisé peut tout de même être faux si la note indique quatre. Dans une application réelle, ajoutez donc si nécessaire une référence à la source et vérifiez les valeurs importantes par rapport à l'entrée. En cas de notes contradictoires, le processus doit produire un point à clarifier plutôt que de choisir un nombre arbitraire.
La sortie utilise textContent. Le texte externe est ainsi inséré comme texte au lieu d'être interprété comme du HTML sans aucune vérification. Les clés de fournisseur n'ont pas leur place dans un extrait de navigateur comme celui-ci. Un appel au modèle constituerait une étape de traitement distincte, avec ses propres accès et sa propre gestion des erreurs.
Présenter l'extrait sur un site web
Si vous souhaitez montrer exactement ce petit affichage sur un site web existant, le mode développeur de KENJTEC WebSiteBuilder ai est aussi un emplacement possible pour votre propre code HTML/JavaScript. L'extrait vérifié est transféré à la main ; l'aperçu du code et vos propres versions de code facilitent la revue ultérieure. Cela ne crée pas de connexion native avec Mistral.
L'enseignement essentiel reste indépendant du lieu d'utilisation : le format du modèle, votre propre validateur, l'affichage sûr et la décision sur le fond ont des rôles différents. En les maintenant séparés, on peut reprendre une sortie d'IA de manière ciblée sans transformer discrètement une réponse plausible en action.
Sources et état
Sources à jour au 25 octobre 2026. Custom Structured Outputs.

