Aller au contenu principal

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 base
Lien 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 test
Lien 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ésultats
Lien 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 test
  • summary.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 test
Lien 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 suivantes
Lien direct vers Étapes suivantes