UNPKG

@axiomhq/ai

Version:

Axiom AI SDK provides an API to wrap your AI calls with observability instrumentation.

45 lines (44 loc) 1.47 kB
// src/evals/instrument.ts import { BatchSpanProcessor, NodeTracerProvider } from "@opentelemetry/sdk-trace-node"; import { resourceFromAttributes } from "@opentelemetry/resources"; import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-http"; import { trace } from "@opentelemetry/api"; var collectorOptions = { url: process.env.AXIOM_URL ? `${process.env.AXIOM_URL}/v1/traces` : "https://api.axiom.co/v1/traces", // Axiom API endpoint for trace data headers: { Authorization: `Bearer ${process.env.AXIOM_TOKEN}`, // Replace API_TOKEN with your actual API token "X-Axiom-Dataset": process.env.AXIOM_DATASET || "" // Replace DATASET_NAME with your dataset }, concurrencyLimit: 10 // an optional limit on pending requests }; var exporter = new OTLPTraceExporter(collectorOptions); var processor = new BatchSpanProcessor(exporter, { maxQueueSize: 2048, maxExportBatchSize: 512, scheduledDelayMillis: 5e3, exportTimeoutMillis: 3e4 }); var provider = new NodeTracerProvider({ resource: resourceFromAttributes({ ["service.name"]: "axiom-ai", ["service.version"]: "0.8.0" }), spanProcessors: [processor] }); provider.register(); var tracer = trace.getTracer("axiom-ai", "0.8.0"); var flush = async () => { await provider.forceFlush(); }; var startSpan = (name, opts, context) => { return tracer.startSpan(name, opts, context); }; export { flush, startSpan }; //# sourceMappingURL=chunk-Y2CPJRWO.js.map