Scorer de similarité des réponses
La fonction createAnswerSimilarityScorer() crée un scorer qui évalue le degré de similarité entre la sortie d’un Agent et une réponse de vérité terrain. Ce scorer est spécialement conçu pour les scénarios de test CI/CD dans lesquels vous disposez de réponses attendues et souhaitez garantir leur cohérence dans le temps.
ParamètresLien direct vers Paramètres
model:
options:
requireGroundTruth:
semanticThreshold:
exactMatchBonus:
missingPenalty:
contradictionPenalty:
extraInfoPenalty:
scale:
Cette fonction renvoie une instance de la classe MastraScorer. La méthode .run() accepte la même entrée que les autres scorers (consultez la référence de MastraScorer), mais exige que la vérité terrain soit fournie dans l’objet d’exécution.
Valeur renvoyée par .run()Lien direct vers run-returns
runId:
score:
reason:
preprocessStepResult:
analyzeStepResult:
preprocessPrompt:
analyzePrompt:
generateReasonPrompt:
Détails de la notationLien direct vers Détails de la notation
Le scorer suit un processus en plusieurs étapes :
- Extraction : décompose la sortie et la vérité terrain en unités sémantiques
- Analyse : compare les unités et identifie les correspondances, les contradictions et les lacunes
- Score : calcule une similarité pondérée en appliquant des pénalités aux contradictions
- Justification : génère une explication lisible
Calcul du score : max(0, base_score - contradiction_penalty - missing_penalty - extra_info_penalty) × scale
ExempleLien direct vers Exemple
Évaluez la similarité entre les réponses d’un Agent et la vérité terrain dans différents scénarios :
import { runEvals } from '@mastra/core/evals'
import { createAnswerSimilarityScorer } from '@mastra/evals/scorers/prebuilt'
import { myAgent } from './agent'
const scorer = createAnswerSimilarityScorer({ model: 'openai/gpt-5.6-sol' })
const result = await runEvals({
data: [
{
input: 'What is 2+2?',
groundTruth: '4',
},
{
input: 'What is the capital of France?',
groundTruth: 'The capital of France is Paris',
},
{
input: 'What are the primary colors?',
groundTruth: 'The primary colors are red, blue, and yellow',
},
],
scorers: [scorer],
target: myAgent,
onItemComplete: ({ scorerResults }) => {
console.log({
score: scorerResults[scorer.id].score,
reason: scorerResults[scorer.id].reason,
})
},
})
console.log(result.scores)
Pour en savoir plus sur runEvals, consultez la référence de runEvals.
Pour ajouter ce scorer à un Agent, consultez le guide de présentation des scorers.