Aller au contenu principal

Générer des jeux de test

Mis à jour le 30 juillet 2026

Passons du workflow théorique à un vrai projet d’évaluation. Construire un workflow personnalisé commence par deux décisions : définir un objectif clair, puis générer des données de test. Dans cet exemple — le fil rouge de toute la section —, nous construisons un prompt qui aide les utilisateurs à écrire du code spécifique à AWS : fonctions Python, configurations JSON ou expressions régulières, sans explications ni formatage superflu.

Définir l’objectif

Le prompt doit accepter une description de tâche et renvoyer l’un de ces trois types de sortie :

  • Code Python
  • Configuration JSON
  • Expression régulière

Exigence clé : les réponses ne doivent contenir que le code demandé, sans en-têtes, pieds de page ni explications — la sortie alimente un outil, pas une conversation. Cette exigence, formulée dès maintenant, deviendra plus tard un critère d’évaluation mesurable : c’est le propre d’un objectif bien défini.

Le prompt initial est volontairement simple : « Veuillez fournir une solution à la tâche suivante : {task} ». Il échouera sur l’exigence de format, et c’est prévu — on mesure d’abord, on améliore ensuite.

Créer les jeux de données

Un jeu de données d’évaluation contient des exemples d’entrées que vous injecterez dans votre prompt — ici, des descriptions de tâches AWS. Chaque cas de test est combiné avec le prompt et envoyé à Claude pour voir comment il performe sur différents scénarios.

Deux approches pour créer ces jeux :

  1. Manuellement : écrire les cas de test à la main
  2. Automatiquement : les générer avec Claude (un modèle rapide comme Haiku est suffisant)

L’approche manuelle garde l’avantage de la représentativité — vous connaissez vos vrais utilisateurs. La génération automatique gagne en vitesse et en variété, et rien n’empêche de mélanger : générer une base, puis y ajouter les cas réels qui remontent de la production.

Génération automatique avec du code

def generate_dataset():
    prompt = """
    Generez 3 taches AWS qui necessitent des solutions Python, JSON ou Regex.

    Concentrez-vous sur des taches resolvables avec une seule fonction Python,
    un seul objet JSON, ou qui ne necessitent pas beaucoup de code.

    Format de sortie :
    [
        {
            "task": "Description de la tâche"
        },
        ...
    ]

    Generez 3 objets.
    """

    messages = []
    add_user_message(messages, prompt)
    add_assistant_message(messages, "```json")
    text = chat(messages, stop_sequences=["```"])
    return json.loads(text)

Regardez la construction du prompt de génération : il précise le domaine (tâches AWS), la portée (résolvable en une fonction ou un objet — pour que l’évaluation reste tractable) et le format exact de sortie. Et les trois dernières lignes vous sont familières : pré-remplissage du message assistant et séquence d’arrêt, la technique d’extraction de données structurées appliquée à son propre outillage — le pipeline d’évaluation se construit avec les techniques qu’il servira à évaluer.

Sauvegarder le jeu de données

Sauvegardez le résultat pour éviter de le régénérer à chaque fois :

dataset = generate_dataset()
with open("dataset.json", "w") as f:
    json.dump(dataset, f, indent=2)

La persistance n’est pas qu’une économie d’appels API : c’est une exigence méthodologique. Comparer les scores de deux versions d’un prompt n’a de sens que sur le même jeu de données — un jeu régénéré entre deux mesures fausserait la comparaison.

Le jeu généré crée des tâches AWS réalistes : extraction d’identifiants de compte depuis des ARN, schémas JSON pour des configurations EC2, patterns regex pour des noms de buckets S3. Trois cas de test suffisent pour le développement initial, mais une évaluation en production nécessitera beaucoup plus d’exemples — des dizaines, voire des centaines, pour que la moyenne des scores devienne statistiquement parlante.

Points clés à retenir

  • Un objectif d’évaluation bien défini inclut les exigences de format — elles deviendront des critères mesurables
  • Jeu de données = les entrées de test ; à la main pour la représentativité, généré par Claude pour la vitesse
  • Le prompt de génération fixe domaine, portée et format de sortie exact
  • Pré-remplissage + stop sequence : l’extraction structurée au service du pipeline lui-même
  • Sauvegardez le jeu : les comparaisons entre versions exigent des données identiques