Jeux de données

Un jeu de données est un ensemble de cas de test qui pilotent une évaluation hors ligne. Dans le SDK Evaluation, un jeu de données est une liste de dictionnaires Python où chaque dictionnaire est un enregistrement d'entrée, et vous définissez les clés pour correspondre à ce que votre fonction de tâche attend.

Structure des enregistrements

Structure des enregistrements

Chaque enregistrement est un dictionnaire simple. Les clés dépendent de vous :

dataset = [
    {"sentence": "Hello, how are you?", "groundtruth": "English"},
    {"sentence": "Bonjour, comment ça va?", "groundtruth": "French"},
    {"sentence": "Hola, ¿cómo estás?", "groundtruth": "Spanish"},
]

Dans votre tâche et votre notation, accédez à l'enregistrement via ctx.input_record :

from mistralai.observability import TaskContext, ScorerContext

async def task(ctx: TaskContext) -> str:
    return ctx.input_record["sentence"]  # access any key you defined

def scorer(ctx: ScorerContext) -> int:
    return 1 if ctx.input_record["groundtruth"].lower() == str(ctx.output).lower() else 0
Sécurité des types avec TypedDict

Sécurité des types avec TypedDict

Utilisez TypedDict pour rendre les schémas des enregistrements explicites et obtenir une autocomplétion dans l'IDE :

from typing import TypedDict

class LanguageRecord(TypedDict):
    sentence: str
    groundtruth: str

dataset: list[LanguageRecord] = [
    {"sentence": "Hello, how are you?", "groundtruth": "English"},
    {"sentence": "Bonjour, comment ça va?", "groundtruth": "French"},
]
Que mettre dans les enregistrements

Que mettre dans les enregistrements

Les enregistrements peuvent contenir tout ce dont votre tâche ou votre notation a besoin :

Type de champObjectifExemple
Entrées de tâcheCe que la tâche traiteprompt, contexte, texte, question
Vérité de référenceSortie de référence pour la notationexpected, groundtruth, reference_answer
MétadonnéesContexte supplémentaire pour les notateurs ou les juges LLMcategory, difficulty, grading_guidance

Incluez la vérité de référence dans les enregistrements lorsque vous souhaitez comparer la sortie de la tâche à une réponse connue comme correcte :

dataset = [
    {
        "prompt": "What is the capital of France?",
        "expected": "Paris",
        "difficulty": "easy",
    },
    {
        "prompt": "Explain the difference between precision and recall.",
        "expected": "Precision measures true positives over predicted positives; recall measures true positives over actual positives.",
        "difficulty": "medium",
    },
]

def accuracy_scorer(ctx: ScorerContext) -> int:
    return 1 if ctx.input_record["expected"].lower() in str(ctx.output).lower() else 0
Bonnes pratiques

Bonnes pratiques

Gardez les jeux de données ciblés

Un jeu de données construit autour d'une seule tâche ou capacité produit des signaux plus clairs qu'une collection large et multithème. Maintenez des jeux de données séparés pour des objectifs d'évaluation distincts (par exemple, language_detection, qa_factual, code_generation).

Sélectionnez des données représentatives

  • Incluez des cas particuliers et des modes de défaillance, pas uniquement des exemples faciles.
  • Équilibrez votre jeu de données : si 90 % des enregistrements sont des cas faciles, l'évaluation ne révélera pas de problèmes réels.
  • Supprimez les enregistrements où même un humain ne pourrait pas noter la réponse de manière fiable (les entrées ambiguës ajoutent du bruit).

Versionnez vos jeux de données

Figez votre jeu de données entre les exécutions si vous souhaitez suivre les performances au fil du temps. Même de petites modifications aux enregistrements peuvent rendre les exécutions non comparables. Utilisez des noms explicites comme qa_baseline_2025_06 plutôt que test_data.

La qualité de la vérité de référence est cruciale

Une vérité de référence inexacte ou ambiguë produit des notes bruitées. Si vous utilisez un juge LLM (voir Juges), incluez un champ grading_guidance pour donner au juge des instructions de notation explicites par enregistrement.

Organisation dans Studio

Organisation dans Studio

Le SDK Evaluation organise les résultats à l'aide de Projets, Évaluations et Exécutions dans Studio, et non en fonction du jeu de données lui-même. Passez votre jeu de données directement à evaluation.run() :

from mistralai.observability import Evaluation, Project

run = await client.evaluation.run(
    project=Project(name="Language Detection"),
    evaluation=Evaluation(name="Accuracy Eval"),
    dataset=dataset,  # your list of dicts
    task=task,
    evaluators=[...],
)

Les balises et métadonnées de l'exécution vous aident à retracer quelle version du jeu de données a été utilisée :

run = await client.evaluation.run(
    ...
    tags=["dataset:qa_baseline_2025_06", "model:mistral-small"],
    metadata={"dataset_version": "2025-06", "record_count": len(dataset)},
)
FAQ

FAQ