hack
Étincelle
0 XP / 250
M8 · L'API Anthropicleçon 3/4 · 9 min

Sorties structurées : le pattern d'or

Exiger du JSON strict et le parser : la technique qui transforme Claude en brique logicielle fiable.

🧠 Concept — Du texte libre au JSON strict

Un humain lit du texte libre. Un programme a besoin de champs prévisibles. Le pattern d'or de l'API :

  1. Dans le prompt, tu exiges un format JSON strict : « Réponds UNIQUEMENT en JSON : {"categorie": ..., "urgence": 1-5, "resume": ...} — aucun texte avant ou après. »
  2. Tu parses la réponse avec json.loads().
  3. Ton code exploite les champs : router le ticket, remplir la base, alerter Slack.

C'est CE pattern qui débloque les cas d'usage Electra en production :

  • Classification automatique des tickets Intercom : catégorie, urgence, résumé → routage vers la bonne équipe ;
  • Extraction de champs depuis les courriers mairie scannés : commune, objet, date limite de réponse, référence parcelle → directement dans le suivi foncier ;
  • Génération de descriptions de stations pour le site : nombre de bornes, puissance, services à proximité → JSON prêt pour le CMS.

classifieur_tickets.py — un classifieur Intercom complet

import anthropic
import json

client = anthropic.Anthropic()  # clé lue depuis l'environnement

SYSTEM = """Tu es le classifieur de tickets support d'Electra
(recharge rapide de véhicules électriques).
Réponds UNIQUEMENT avec un objet JSON valide, sans texte
avant ou après, au format exact :
{"categorie": "panne_borne" | "facturation" | "roaming" | "application" | "autre",
 "urgence": 1-5,
 "resume": "une phrase",
 "station": "nom de la station si mentionnée, sinon null"}"""

def classifier_ticket(texte: str) -> dict:
    response = client.messages.create(
        model="claude-haiku-4-5",  # volume élevé -> modèle rapide/éco
        max_tokens=300,
        system=SYSTEM,
        messages=[{"role": "user", "content": texte}],
    )
    brut = response.content[0].text
    try:
        return json.loads(brut)
    except json.JSONDecodeError:
        # Filet de sécurité : on n'insère JAMAIS du JSON invalide en base
        return {"categorie": "autre", "urgence": 3,
                "resume": "PARSE_ERROR", "station": None}

ticket = ("Bonjour, je suis à la station de Nice Lingostière, "
          "la borne 5 s'arrête au bout de 2 minutes et j'ai été "
          "débité de 12 EUR. Je dois repartir dans 20 minutes !")

resultat = classifier_ticket(ticket)
print(resultat["categorie"], "- urgence", resultat["urgence"])
print(resultat["resume"])

⚠️ Piège classique — Ne fais jamais confiance au JSON les yeux fermés

Même avec la consigne « UNIQUEMENT du JSON », un modèle peut occasionnellement dévier : texte parasite, champ manquant, urgence à 7 sur une échelle de 5. Trois réflexes de prod :

  • try/except autour du parsing (comme dans le script) : un ticket mal classé vaut mieux qu'un pipeline planté à 3 h du matin ;
  • valider les valeurs : la catégorie est-elle dans la liste autorisée ? L'urgence entre 1 et 5 ?
  • pour du critique, regarde le tool use côté docs.claude.com : définir la sortie comme un schéma d'outil contraint encore mieux le format que la consigne en prompt.

🎯 Le pattern est-il en place ?

0/2 répondue · 0 juste

1.Pourquoi exiger « UNIQUEMENT du JSON, sans texte avant ou après » ?

2.Le classifieur reçoit un jour une réponse non parsable. Grâce au try/except, il…

🛠️ À toi de jouer — 🛠️ Adapte le classifieur à TON métier

Le classifieur de tickets n'est qu'un gabarit. Prends le prompt ci-dessous et transforme-le en outil pour TES documents : courriers mairie si tu es au foncier, comptes-rendus de visite si tu es au déploiement, demandes de raccordement si tu es à l'énergie…

Ton point de départ
Voici un classifieur de tickets Electra en Python [colle classifieur_tickets.py]. Adapte-le à mon métier : je traite des [décris tes documents : courriers de mairies, comptes-rendus de visite technique, demandes de raccordement Enedis...]. 1) Propose-moi un schéma JSON avec 4 à 6 champs vraiment utiles pour ce type de document (justifie chaque champ). 2) Réécris le SYSTEM prompt en conséquence. 3) Génère 3 documents fictifs réalistes et exécute le classifieur dessus. 4) Montre-moi les JSON produits et signale toute valeur douteuse.

Checklist de validation