跳至主要內容

Arthur Exporter

Arthur 透過開放原始碼的 Arthur Engine,為 AI 應用程式提供 Observability 與評估平台。Arthur Exporter 使用 OpenTelemetry 與 OpenInference 語意慣例傳送 Trace。

安裝
「安裝」的直接連結

npm install @mastra/arthur@latest

設定
「設定」的直接連結

必要條件
「必要條件」的直接連結

  1. Arthur Engine instance:按照 Docker Compose 部署指南啟動 Arthur Engine
  2. API Key:從 http://localhost:3030 的 Arthur Engine UI 產生 API Key
  3. Task ID(選用):建立 Task,將 Trace 導向特定 Task

Task 路由
「Task 路由」的直接連結

Arthur Engine 會透過兩種方式將 Trace 與 Task 建立關聯:

  • 依服務名稱:在 Observability 設定中設定 serviceName。Arthur Engine 會自動將 Trace 導向名稱相符的 Task,並視需要建立該 Task。
  • 依 Task ID:將既有的 taskId 傳給 Exporter,直接把 Trace 傳送至特定 Task。

如果兩者皆有提供,則以 taskId 為優先。

環境變數
「環境變數」的直接連結

.env
# Required
ARTHUR_API_KEY=your-api-key
ARTHUR_BASE_URL=http://localhost:3030

# Optional - route traces to a pre-existing task by ID
ARTHUR_TASK_ID=your-task-id

零設定
「零設定」的直接連結

設定環境變數後,即可使用不帶任何設定的 Exporter:

src/mastra/index.ts
import { Mastra } from '@mastra/core'
import { Observability } from '@mastra/observability'
import { ArthurExporter } from '@mastra/arthur'

export const mastra = new Mastra({
observability: new Observability({
configs: {
arthur: {
serviceName: 'my-service',
exporters: [new ArthurExporter()],
},
},
}),
})

明確設定
「明確設定」的直接連結

你也可以直接傳入憑證(優先於環境變數):

src/mastra/index.ts
import { Mastra } from '@mastra/core'
import { Observability } from '@mastra/observability'
import { ArthurExporter } from '@mastra/arthur'

export const mastra = new Mastra({
observability: new Observability({
configs: {
arthur: {
serviceName: 'my-service',
exporters: [
new ArthurExporter({
apiKey: process.env.ARTHUR_API_KEY!,
endpoint: process.env.ARTHUR_BASE_URL!,
taskId: process.env.ARTHUR_TASK_ID,
}),
],
},
},
}),
})

設定選項
「設定選項」的直接連結

完整設定
「完整設定」的直接連結

new ArthurExporter({
// Arthur Configuration
apiKey: 'your-api-key', // Required
endpoint: 'http://localhost:3030', // Required
taskId: 'your-task-id', // Optional

// Optional OTLP settings
headers: {
'x-custom-header': 'value', // Additional headers for OTLP requests
},

// Debug and performance tuning
logLevel: 'debug', // Logging: debug | info | warn | error
batchSize: 512, // Batch size before exporting spans
timeout: 30000, // Timeout in ms before exporting spans

// Custom resource attributes
resourceAttributes: {
'deployment.environment': process.env.NODE_ENV,
'service.version': process.env.APP_VERSION,
},
})

自訂 metadata
「自訂 metadata」的直接連結

非保留的 span attribute 會序列化至 OpenInference metadata payload,並顯示在 Arthur 中。你可以透過 tracingOptions.metadata 加入這些 attribute:

await agent.generate(input, {
tracingOptions: {
metadata: {
companyId: 'acme-co',
tier: 'enterprise',
},
},
})

系統會自動排除 inputoutputsessionId、討論串/使用者 ID 與 OpenInference ID 等保留欄位。

OpenInference 語意慣例
「OpenInference 語意慣例」的直接連結

此 Exporter 實作生成式 AI 應用程式的 OpenInference Semantic Conventions,在不同 Observability 平台之間提供標準化的 Trace 結構。