メインコンテンツへ移動

Braintrust exporter

Braintrust は、LLM アプリケーションの品質測定と改善を支援する評価・監視プラットフォームです。Braintrust exporter は Trace を Braintrust に送信し、体系的な評価、採点、実験を可能にします。

インストール
インストールへの直接リンク

npm install @mastra/braintrust@latest

設定
設定への直接リンク

前提条件
前提条件への直接リンク

  1. Braintrust アカウント: braintrust.dev で登録する
  2. Project: Trace 用の Project を作成または選択する
  3. API Key: Braintrust Settings → API Keys で生成する
  4. 環境変数: 認証情報を設定する
.env
BRAINTRUST_API_KEY=sk-xxxxxxxxxxxxxxxx

# Optional
BRAINTRUST_ENDPOINT=https://api.braintrust.dev # Custom endpoint if needed

ゼロコンフィグセットアップ
ゼロコンフィグセットアップへの直接リンク

環境変数を設定すると、設定を渡さずに exporter を使用できます。

src/mastra/index.ts
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()],
},
},
}),
})

明示的な設定
明示的な設定への直接リンク

認証情報を直接渡すこともできます(環境変数より優先されます)。

src/mastra/index.ts
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',
}),
],
},
},
}),
})

完全な設定
完全な設定への直接リンク

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
})

Trace を Braintrust eval に関連付ける
Trace を Braintrust eval に関連付けるへの直接リンク

アプリケーションで Eval()logger.traced()、または currentSpan を使用する場合は、Braintrust SDK を直接インストールします。

npm install braintrust@latest

Mastra を Braintrust の Eval() または logger.traced() 内で実行する場合は、Braintrust logger と currentSpan resolver を exporter に渡します。currentSpan は、eval または traced Span を作成するものと同じ braintrust パッケージインスタンスから import してください。

これにより、アプリと @mastra/braintrust がインストール済み Braintrust SDK の別々のコピーを解決する場合でも、Mastra の Span をアクティブな Braintrust Span の配下に関連付けられます。

exporter は、Braintrust SDK v2 および v3 の互換性のある logger オブジェクトと Span オブジェクトを受け入れます。アプリケーションの Braintrust SDK バージョンを、@mastra/braintrust がインストールしたバージョンと一致させる必要はありません。

src/mastra/index.ts
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,
})

設定済みの Mastra インスタンスを Braintrust eval Task 内で使用します。上記の currentSpan resolver は、Eval() が作成したアクティブな Span を読み取ります。

src/evals/braintrust.ts
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: [],
})

アプリケーションが Braintrust の直接依存関係を v2 から v3 にアップグレードし、Nunjucks prompt template を使用する場合は、Braintrust v2 から v3 への移行ガイドに従ってください。

返された spanId で Braintrust を照会する
querying-braintrust-with-returned-spanidへの直接リンク

Mastra は、返された spanId を Braintrust の row ID と Span ID の両方として使用します。id または span_id で対応する Braintrust Span を検索する際に使用してください。

Braintrust v3 は個別の W3C Trace ID を root_span_id に保存するため、返された Mastra の spanId は Braintrust の root_span_id ではありません。

src/mastra/usage.ts
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

同じことが agent.generate() と Workflow の実行結果(run.start()run.stream() の最終状態、run.resume())にも当てはまります。