Aller au contenu principal

Scorer de complétude

La fonction createCompletenessScorer() évalue dans quelle mesure la sortie d’un LLM couvre les éléments clés présents dans l’entrée. Elle analyse les noms, les verbes, les sujets et les termes afin de déterminer leur couverture et fournit un score de complétude détaillé.

Paramètres
Lien direct vers Paramètres

La fonction createCompletenessScorer() 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).

preprocessStepResult:

object
Objet contenant les éléments extraits et les détails de couverture : { inputElements: string[], outputElements: string[], missingElements: string[], elementCounts: { input: number, output: number } }

score:

number
Score de complétude (de 0 à 1) représentant la proportion d’éléments d’entrée couverts dans la sortie.

La méthode .run() renvoie un résultat présentant la structure suivante :

{
runId: string,
extractStepResult: {
inputElements: string[],
outputElements: string[],
missingElements: string[],
elementCounts: { input: number, output: number }
},
score: number
}

Détails de l’extraction des éléments
Lien direct vers Détails de l’extraction des éléments

Le Scorer extrait et analyse plusieurs types d’éléments :

  • Noms : objets, concepts et entités clés
  • Verbes : actions et états, convertis à l’infinitif
  • Sujets : sujets et thèmes principaux
  • Termes : mots significatifs individuels

Le processus d’extraction comprend :

  • Normalisation du texte, avec suppression des signes diacritiques et conversion en minuscules
  • Séparation des mots en camelCase
  • Traitement des limites des mots
  • Traitement particulier des mots courts, de 3 caractères ou moins
  • Déduplication des éléments

extractStepResult
Lien direct vers extractstepresult

La méthode .run() permet d’obtenir l’objet extractStepResult doté des propriétés suivantes :

  • inputElements : éléments clés trouvés dans l’entrée, par exemple des noms, verbes, sujets ou termes.
  • outputElements : éléments clés trouvés dans la sortie.
  • missingElements : éléments d’entrée introuvables dans la sortie.
  • elementCounts : nombre d’éléments dans l’entrée et la sortie.

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

Le Scorer évalue la complétude en analysant la couverture des éléments linguistiques.

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

  1. Extrait les éléments clés :
    • noms et entités nommées
    • verbes d’action
    • termes propres au sujet
    • formes de mots normalisées
  2. Calcule la couverture des éléments d’entrée :
    • correspondances exactes pour les termes courts (≤ 3 caractères)
    • chevauchement important (> 60 %) pour les termes plus longs

Score final : (covered_elements / total_input_elements) * scale

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

Pour un score de complétude compris entre 0 et 1 :

  • 1.0 : traite en détail tous les aspects de la requête.
  • 0.7 à 0.9 : couvre la plupart des aspects importants avec un bon niveau de détail et quelques lacunes mineures.
  • 0.4 à 0.6 : traite certains points clés, mais omet des aspects importants ou manque de détails.
  • 0.1 à 0.3 : ne traite que partiellement la requête et présente des lacunes importantes.
  • 0.0 : ne traite pas la requête ou fournit des informations non pertinentes.

Exemple
Lien direct vers Exemple

Évaluez la complétude des réponses de l’Agent pour des requêtes de complexités différentes :

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

const scorer = createCompletenessScorer()

const result = await runEvals({
data: [
{
input:
'Explain the process of photosynthesis, including the inputs, outputs, and stages involved.',
},
{
input: 'What are the benefits and drawbacks of remote work for both employees and employers?',
},
{
input:
'Compare renewable and non-renewable energy sources in terms of cost, environmental impact, and sustainability.',
},
],
scorers: [scorer],
target: myAgent,
onItemComplete: ({ scorerResults }) => {
console.log({
score: scorerResults[scorer.id].score,
})
},
})

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.