Aller au contenu principal
Leçon 32 sur 67 · Claude sur Amazon Bedrock

Extraction flexible avec outils

Leçon 32 sur 67 Mis à jour le 5 novembre 2026 Développeur
Sur cette page
  1. Un outil qui accepte tout
  2. Décrire la structure dans le prompt
  3. Changer la structure en une ligne
  4. Quand choisir quoi
  5. À vous de jouer
  6. Points clés à retenir

L’extraction par outil de la leçon 31 est fiable, mais chaque nouveau format de données exige son schéma, et chaque évolution une réécriture. Le cours officiel propose une astuce : un outil générique, dont le schéma accepte n’importe quel objet, et une structure décrite dans le prompt.

Un outil qui accepte tout

to_json_schema = {
    "toolSpec": {
        "name": "to_json",
        "description": "Reçoit les données extraites, sous la forme d'un objet JSON dont la structure est décrite dans la demande.",
        "inputSchema": {
            "json": {
                "type": "object",
                "additionalProperties": True,
            }
        },
    }
}

Le schéma ne contraint presque rien : un objet, avec toutes les propriétés qu’on voudra. C’est le prompt qui décrit la structure attendue. L’outil ne peut donc pas être strict : les sorties garanties exigent "additionalProperties": False.

Décrire la structure dans le prompt

Schéma dédié ou outil flexible Deux colonnes : le schéma dédié porte la structure, permet strict et se réécrit à chaque évolution ; l'outil to_json reçoit la structure dans le prompt, sans garantie formelle, et évolue d'une ligne. EXTRACTION FLEXIBLE Schéma dédié ou outil flexible Schéma dédié Structure Dans le schéma. Garantie strict possible. Évolution Réécrire le schéma. Outil to_json Structure Dans le prompt. Garantie Aucune garantie formelle. Évolution Une ligne du prompt. Selon le cours officiel : environ 90 % de la qualité pour 10 % du travail.
D'après la leçon « Flexible tool extraction » (Claude Academy, Claude with Amazon Bedrock).
messages = []
add_user_message(messages, f"""Analyse l'article ci-dessous et extrais ses données clés, puis appelle l'outil to_json.

<article>
{article_text}
</article>

Quand tu appelles to_json, passe la structure suivante :
{{
    "title": str,         # titre de l'article
    "author": str,        # auteur de l'article
    "topics": List[str]   # sujets abordés
}}""")

result = chat(messages, tools=[to_json_schema], tool_choice="to_json")
data = next(part["toolUse"]["input"] for part in result["parts"] if "toolUse" in part)

La structure est décrite en pseudo-code, avec des types Python et un commentaire par champ. Ce n’est pas du JSON Schema, mais Claude le lit comme un contrat. Les accolades sont doublées ({{ et }}) parce que le prompt est une f-string : elles s’affichent simples dans le texte envoyé.

Changer la structure en une ligne

L’avantage apparaît quand le format évolue. Pour ajouter le nombre de sujets, une ligne suffit dans le prompt :

"num_topics": int     # nombre de sujets abordés

Aucun schéma à modifier.

Quand choisir quoi

  • L’outil flexible convient au prototypage, aux extractions simples et aux formats qui changent souvent.
  • Le schéma dédié, avec strict, s’impose pour l’extraction critique en production, les structures imbriquées complexes et les cas où la précision est non négociable.

Selon le cours officiel, l’approche flexible donne environ 90 % de la qualité pour 10 % du travail de mise en place. Sur un modèle qui refuse le choix d’outil forcé, la leçon 31 donne les alternatives.

À vous de jouer

De flexible à strict. Faites évoluer la structure trois fois avec l’outil to_json (ajoutez la date, le nombre de mots, une liste de citations), puis écrivez le schéma dédié de la version finale avec "strict": True. Lancez les deux sur cinq articles : où la version flexible se trompe-t-elle ?

Sources officielles : Flexible tool extraction (Claude Academy) · Get validated JSON results from models (documentation AWS)

Points clés à retenir

  • Un outil to_json qui accepte tout objet, et la structure décrite dans le prompt.
  • Changer de format revient à changer une ligne du prompt.
  • Pas de garantie formelle : un schéma ouvert ne peut pas être strict.
  • Flexible pour prototyper, schéma dédié et strict pour la production.