Aller au contenu principal

Scorer de différence textuelle

La fonction createTextualDifferenceScorer() utilise la correspondance de séquences pour mesurer les différences textuelles entre deux chaînes. Elle fournit des informations détaillées sur les modifications, notamment le nombre d’opérations nécessaires pour transformer un texte en un autre.

Paramètres
Lien direct vers Paramètres

La fonction createTextualDifferenceScorer() n’accepte aucune option.

Cette fonction renvoie une instance de la classe MastraScorer. Consultez la référence de MastraScorer pour en savoir plus sur la méthode .run() et ses entrées/sorties.

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

runId:

string
ID de l’exécution, facultatif.

analyzeStepResult:

object
Objet contenant les métriques de différence : { confidence: number, changes: number, lengthDiff: number }

score:

number
Rapport de similarité compris entre 0 et 1, où 1 indique des textes identiques.

.run() renvoie un résultat possédant la structure suivante :

{
runId: string,
analyzeStepResult: {
confidence: number,
ratio: number,
changes: number,
lengthDiff: number
},
score: number
}

Détails du calcul du score
Lien direct vers Détails du calcul du score

Le Scorer calcule plusieurs mesures :

  • Rapport de similarité : fondé sur la correspondance de séquences entre les textes, de 0 à 1
  • Modifications : nombre d’opérations sans correspondance nécessaires
  • Différence de longueur : différence normalisée entre les longueurs des textes
  • Confiance : inversement proportionnelle à la différence de longueur

Processus de calcul du score
Lien direct vers Processus de calcul du score

  1. Analyse les différences textuelles :
    • Effectue une correspondance de séquences entre l’entrée et la sortie
    • Compte le nombre d’opérations de modification requises
    • Mesure les différences de longueur
  2. Calcule les métriques :
    • Calcule le rapport de similarité
    • Détermine le score de confiance
    • Les combine en un score pondéré

Score final : (similarity_ratio * confidence) * scale

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

Un score de différence textuelle compris entre 0 et 1 s’interprète comme suit :

  • 1.0 : les textes sont identiques.
  • 0.7 à 0.9 : différences mineures, peu de modifications nécessaires.
  • 0.4 à 0.6 : différences modérées, modifications notables requises.
  • 0.1 à 0.3 : différences importantes, nombreuses modifications requises.
  • 0.0 : textes complètement différents.

Exemple
Lien direct vers Exemple

Mesurez les différences textuelles entre les sorties attendues et réelles d’un Agent :

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

const scorer = createTextualDifferenceScorer()

const result = await runEvals({
data: [
{
input: 'Summarize the concept of recursion',
groundTruth:
'Recursion is when a function calls itself to solve a problem by breaking it into smaller subproblems.',
},
{
input: 'What is the capital of France?',
groundTruth: 'The capital of France is Paris.',
},
],
scorers: [scorer],
target: myAgent,
onItemComplete: ({ scorerResults }) => {
console.log({
score: scorerResults[scorer.id].score,
groundTruth: scorerResults[scorer.id].groundTruth,
})
},
})

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.