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.
InstallationLien direct vers Installation
- npm
- pnpm
- Yarn
- Bun
npm install @mastra/arthur@latest
pnpm add @mastra/arthur@latest
yarn add @mastra/arthur@latest
bun add @mastra/arthur@latest
ConfigurationLien direct vers Configuration
PrérequisLien direct vers Prérequis
- Instance Arthur Engine : suivez le guide de déploiement avec Docker Compose pour démarrer Arthur Engine
- Clé API : générez une clé API depuis l’interface Arthur Engine à l’adresse
http://localhost:3030 - ID de tâche (facultatif) : créez une tâche pour diriger les traces vers une tâche précise
Routage vers les tâchesLien 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
serviceNamedans 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
taskIdexistant à l’exporter pour envoyer directement les traces à une tâche précise.
Lorsque les deux sont fournis, taskId est prioritaire.
Variables d’environnementLien direct vers Variables d’environnement
# 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 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 { ArthurExporter } from '@mastra/arthur'
export const mastra = new Mastra({
observability: new Observability({
configs: {
arthur: {
serviceName: 'my-service',
exporters: [new ArthurExporter()],
},
},
}),
})
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 { 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 configurationLien direct vers Options de configuration
Configuration complèteLien 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éesLien 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 OpenInferenceLien 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é.