Exporter Braintrust
Braintrust est une plateforme d’évaluation et de surveillance qui vous aide à mesurer et à améliorer la qualité des applications LLM. L’exporter Braintrust envoie vos traces à Braintrust afin de permettre une évaluation, une notation et des expérimentations systématiques.
InstallationLien direct vers Installation
- npm
- pnpm
- Yarn
- Bun
npm install @mastra/braintrust@latest
pnpm add @mastra/braintrust@latest
yarn add @mastra/braintrust@latest
bun add @mastra/braintrust@latest
ConfigurationLien direct vers Configuration
PrérequisLien direct vers Prérequis
- Compte Braintrust : inscrivez-vous sur braintrust.dev
- Projet : créez ou sélectionnez un projet pour vos traces
- Clé API : générez-la dans Braintrust Settings → API Keys
- Variables d’environnement : définissez vos identifiants :
BRAINTRUST_API_KEY=sk-xxxxxxxxxxxxxxxx
# Optional
BRAINTRUST_ENDPOINT=https://api.braintrust.dev # Custom endpoint if needed
Configuration automatiqueLien direct vers Configuration automatique
Une fois les variables d’environnement définies, utilisez l’exporter sans configuration :
import { Mastra } from '@mastra/core'
import { Observability } from '@mastra/observability'
import { BraintrustExporter } from '@mastra/braintrust'
export const mastra = new Mastra({
observability: new Observability({
configs: {
braintrust: {
serviceName: 'my-service',
exporters: [new BraintrustExporter()],
},
},
}),
})
Configuration expliciteLien direct vers Configuration explicite
Vous pouvez également transmettre les identifiants directement ; ils prévalent sur les variables d’environnement :
import { Mastra } from '@mastra/core'
import { Observability } from '@mastra/observability'
import { BraintrustExporter } from '@mastra/braintrust'
export const mastra = new Mastra({
observability: new Observability({
configs: {
braintrust: {
serviceName: 'my-service',
exporters: [
new BraintrustExporter({
apiKey: process.env.BRAINTRUST_API_KEY,
projectName: 'my-project',
}),
],
},
},
}),
})
Configuration complèteLien direct vers Configuration complète
new BraintrustExporter({
// Required
apiKey: process.env.BRAINTRUST_API_KEY!,
// Optional settings
projectName: 'my-project', // Default: 'mastra-tracing'
endpoint: 'https://api.braintrust.dev', // Custom endpoint if needed
logLevel: 'info', // Diagnostic logging: debug | info | warn | error
})
Associer les traces aux évaluations BraintrustLien direct vers Associer les traces aux évaluations Braintrust
Installez directement le SDK Braintrust lorsque votre application utilise Eval(), logger.traced() ou currentSpan :
- npm
- pnpm
- Yarn
- Bun
npm install braintrust@latest
pnpm add braintrust@latest
yarn add braintrust@latest
bun add braintrust@latest
Lorsque vous exécutez Mastra dans Eval() ou logger.traced() de Braintrust, transmettez à l’exporter le logger Braintrust et la fonction de résolution currentSpan. Importez currentSpan depuis la même instance du package braintrust que celle qui crée l’évaluation ou le span tracé.
Cela permet à Mastra d’associer ses spans au span Braintrust actif lorsque votre application et @mastra/braintrust résolvent des copies installées différentes du SDK Braintrust.
L’exporter accepte les objets logger et span compatibles des versions 2 et 3 du SDK Braintrust. La version du SDK Braintrust de votre application ne doit pas nécessairement correspondre à celle installée par @mastra/braintrust.
import { currentSpan, initLogger } from 'braintrust'
import { BraintrustExporter } from '@mastra/braintrust'
const logger = initLogger({
projectName: 'my-project',
apiKey: process.env.BRAINTRUST_API_KEY,
})
const exporter = new BraintrustExporter({
braintrustLogger: logger,
currentSpan,
})
Utilisez l’instance Mastra configurée dans la tâche d’évaluation Braintrust. La fonction de résolution currentSpan ci-dessus lit le span actif créé par Eval().
import { Eval } from 'braintrust'
import { mastra } from '../mastra'
await Eval('my-project', {
data: () => [{ input: 'Say hello', expected: 'Hello' }],
task: async input => {
const agent = mastra.getAgent('assistant')
return (await agent.generate(input)).text
},
scores: [],
})
Si votre application met à niveau sa dépendance directe Braintrust de la v2 vers la v3 et utilise des modèles d’instructions Nunjucks, suivez le guide de migration de Braintrust v2 vers v3.
Interroger Braintrust avec le spanId renvoyéLien direct vers querying-braintrust-with-returned-spanid
Mastra utilise le spanId renvoyé à la fois comme ID de ligne et comme ID de span Braintrust. Utilisez-le pour rechercher le span Braintrust correspondant par id ou span_id.
Braintrust v3 stocke un ID de trace W3C distinct dans root_span_id ; le spanId renvoyé par Mastra n’est donc pas le root_span_id de Braintrust.
const result = await agent.stream('Summarize this ticket')
console.log('Mastra trace ID:', result.traceId)
console.log('Braintrust row and span ID:', result.spanId)
// Use result.spanId in your Braintrust lookup/query path
Il en va de même pour agent.generate() et les résultats d’exécution des Workflows (état final de run.start(), run.stream() et run.resume()).