> Discover all available pages from the documentation index: https://mastra.zisheng.pro/fr/llms.txt # Scorer à grille d’évaluation **Ajouté dans :** `@mastra/evals@1.3.0` La fonction `createRubricScorer()` crée un scorer utilisant un LLM comme juge, qui note la sortie d’un Agent selon une grille d’évaluation, c’est-à-dire une liste de critères. Elle renvoie un score **binaire** : `1` uniquement lorsque tous les critères obligatoires sont satisfaits, sinon `0`. Le champ `reason` répertorie le verdict de chaque critère afin que l’Agent sache exactement ce qu’il doit corriger. Ce scorer est conçu pour être intégré à [`isTaskComplete`](https://mastra.zisheng.pro/fr/reference/streaming/agents/stream). Comme `isTaskComplete` interprète `score === 1` comme une tâche terminée et réinjecte `reason` dans la conversation en guise de retour, l’Agent continue d’itérer jusqu’à ce que la grille d’évaluation soit satisfaite ou que `maxSteps` soit atteint. ## Paramètres **model** (`MastraModelConfig`): Modèle de langage utilisé pour noter la sortie selon la grille d’évaluation. Un modèle plus petit et moins coûteux suffit généralement pour cette notation. **criteria** (`RubricCriterion[] | string`): Grille d’évaluation à utiliser pour la notation. Une chaîne est interprétée comme une liste délimitée par des sauts de ligne (chaque ligne devient un critère obligatoire). Si elle est omise, la grille est lue au moment de l’exécution depuis une valeur rubric du contexte de requête ou du contexte supplémentaire ; si aucune valeur n’est résolue, le scorer n’effectue aucune opération et renvoie 1. **options** (`RubricScorerOptions`): Options de configuration du scorer ## Valeur renvoyée par `.run()` **score** (`number`): 1 lorsque tous les critères obligatoires sont satisfaits, sinon 0 (multiplié par scale). **reason** (`string`): Explication pour chaque critère indiquant ceux qui sont satisfaits ou non, ainsi que la raison. Il s’agit du texte que isTaskComplete réinjecte dans la conversation en guise de retour. ## Utilisation avec isTaskComplete Définissez la grille d’évaluation une seule fois et associez le scorer à `isTaskComplete` : l’Agent se corrige alors lui-même jusqu’à ce que la grille soit satisfaite. ```typescript import { Agent } from '@mastra/core/agent' import { createRubricScorer } from '@mastra/evals/scorers/prebuilt' const supervisor = new Agent({ id: 'supervisor', instructions: `You coordinate research and writing using specialized agents. Delegate to research-agent for facts, then writing-agent for content.`, model: 'openai/gpt-5.6-sol', agents: { researchAgent, writingAgent }, }) const rubricScorer = createRubricScorer({ model: 'openai/gpt-5-mini', criteria: [ { description: 'The response includes an analysis section' }, { description: 'The response includes concrete recommendations' }, ], }) const stream = await supervisor.stream('Research AI in education', { maxSteps: 10, isTaskComplete: { scorers: [rubricScorer], strategy: 'all', }, }) ``` ## Grille d’évaluation sous forme de chaîne Une chaîne délimitée par des sauts de ligne est analysée en critères, après suppression des marqueurs de liste courants (`-`, `*`, `1.`). Chaque ligne devient un critère obligatoire : ```typescript const rubricScorer = createRubricScorer({ model: 'openai/gpt-5-mini', criteria: `- All tests pass in the test suite - The function is named find_duplicates and accepts a single list argument`, }) ``` ## Critères facultatifs Déclarez un critère comme facultatif afin qu’il soit noté et signalé sans conditionner l’achèvement : ```typescript const rubricScorer = createRubricScorer({ model: 'openai/gpt-5-mini', criteria: [ { description: 'Includes an analysis section', required: true }, { description: 'Includes citations', required: false }, ], }) ``` ## Grille dynamique pour chaque exécution Lorsqu’aucun `criteria` n’est transmis à la fabrique, le scorer résout une valeur `rubric` à partir du contexte de requête, du contexte supplémentaire ou de l’entrée de l’exécution. Une même instance du scorer peut ainsi noter différentes grilles selon l’exécution, sans qu’il soit nécessaire de la recréer : ```typescript const rubricScorer = createRubricScorer({ model: 'openai/gpt-5-mini', }) await supervisor.stream('Write find_duplicates', { isTaskComplete: { scorers: [rubricScorer] }, requestContext: { rubric: '- All tests pass\n- The function is named find_duplicates', }, }) ``` Si aucune grille d’évaluation n’est résolue, le scorer renvoie `1` et ne conditionne pas la boucle. ## Détails de la notation Le scorer s’exécute en deux phases : 1. **Évaluation** : le modèle juge évalue chaque critère indépendamment et renvoie un verdict pour chacun (`satisfied` ou non), accompagné d’un raisonnement. 2. **Score** : le résultat vaut `1` uniquement lorsque tous les critères obligatoires sont `satisfied`, sinon `0`. Si aucun critère n’est marqué comme obligatoire, ils sont tous traités comme tels. Le champ `reason` résume le résultat et répertorie chaque critère avec son verdict. Une évaluation négative fournit ainsi à l’Agent un retour ciblé et utile plutôt qu’un simple message générique lui demandant de réessayer. ## Voir aussi - [isTaskComplete dans stream()](https://mastra.zisheng.pro/fr/reference/streaming/agents/stream) - [Agents superviseurs](https://mastra.zisheng.pro/fr/docs/capabilities/subagents) - [createScorer](https://mastra.zisheng.pro/fr/reference/evals/create-scorer)