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. 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ètresLien direct vers Paramètres
model:
criteria:
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:
Valeur renvoyée par .run()Lien direct vers run-returns
score:
reason:
Utilisation avec isTaskCompleteLien direct vers 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.
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îneLien direct vers 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 :
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 facultatifsLien direct vers Critères facultatifs
Déclarez un critère comme facultatif afin qu’il soit noté et signalé sans conditionner l’achèvement :
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écutionLien direct vers 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 :
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 notationLien direct vers Détails de la notation
Le scorer s’exécute en deux phases :
- Évaluation : le modèle juge évalue chaque critère indépendamment et renvoie un verdict pour chacun (
satisfiedou non), accompagné d’un raisonnement. - Score : le résultat vaut
1uniquement lorsque tous les critères obligatoires sontsatisfied, sinon0. 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.