Chargement

Lorsque vous avez besoin que Claude génère des données structurées comme du JSON, du code Python ou des listes à puces, vous rencontrerez souvent un problème courant : Claude veut être utile et ajouter du texte explicatif autour de votre contenu. Bien que cela soit généralement excellent, parfois vous avez besoin uniquement des données brutes, sans rien d'autre.

Imaginez que vous construisez une application web qui génère des règles AWS EventBridge. Les utilisateurs saisissent une description, cliquent sur générer, et s'attendent à voir du JSON propre qu'ils peuvent immédiatement copier et utiliser. Si Claude renvoie le JSON enveloppé dans des blocs de code markdown avec du texte explicatif, les utilisateurs ne peuvent pas simplement copier l'ensemble de la réponse - ils doivent sélectionner manuellement uniquement la partie JSON.

Le problème avec les réponses par défaut

Par défaut, lorsque vous demandez à Claude de générer du JSON, vous pourriez obtenir quelque chose comme ceci :

markdown
```json
\{
  "source": ["aws.ec2"],
  "detail-type": ["EC2 Instance State-change Notification"],
  "detail": \{
    "state": ["running"]
  \}
\}
```

This rule captures EC2 instance state changes when instances start running.

Le JSON est correct, mais il est enveloppé dans un formatage markdown et inclut du texte explicatif. Pour une application web où les utilisateurs ont besoin de copier le JSON brut, cela crée des frictions dans l'expérience utilisateur.

La solution : préremplissage du message de l'assistant + séquences d'arrêt

Vous pouvez combiner le préremplissage du message de l'assistant avec des séquences d'arrêt pour obtenir exactement le contenu que vous souhaitez. Voici comment cela fonctionne :

python
messages = []

add_user_message(messages, "Generate a very short event bridge rule as json")
add_assistant_message(messages, "```json")

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

Cette technique fonctionne ainsi :

  1. Le message de l'utilisateur indique à Claude ce qu'il doit générer
  2. Le message préremplis de l'assistant fait croire à Claude qu'il a déjà commencé un bloc de code markdown
  3. Claude continue en écrivant uniquement le contenu JSON
  4. Lorsque Claude tente de fermer le bloc de code avec ```, la séquence d'arrêt met immédiatement fin à la génération

Le résultat est un JSON propre sans formatage supplémentaire :

json
{
  "source": ["aws.ec2"],
  "detail-type": ["EC2 Instance State-change Notification"],
  "detail": {
    "state": ["running"]
  }
}

Traitement de la réponse

Vous remarquerez peut-être quelques caractères de retour à la ligne supplémentaires dans la réponse. Ils sont faciles à gérer :

python
import json

# Nettoyer et analyser le JSON
clean_json = json.loads(text.strip())

Au-delà du JSON

Cette technique ne se limite pas à la génération de JSON. Utilisez-la chaque fois que vous avez besoin de données structurées sans commentaire :

  • Extraits de code Python
  • Listes à puces
  • Données CSV
  • Tout contenu formaté où vous voulez uniquement le contenu, sans explications

La clé consiste à identifier ce dans quoi Claude souhaite naturellement envelopper votre contenu, puis à utiliser cela comme préremplissage et séquence d'arrêt. Pour le code, il s'agit généralement de blocs de code markdown. Pour les listes, il peut s'agir de marqueurs de formatage différents.

Cette approche vous donne un contrôle précis sur le format de sortie de Claude, ce qui facilite grandement l'intégration de contenu généré par l'IA dans des applications où des données propres et structurées sont essentielles.