Aller au contenu principal

Donnees structurees

Quand vous avez besoin que Claude genere des donnees structurees (JSON, code Python, listes), un probleme revient souvent : Claude ajoute spontanement du texte explicatif, des en-tetes ou du formatage Markdown autour du contenu. Ces ajouts compliquent l’utilisation programmatique de la sortie.

Imaginez une application web qui genere des regles AWS EventBridge. L’utilisateur entre une description, clique sur “generer” et attend un JSON propre qu’il peut copier directement. Si Claude renvoie le JSON enveloppe dans un bloc de code Markdown avec du texte explicatif, l’utilisateur ne peut pas simplement copier l’ensemble.

Le probleme des reponses par defaut

Par defaut, Claude tend a formater les sorties structurees ainsi :

# Regle EventBridge
{json}
{
  "source": ["aws.ec2"],
  "detail-type": ["EC2 Instance State-change Notification"],
  "detail": {"state": ["running"]}
}
{/json}
Cette regle capture les changements d'etat des instances EC2.

C’est bien pour de la documentation, mais problematique pour un usage programmatique.

La solution : pre-remplissage + sequences d’arret

En combinant le pre-remplissage du message assistant avec les sequences d’arret, vous obtenez exactement le contenu voulu :

messages = []
add_user_message(messages, "Generez une regle EventBridge courte en JSON")
add_assistant_message(messages, "```json")

text = chat(messages, stop_sequences=["```"])

Cette technique fonctionne ainsi :

  1. Le pre-remplissage avec le delimiteur d’ouverture fait croire a Claude qu’il a deja commence le bloc de code
  2. Claude genere directement le contenu JSON
  3. Quand Claude tente de fermer le bloc Markdown, la sequence d’arret interrompt la generation
  4. Vous recuperez uniquement le contenu JSON

Traitement du resultat

Le texte retourne peut contenir des caracteres de saut de ligne. Nettoyez-le facilement :

import json

# Valider et formater en tant que JSON
parsed_data = json.loads(text.strip())

# Ou simplement nettoyer les espaces
clean_text = text.strip()

Au-dela du JSON

Cette technique s’applique a tout type de donnees structurees :

  • Snippets de code Python
  • Listes a puces
  • Donnees CSV
  • Fichiers de configuration
  • Tout format ou une sortie propre et copiable est necessaire

Le principe : identifiez les delimiteurs que Claude utiliserait naturellement autour de votre type de contenu, pre-remplissez le delimiteur d’ouverture et arretez-vous au delimiteur de fermeture.