Aller au contenu principal

Scorer de pertinence de la réponse

La fonction createAnswerRelevancyScorer() accepte un objet d’options unique doté des propriétés suivantes :

Paramètres
Lien direct vers Paramètres

model:

LanguageModel
Configuration du modèle utilisé pour évaluer la pertinence.

uncertaintyWeight:

number
= 0.3
Poids accordé aux verdicts 'unsure' dans l’évaluation (de 0 à 1).

scale:

number
= 1
Valeur maximale 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 la valeur renvoyée comprend les champs propres aux LLM décrits ci-dessous.

Valeur renvoyée par .run()
Lien direct vers run-returns

runId:

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

score:

number
Score de pertinence (de 0 à scale, de 0 à 1 par défaut)

preprocessPrompt:

string
Prompt envoyé au LLM pour l’étape de prétraitement (facultatif).

preprocessStepResult:

object
Objet contenant les affirmations extraites : { statements: string[] }

analyzePrompt:

string
Prompt envoyé au LLM pour l’étape d’analyse (facultatif).

analyzeStepResult:

object
Objet contenant les résultats : { results: Array<{ result: 'yes' | 'unsure' | 'no', reason: string }> }

generateReasonPrompt:

string
Prompt envoyé au LLM pour l’étape de justification (facultatif).

reason:

string
Explication du score.

Détails de l’évaluation
Lien direct vers Détails de l’évaluation

Le Scorer évalue la pertinence en mesurant l’adéquation entre la requête et la réponse. Il prend en compte la complétude et le niveau de détail, mais pas l’exactitude factuelle.

Processus d’évaluation
Lien direct vers Processus d’évaluation

  1. Prétraitement des affirmations :
    • divise la sortie en affirmations utiles tout en préservant le contexte.
  2. Analyse de la pertinence :
    • chaque affirmation reçoit l’une des évaluations suivantes :
      • "yes" : poids complet pour les correspondances directes
      • "unsure" : poids partiel (0,3 par défaut) pour les correspondances approximatives
      • "no" : poids nul pour le contenu non pertinent
  3. Calcul du score :
    • ((direct + uncertainty * partial) / total_statements) * scale

Interprétation du score
Lien direct vers Interprétation du score

Pour un score de pertinence compris entre 0 et 1 :

  • 1.0 : la réponse traite entièrement la requête avec des informations pertinentes et ciblées.
  • 0.7 à 0.9 : la réponse traite l’essentiel de la requête, mais peut contenir quelques informations sans rapport.
  • 0.4 à 0.6 : la réponse traite partiellement la requête et mélange des informations pertinentes et sans rapport.
  • 0.1 à 0.3 : la réponse contient très peu d’informations pertinentes et passe largement à côté de l’intention de la requête.
  • 0.0 : la réponse est totalement sans rapport et ne traite pas la requête.

Exemple
Lien direct vers Exemple

Évaluez la pertinence des réponses de l’Agent dans différents scénarios :

src/example-answer-relevancy.ts
import { runEvals } from '@mastra/core/evals'
import { createAnswerRelevancyScorer } from '@mastra/evals/scorers/prebuilt'
import { myAgent } from './agent'

const scorer = createAnswerRelevancyScorer({ model: 'openai/gpt-5.6-sol' })

const result = await runEvals({
data: [
{
input: 'What are the health benefits of regular exercise?',
},
{
input: 'What should a healthy breakfast include?',
},
{
input: 'What are the benefits of meditation?',
},
],
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.