Exécuter des scorers en CI
L’exécution de scorers dans votre pipeline CI fournit des métriques quantifiables pour mesurer la qualité des agents au fil du temps. La fonction runEvals traite plusieurs cas de test avec votre agent ou workflow et renvoie des scores agrégés.
Configuration de baseLien direct vers Configuration de base
Vous pouvez utiliser tout framework de test prenant en charge les modules ESM, tel que Vitest, Jest ou Mocha.
Créer des cas de testLien direct vers Créer des cas de test
Utilisez runEvals pour évaluer votre agent avec plusieurs cas de test. La fonction accepte un tableau d’éléments de données, chacun contenant un input et, facultativement, un groundTruth pour la validation du scorer.
src/mastra/agents/weather-agent.test.ts
import { describe, it, expect } from 'vitest'
import { createScorer, runEvals } from '@mastra/core/evals'
import { weatherAgent } from './weather-agent'
import { locationScorer } from '../scorers/location-scorer'
describe('Weather Agent Tests', () => {
it('should correctly extract locations from queries', async () => {
const result = await runEvals({
data: [
{
input: 'weather in Berlin',
groundTruth: { expectedLocation: 'Berlin', expectedCountry: 'DE' },
},
{
input: 'weather in Berlin, Maryland',
groundTruth: { expectedLocation: 'Berlin', expectedCountry: 'US' },
},
{
input: 'weather in Berlin, Russia',
groundTruth: { expectedLocation: 'Berlin', expectedCountry: 'RU' },
},
],
target: weatherAgent,
scorers: [locationScorer],
})
// Assert aggregate score meets threshold
expect(result.scores['location-accuracy']).toBe(1)
expect(result.summary.totalItems).toBe(3)
})
})
Comprendre les résultatsLien direct vers Comprendre les résultats
La fonction runEvals renvoie un objet contenant :
scores: scores moyens de chaque scorer sur l’ensemble des cas de testsummary.totalItems: nombre total de cas de test traités
{
scores: {
'location-accuracy': 1.0, // Average score across all items
'another-scorer': 0.85
},
summary: {
totalItems: 3
}
}
Plusieurs scénarios de testLien direct vers Plusieurs scénarios de test
Créez des cas de test distincts pour les différents scénarios d’évaluation :
src/mastra/agents/weather-agent.test.ts
describe('Weather Agent Tests', () => {
const locationScorer = createScorer({/* ... */})
it('should handle location disambiguation', async () => {
const result = await runEvals({
data: [
{
input: 'weather in Berlin',
groundTruth: {/* ... */},
},
{
input: 'weather in Berlin, Maryland',
groundTruth: {/* ... */},
},
],
target: weatherAgent,
scorers: [locationScorer],
})
expect(result.scores['location-accuracy']).toBe(1)
})
it('should handle typos and misspellings', async () => {
const result = await runEvals({
data: [
{
input: 'weather in Berln',
groundTruth: { expectedLocation: 'Berlin', expectedCountry: 'DE' },
},
{
input: 'weather in Parris',
groundTruth: { expectedLocation: 'Paris', expectedCountry: 'FR' },
},
],
target: weatherAgent,
scorers: [locationScorer],
})
expect(result.scores['location-accuracy']).toBe(1)
})
})
Étapes suivantesLien direct vers Étapes suivantes
- Découvrez la création de scorers personnalisés
- Explorez les scorers intégrés
- Exécutez des scorers sur des agents avec mémoire
- Consultez la référence de l’API runEvals