Quick Checks
Quick Checks regroupe des micro-Scorers composables sans LLM destinés aux assertions courantes. Ils s'intègrent au tableau scorers: [...] existant partout où des Scorers sont utilisés : dans runEvals, le scoring en direct, les expériences et Studio.
En interne, il s'agit d'instances standard de createScorer() ; elles bénéficient donc de la même observabilité, du même stockage et de la même intégration au pipeline que tout autre Scorer.
Exemple d'utilisationLien direct vers Exemple d'utilisation
import { checks } from '@mastra/evals/checks'
import { runEvals } from '@mastra/core/evals'
import { myAgent } from '../agents'
const result = await runEvals({
data: [{ input: 'What is the weather in Brooklyn?' }],
target: myAgent,
scorers: [
checks.includes('sunny'),
checks.calledTool('get_weather'),
checks.toolOrder(['get_weather', 'summarize']),
checks.noToolErrors(),
],
})
console.log(result.scores)
Vérifications de texteLien direct vers Vérifications de texte
checks.includes(expected, options?)Lien direct vers checksincludesexpected-options
Attribue un score de 1 si le texte de sortie de l'agent contient la sous-chaîne attendue, et de 0 dans le cas contraire.
checks.includes('sunny')
checks.includes('Sunny', { ignoreCase: false })
expected:
options.ignoreCase?:
Renvoie : 1 si la sous-chaîne est trouvée, 0 dans le cas contraire.
checks.excludes(unwanted, options?)Lien direct vers checksexcludesunwanted-options
Attribue un score de 1 si le texte de sortie de l'agent ne contient pas la sous-chaîne, et de 0 dans le cas contraire.
checks.excludes('error')
checks.excludes('Error', { ignoreCase: false })
unwanted:
options.ignoreCase?:
Renvoie : 1 si la sous-chaîne est absente, 0 dans le cas contraire.
checks.equals(expected, options?)Lien direct vers checksequalsexpected-options
Attribue un score de 1 si le texte de sortie correspond exactement à la chaîne attendue après une éventuelle normalisation.
checks.equals('Hello, world!')
checks.equals('Hello', { ignoreCase: false })
expected:
options.ignoreCase?:
Renvoie : 1 si les chaînes sont égales, 0 dans le cas contraire.
checks.matches(pattern, options?)Lien direct vers checksmatchespattern-options
Attribue un score de 1 si la sortie correspond à l'expression régulière.
checks.matches(/\d+°[FC]/)
checks.matches(/^hello$/, { exact: true })
pattern:
options.exact?:
Renvoie : 1 en cas de correspondance, 0 dans le cas contraire.
checks.similarity(expected, options?)Lien direct vers checkssimilarityexpected-options
Renvoie le score de similarité des chaînes (0-1) entre la sortie et une chaîne attendue en utilisant le coefficient de Dice. Lorsqu'un threshold est défini, renvoie à la place une valeur binaire 1/0.
checks.similarity('Sunny, 72°F')
checks.similarity('Sunny, 72°F', { threshold: 0.7 })
expected:
options.threshold?:
options.ignoreCase?:
Renvoie : le score de similarité brut (0-1), ou la valeur binaire 1/0 lorsque threshold est défini.
Vérifications des appels de ToolsLien direct vers Vérifications des appels de Tools
checks.calledTool(toolName, options?)Lien direct vers checkscalledtooltoolname-options
Attribue un score de 1 si l'agent a appelé le Tool indiqué au moins le nombre de fois requis.
checks.calledTool('get_weather')
checks.calledTool('search', { times: 2 })
toolName:
options.times?:
Renvoie : 1 si le Tool a été appelé au moins times fois, 0 dans le cas contraire.
checks.didNotCall(toolName)Lien direct vers checksdidnotcalltoolname
Attribue un score de 1 si l'agent n'a pas appelé le Tool indiqué.
checks.didNotCall('delete_user')
toolName:
Renvoie : 1 si le Tool n'a pas été appelé, 0 dans le cas contraire.
checks.toolOrder(expectedOrder)Lien direct vers checkstoolorderexpectedorder
Attribue un score de 1 si les Tools ont été appelés dans l'ordre indiqué. Utilise une correspondance souple : d'autres appels de Tools sont autorisés entre les Tools attendus.
checks.toolOrder(['search', 'summarize', 'respond'])
expectedOrder:
Renvoie : 1 si l'ordre attendu est respecté, 0 dans le cas contraire.
checks.maxToolCalls(max)Lien direct vers checksmaxtoolcallsmax
Attribue un score de 1 si l'agent n'a pas effectué plus de max appels de Tools.
checks.maxToolCalls(5)
max:
Renvoie : 1 si la limite est respectée, 0 dans le cas contraire.
checks.usedNoTools()Lien direct vers checksusednotools
Attribue un score de 1 si l'agent n'a effectué aucun appel de Tool.
checks.usedNoTools()
Renvoie : 1 si aucun Tool n'a été appelé, 0 dans le cas contraire.
checks.noToolErrors()Lien direct vers checksnotoolerrors
Attribue un score de 1 si aucun appel de Tool n'a produit d'état d'erreur. Détecte aussi bien les résultats en erreur (result.error présent) que les appels de Tools incomplets (state === 'call').
checks.noToolErrors()
Renvoie : 1 si tous les appels de Tools ont réussi, 0 dans le cas contraire.
Combiner les vérifications avec d'autres ScorersLien direct vers Combiner les vérifications avec d'autres Scorers
Les vérifications se combinent avec des Scorers fondés sur un LLM ou sur du code dans le même tableau scorers :
import { checks } from '@mastra/evals/checks'
import { createAnswerRelevancyScorer } from '@mastra/evals/scorers/prebuilt'
import { runEvals } from '@mastra/core/evals'
import { myAgent } from '../agents'
const result = await runEvals({
data: [{ input: 'What is the weather in Brooklyn?' }],
target: myAgent,
scorers: [
// Zero-LLM checks
checks.includes('Brooklyn'),
checks.calledTool('get_weather'),
checks.noToolErrors(),
// LLM-based scorer
createAnswerRelevancyScorer({ model: 'openai/gpt-5-mini' }),
],
})