@axiomhq/ai
Version:
Axiom AI SDK provides an API to wrap your AI calls with observability instrumentation.
45 lines (44 loc) • 1.47 kB
JavaScript
// 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