Aller au contenu principal

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ètres
Lien direct vers Paramètres

model:

LanguageModel
Modèle de langage utilisé pour évaluer la similarité sémantique entre les sorties et la vérité terrain.

options:

AnswerSimilarityOptions
Options de configuration du scorer.
AnswerSimilarityOptions

requireGroundTruth:

boolean
Indique si la vérité terrain doit être obligatoire pour l’évaluation. Si la valeur est false, l’absence de vérité terrain produit un score de 0.

semanticThreshold:

number
Poids des correspondances sémantiques par rapport aux correspondances exactes (0 à 1).

exactMatchBonus:

number
Bonus de score supplémentaire pour les correspondances exactes (0 à 1).

missingPenalty:

number
Pénalité appliquée pour chaque concept clé absent par rapport à la vérité terrain.

contradictionPenalty:

number
Pénalité appliquée aux informations contradictoires. Une valeur élevée garantit que les réponses erronées obtiennent un score proche de 0.

extraInfoPenalty:

number
Pénalité légère pour les informations supplémentaires absentes de la vérité terrain (plafonnée à 0,2).

scale:

number
Facteur d’échelle du score.

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:

string
ID de l’exécution (facultatif).

score:

number
Score de similarité compris entre 0 et 1 (ou entre 0 et scale si une échelle personnalisée est utilisée). Un score élevé indique une plus grande similarité avec la vérité terrain.

reason:

string
Explication lisible du score, accompagnée d’un retour exploitable.

preprocessStepResult:

object
Unités sémantiques extraites de la sortie et de la vérité terrain.

analyzeStepResult:

object
Analyse détaillée des correspondances, contradictions et informations supplémentaires.

preprocessPrompt:

string
Prompt utilisé pour extraire les unités sémantiques.

analyzePrompt:

string
Prompt utilisé pour analyser la similarité.

generateReasonPrompt:

string
Prompt utilisé pour générer l’explication.

Détails de la notation
Lien direct vers Détails de la notation

Le scorer suit un processus en plusieurs étapes :

  1. Extraction : décompose la sortie et la vérité terrain en unités sémantiques
  2. Analyse : compare les unités et identifie les correspondances, les contradictions et les lacunes
  3. Score : calcule une similarité pondérée en appliquant des pénalités aux contradictions
  4. Justification : génère une explication lisible

Calcul du score : max(0, base_score - contradiction_penalty - missing_penalty - extra_info_penalty) × scale

Exemple
Lien direct vers Exemple

Évaluez la similarité entre les réponses d’un Agent et la vérité terrain dans différents scénarios :

src/example-answer-similarity.ts
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.