Accueil → Aide

Le mode JSON renvoie quand même un texte impossible à analyser

Le mode JSON simple ne promet un JSON syntaxiquement valide que si le modèle va jusqu'au bout. Il ne promet pas votre schéma, et ne peut rien promettre du tout si la génération s'arrête plus tôt sur max_tokens.

Ce que vous voyez

Pourquoi cela arrive

Atteindre la limite de sortie tronque l'objet au milieu d'un token. Le résultat est impossible à analyser sans que le prompt y soit pour quelque chose : vérifiez finish_reason avant de vérifier le parseur.

Le mode JSON de base n'a pas de schéma. Le modèle peut renvoyer un JSON valide avec d'autres clés, ou avec une structure imbriquée inattendue, qui s'analysera sans problème tout en cassant votre code.

Certains modèles entourent la sortie de délimiteurs de code markdown quand le prompt contient des exemples ainsi formatés. Le contenu est bon ; c'est l'emballage qui fait échouer.

Comment le corriger

  1. Vérifiez finish_reason avant d'analyserUn finish_reason égal à length signifie une troncature. Augmentez max_tokens ou demandez un objet plus petit au lieu de déboguer le parseur.
  2. Utilisez une sortie contrainte par schéma si le modèle la prend en chargeC'est le fait de passer un JSON schema, plutôt que de demander du JSON en toutes lettres, qui contraint réellement les clés. Validez quand même le résultat.
  3. Retirez les délimiteurs par précautionUn prétraitement de trois lignes qui supprime les délimiteurs de bloc de code en début et en fin ne coûte rien et élimine toute une catégorie d'échecs.
Une sortie tronquée reste une sortie générée, elle est donc facturée sur APICLAN. Lire finish_reason et dimensionner correctement max_tokens vous épargne la relance, qui est le vrai coût.

Voir aussi

Unexpected token '<' lors d'un appel à une API compatible OpenAI401 invalid API key : quand la clé semble correcte mais échoue quand même

Dernière vérification le 2026-10-01. Rédigé à partir de problèmes diagnostiqués sur une passerelle compatible OpenAI en production, pas compilé à partir d'autres sites.