Convertir un schéma JSON en sortie structurée pour LLM

Collez un schéma JSON, choisissez la cible et générez l’extrait localement. La page indique les mots-clés écartés, vérifie si le mode strict d’OpenAI est applicable et n’envoie rien à un fournisseur.

Fonctionne localement dans votre navigateur
Tout dans cet outil est traité dans ce navigateur. KivTools ne télécharge pas, ne stocke pas et n’appelle aucune API tierce avec votre entrée.
Schéma JSONCollez un schéma JSON décrivant l’objet que le LLM doit renvoyer. L’outil ne fait que convertir le schéma : aucun prompt, schéma ni clé d’API n’est envoyé.
Extrait d'intégration

Convertir un schéma JSON en extrait de sortie pour LLM

La page lit un schéma JSON et écrit la configuration attendue par chaque fournisseur pour une sortie structurée : un response_format OpenAI, une définition d’outil Anthropic, un generationConfig Gemini ou une interface TypeScript. La conversion est un parcours local de l’arbre du schéma : aucun fournisseur n’est contacté et aucune clé d’API n’intervient.

Les quatre cibles n’acceptant pas les mêmes mots-clés, la ligne d’état énumère ceux que la cible choisie ne peut pas reprendre, et l’extrait est écrit sans eux. Lisez cette ligne avant de coller l’extrait dans une requête : un $ref ou un default écarté change ce que le modèle peut renvoyer.

  1. Collez le schéma JSON dans le panneau de gauche, ou chargez l’exemple pour voir un schéma avec un objet, un enum et un tableau imbriqué.
  2. Choisissez la cible : Sorties structurées OpenAI, schéma d’entrée d’outil Anthropic, schéma de réponse Gemini ou interface TypeScript.
  3. Ajustez le nom du schéma s’il doit correspondre à un nom d’outil ou d’interface dans votre code.
  4. Cliquez sur Générer un extrait et lisez la ligne d’état : elle rappelle ce qui a été écarté, si le mode strict d’OpenAI était possible et si le nom a dû être ajusté.
  5. Copiez ou téléchargez le résultat, puis effacez la page avant de passer au schéma suivant.

Ce que reçoit chaque cible et ce que ce convertisseur ne reprend pas

Ce que reçoit chaque cible

OpenAI reçoit un objet response_format avec un bloc json_schema ; strict n’est écrit à true que lorsque chaque objet du schéma fixe additionalProperties à false et liste toutes ses propriétés dans required, car c’est la forme qu’OpenAI accepte en mode strict. Sinon, l’extrait porte strict: false et un commentaire l’explique.

Anthropic reçoit un objet tool dont l’input_schema est le schéma converti, prêt pour le tableau tools. Gemini reçoit un responseSchema avec des types en majuscules, const transformé en enum à valeur unique et une union nullable convertie en nullable. TypeScript reçoit une interface dont les noms de propriétés correspondent exactement aux clés JSON : les clés qui ne sont pas des identifiants valides sont entre guillemets, les unions comme type: ["string","null"] sont conservées, et une racine qui n’est pas un objet devient un alias export type.

Les mots-clés laissés de côté

Les mots-clés de composition et de référence demandent un résolveur : $ref, $defs, anyOf, oneOf, allOf, not, if/then/else, patternProperties et prefixItems ne sont repris dans aucune cible. Les contraintes que les sorties OpenAI et Anthropic conservent, comme pattern, format, minimum ou maxLength, sont signalées pour Gemini, qui accepte un schéma plus restreint.

L’imbrication est suivie jusqu’à huit niveaux sous la racine ; au-delà, le schéma est remplacé par un schéma vide et la ligne d’état le signale. En TypeScript, les contraintes comme minLength ou pattern n’ont pas leur place : un type décrit une forme, il ne valide pas, elles ne font donc pas partie de l’interface.

Noms, échecs et confidentialité

Le nom du schéma est réduit aux lettres, chiffres, tirets et traits de soulignement ; un champ vide devient structured_response, les noms de plus de 64 caractères sont raccourcis pour les cibles fournisseur, et une interface TypeScript reçoit en plus un identifiant valide, un chiffre initial devenant _123report. Chaque fois que le texte a dû changer, la ligne d’état affiche le nom réellement utilisé.

Quand un passage ne peut pas produire d’extrait - entrée vide, JSON mal formé, tableau, ou objet sans type ni properties - la raison est indiquée, avec ligne et colonne pour les erreurs JSON, et le panneau de sortie est vidé, pour qu’un ancien extrait ne soit jamais pris pour le courant. Rien n’est téléversé : le schéma, le code généré et le nom restent dans le navigateur.

Outils récents :