Aller au contenu principal

Scorer de fidélité

La fonction createFaithfulnessScorer() évalue l'exactitude factuelle de la sortie d'un LLM par rapport au contexte fourni. Elle extrait les affirmations de la sortie et les vérifie à l'aide du contexte, ce qui en fait un outil essentiel pour mesurer la fiabilité des réponses d'un pipeline RAG.

Paramètres
Lien direct vers Paramètres

La fonction createFaithfulnessScorer() accepte un seul objet d'options doté des propriétés suivantes :

model:

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

context:

string[]
Tableau de segments de contexte par rapport auxquels les affirmations de la sortie seront vérifiées.

scale:

number
= 1
Valeur maximale du score. Le score final sera normalisé selon cette échelle.

Cette fonction renvoie une instance de la classe MastraScorer. La méthode .run() accepte les mêmes entrées 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
L'identifiant de l'exécution (facultatif).

preprocessStepResult:

string[]
Tableau des affirmations extraites de la sortie.

preprocessPrompt:

string
Le prompt envoyé au LLM pour l'étape preprocess (facultatif).

analyzeStepResult:

object
Objet contenant les verdicts : { verdicts: Array<{ verdict: 'yes' | 'no' | 'unsure', reason: string }> }

analyzePrompt:

string
Le prompt envoyé au LLM pour l'étape analyze (facultatif).

score:

number
Score compris entre 0 et l'échelle configurée, qui représente la proportion d'affirmations étayées par le contexte.

reason:

string
Explication détaillée du score, notamment les affirmations étayées, contredites ou marquées comme incertaines.

generateReasonPrompt:

string
Le prompt envoyé au LLM pour l'étape generateReason (facultatif).

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

Le scorer évalue la fidélité en vérifiant les affirmations par rapport au contexte fourni.

Processus d'évaluation
Lien direct vers Processus d'évaluation

  1. Analyse les affirmations et le contexte :
    • Extrait toutes les affirmations (factuelles et spéculatives)
    • Vérifie chaque affirmation par rapport au contexte
    • Attribue l'un des trois verdicts :
      • « yes » : l'affirmation est étayée par le contexte
      • « no » : l'affirmation contredit le contexte
      • « unsure » : l'affirmation ne peut pas être vérifiée
  2. Calcule le score de fidélité :
    • Compte les affirmations étayées
    • Divise ce nombre par le nombre total d'affirmations
    • Adapte le résultat à la plage configurée

Score final : (supported_claims / total_claims) * scale

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

Pour un score de fidélité compris entre 0 et 1 :

  • 1.0 : toutes les affirmations sont exactes et directement étayées par le contexte.
  • 0.7 à 0.9 : la plupart des affirmations sont correctes, avec quelques ajouts ou omissions mineurs.
  • 0.4 à 0.6 : certaines affirmations sont étayées, mais d'autres ne peuvent pas être vérifiées.
  • 0.1 à 0.3 : la majeure partie du contenu est inexacte ou non étayée.
  • 0.0 : toutes les affirmations sont fausses ou contredisent le contexte.

Exemple
Lien direct vers Exemple

Évaluez la fidélité des réponses d'un Agent au contexte fourni :

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

// Context is typically populated from agent tool calls or RAG retrieval
const scorer = createFaithfulnessScorer({
model: 'openai/gpt-5.6-sol',
})

const result = await runEvals({
data: [
{
input: 'Tell me about the Tesla Model 3.',
},
{
input: 'What are the key features of this electric vehicle?',
},
],
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 Présentation des scorers.