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ètresLien 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:
analyzeStepResult:
score:
.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 scoreLien 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 scoreLien direct vers Processus de calcul du score
- 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
- 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 scoreLien 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.
ExempleLien direct vers Exemple
Mesurez les différences textuelles entre les sorties attendues et réelles d’un Agent :
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.