> Discover all available pages from the documentation index: https://mastra.zisheng.pro/fr/llms.txt # 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'utilisation ```typescript 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 texte ### `checks.includes(expected, 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. ```typescript checks.includes('sunny') checks.includes('Sunny', { ignoreCase: false }) ``` **expected** (`string`): Sous-chaîne à rechercher dans la sortie. **options.ignoreCase** (`boolean`): Correspondance insensible à la casse. (Default: `true`) Renvoie : `1` si la sous-chaîne est trouvée, `0` dans le cas contraire. ### `checks.excludes(unwanted, 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. ```typescript checks.excludes('error') checks.excludes('Error', { ignoreCase: false }) ``` **unwanted** (`string`): Sous-chaîne qui ne doit pas apparaître dans la sortie. **options.ignoreCase** (`boolean`): Correspondance insensible à la casse. (Default: `true`) Renvoie : `1` si la sous-chaîne est absente, `0` dans le cas contraire. ### `checks.equals(expected, options?)` Attribue un score de 1 si le texte de sortie correspond exactement à la chaîne attendue après une éventuelle normalisation. ```typescript checks.equals('Hello, world!') checks.equals('Hello', { ignoreCase: false }) ``` **expected** (`string`): Chaîne exacte à laquelle la sortie doit correspondre. **options.ignoreCase** (`boolean`): Correspondance insensible à la casse. (Default: `true`) Renvoie : `1` si les chaînes sont égales, `0` dans le cas contraire. ### `checks.matches(pattern, options?)` Attribue un score de 1 si la sortie correspond à l'expression régulière. ```typescript checks.matches(/\d+°[FC]/) checks.matches(/^hello$/, { exact: true }) ``` **pattern** (`RegExp`): Expression régulière à tester par rapport à la sortie. **options.exact** (`boolean`): Ancre le modèle afin qu’il corresponde à l’intégralité de la sortie (ajoute ^ et $). (Default: `false`) Renvoie : `1` en cas de correspondance, `0` dans le cas contraire. ### `checks.similarity(expected, 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. ```typescript checks.similarity('Sunny, 72°F') checks.similarity('Sunny, 72°F', { threshold: 0.7 }) ``` **expected** (`string`): Chaîne de référence à utiliser pour la comparaison. **options.threshold** (`number`): Score de similarité minimal (0-1) pour renvoyer 1. S’il est omis, renvoie le score de similarité brut. **options.ignoreCase** (`boolean`): Comparaison insensible à la casse. (Default: `true`) Renvoie : le score de similarité brut (0-1), ou la valeur binaire `1`/`0` lorsque `threshold` est défini. ## Vérifications des appels de Tools ### `checks.calledTool(toolName, options?)` Attribue un score de 1 si l'agent a appelé le Tool indiqué au moins le nombre de fois requis. ```typescript checks.calledTool('get_weather') checks.calledTool('search', { times: 2 }) ``` **toolName** (`string`): Nom du Tool à rechercher. **options.times** (`number`): Nombre minimal de fois où le Tool doit être appelé. (Default: `1`) Renvoie : `1` si le Tool a été appelé au moins `times` fois, `0` dans le cas contraire. ### `checks.didNotCall(toolName)` Attribue un score de 1 si l'agent n'a pas appelé le Tool indiqué. ```typescript checks.didNotCall('delete_user') ``` **toolName** (`string`): Nom du Tool qui ne doit pas apparaître. Renvoie : `1` si le Tool n'a pas été appelé, `0` dans le cas contraire. ### `checks.toolOrder(expectedOrder)` 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. ```typescript checks.toolOrder(['search', 'summarize', 'respond']) ``` **expectedOrder** (`string[]`): Noms des Tools dans la séquence d’appel attendue. Ils doivent apparaître comme une sous-séquence des appels de Tools réels. Renvoie : `1` si l'ordre attendu est respecté, `0` dans le cas contraire. ### `checks.maxToolCalls(max)` Attribue un score de 1 si l'agent n'a pas effectué plus de `max` appels de Tools. ```typescript checks.maxToolCalls(5) ``` **max** (`number`): Nombre maximal d’appels de Tools autorisé. Renvoie : `1` si la limite est respectée, `0` dans le cas contraire. ### `checks.usedNoTools()` Attribue un score de 1 si l'agent n'a effectué aucun appel de Tool. ```typescript checks.usedNoTools() ``` Renvoie : `1` si aucun Tool n'a été appelé, `0` dans le cas contraire. ### `checks.noToolErrors()` 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'`). ```typescript 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 Scorers Les vérifications se combinent avec des Scorers fondés sur un LLM ou sur du code dans le même tableau `scorers` : ```typescript 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' }), ], }) ``` ## Ressources associées - [Présentation de Quick Checks](https://mastra.zisheng.pro/fr/docs/evals/quick-checks) - [Scorers intégrés](https://mastra.zisheng.pro/fr/docs/evals/built-in-scorers) - [Référence de `createScorer()`](https://mastra.zisheng.pro/fr/reference/evals/create-scorer) - [Référence de `runEvals()`](https://mastra.zisheng.pro/fr/reference/evals/run-evals) - [Scorers personnalisés](https://mastra.zisheng.pro/fr/docs/evals/custom-scorers)