Aller au contenu principal

Exporter Arthur

Arthur fournit une plateforme d’observabilité et d’évaluation des applications d’IA par l’intermédiaire d’Arthur Engine, qui est open source. L’exporter Arthur envoie les traces en appliquant les conventions sémantiques OpenTelemetry et OpenInference.

Installation
Lien direct vers Installation

npm install @mastra/arthur@latest

Configuration
Lien direct vers Configuration

Prérequis
Lien direct vers Prérequis

  1. Instance Arthur Engine : suivez le guide de déploiement avec Docker Compose pour démarrer Arthur Engine
  2. Clé API : générez une clé API depuis l’interface Arthur Engine à l’adresse http://localhost:3030
  3. ID de tâche (facultatif) : créez une tâche pour diriger les traces vers une tâche précise

Routage vers les tâches
Lien direct vers Routage vers les tâches

Arthur Engine associe les traces aux tâches de deux manières :

  • Par nom de service : définissez serviceName dans la configuration de l’observabilité. Arthur Engine dirige automatiquement les traces vers la tâche portant ce nom et la crée si nécessaire.
  • Par ID de tâche : transmettez un taskId existant à l’exporter pour envoyer directement les traces à une tâche précise.

Lorsque les deux sont fournis, taskId est prioritaire.

Variables d’environnement
Lien direct vers Variables d’environnement

.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

Configuration automatique
Lien direct vers Configuration automatique

Une fois les variables d’environnement définies, utilisez l’exporter sans configuration :

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()],
},
},
}),
})

Configuration explicite
Lien direct vers Configuration explicite

Vous pouvez également transmettre les identifiants directement ; ils prévalent sur les variables d’environnement :

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

Options de configuration
Lien direct vers Options de configuration

Configuration complète
Lien direct vers Configuration complète

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

Métadonnées personnalisées
Lien direct vers Métadonnées personnalisées

Les attributs de span non réservés sont sérialisés dans la charge utile metadata d’OpenInference et apparaissent dans Arthur. Vous pouvez les ajouter via tracingOptions.metadata :

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

Les champs réservés tels que input, output, sessionId, les ID de thread ou d’utilisateur et les ID OpenInference sont automatiquement exclus.

Conventions sémantiques OpenInference
Lien direct vers Conventions sémantiques OpenInference

Cet exporter implémente les conventions sémantiques OpenInference pour les applications d’IA générative, ce qui fournit une structure de traces standardisée entre les différentes plateformes d’observabilité.