filterRun()
Crée une fonction prepareRun à partir d’options déclaratives. Transmettez le résultat à createScorer() pour filtrer les messages et limiter la taille du contexte. La fonction supprime également les champs inutiles avant l’exécution du pipeline du scorer.
Utilisez filterRun() pour le filtrage déclaratif. Écrivez directement une fonction prepareRun personnalisée lorsque vous avez besoin d’une logique impérative que filterRun() ne couvre pas. Pour en savoir plus, consultez la section Scorers personnalisés : filtrage des entrées.
Exemple d’utilisationLien direct vers Exemple d’utilisation
L’exemple suivant crée un scorer qui ne reçoit que les appels de Tools et les messages textuels, limités aux 20 messages de contexte les plus récents :
import { createScorer, filterRun } from '@mastra/core/evals'
const toolScorer = createScorer({
id: 'tool-usage',
description: 'Evaluates tool usage patterns',
type: 'agent',
prepareRun: filterRun({
partTypes: ['tool-invocation', 'text'],
maxRememberedMessages: 20,
}),
}).generateScore(({ run }) => {
// run.input.rememberedMessages contains only tool and text messages
// run.output contains only tool and text messages
return 1
})
Filtrer par nom de ToolLien direct vers Filtrer par nom de Tool
Conservez uniquement les messages qui impliquent des Tools donnés :
import { createScorer, filterRun } from '@mastra/core/evals'
const fileEditScorer = createScorer({
id: 'file-edit-quality',
description: 'Evaluates file editing patterns',
type: 'agent',
prepareRun: filterRun({
toolNames: ['write_file', 'string_replace_lsp', 'view'],
}),
}).generateScore(({ run }) => {
// Only messages with these tool calls remain
return 1
})
Supprimer des champsLien direct vers Supprimer des champs
Supprimez les champs dont le scorer n’a pas besoin :
import { createScorer, filterRun } from '@mastra/core/evals'
const simpleScorer = createScorer({
id: 'response-length',
description: 'Checks response length',
type: 'agent',
prepareRun: filterRun({
dropRequestContext: true,
dropExpectedTrajectory: true,
dropGroundTruth: true,
maxOutputMessages: 5,
}),
}).generateScore(({ run }) => {
return run.output.length > 0 ? 1 : 0
})
ParamètresLien direct vers Paramètres
options:
partTypes?:
toolNames?:
maxRememberedMessages?:
maxOutputMessages?:
dropRequestContext?:
dropExpectedTrajectory?:
dropGroundTruth?:
Renvoie : (run: ScorerRun) => ScorerRun. Une fonction adaptée à l’option prepareRun de createScorer().
Types de partiesLien direct vers Types de parties
L’option partTypes accepte des valeurs MastraPartType. Chaque valeur est comparée comme préfixe ; ainsi, 'data-' correspond à tous les types de parties de données.
| Type | Description |
|---|---|
'text' | Parties de contenu textuel |
'tool-invocation' | Parties d’appel et de résultat de Tool |
'reasoning' | Parties de raisonnement en chaîne de pensée |
'step-start' | Parties servant de marqueurs d’étape |
'image' | Parties d’image |
'file' | Parties de fichier |
'source' | Parties de référence de source |
'source-document' | Parties de document source |
'data-' | Toutes les parties de données (correspond à tout préfixe data-*) |
'data-om-' | Parties de données d’Observational Memory |
'data-workspace-' | Parties de données du Workspace |
'data-sandbox-' | Parties de données du Sandbox |
'data-tool-' | Parties de données liées aux Tools |
Comportement du filtrageLien direct vers Comportement du filtrage
- Le filtrage par type de partie s’applique à
input.rememberedMessageset àoutputlorsqu’ils contiennent des tableaux de messages d’Agent. - Le filtrage par nom de Tool ne concerne que les messages qui contiennent des appels de Tool. Les messages exclusivement textuels sont transmis.
- Les messages système (
systemMessages,taggedSystemMessages) ne sont jamais filtrés, quelles que soient les valeurs departTypesoutoolNames. - Les limites de messages (
maxRememberedMessages,maxOutputMessages) s’appliquent après le filtrage par type et par Tool, en sélectionnant les messages les plus récents. - Lorsque
partTypesettoolNamessont tous deux définis, un message doit satisfaire les deux filtres pour être conservé.