UNPKG

@arizeai/phoenix-client

Version:

A client for the Phoenix API

42 lines 1.87 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createProvider = createProvider; exports.createNoOpProvider = createNoOpProvider; const api_1 = require("@opentelemetry/api"); const exporter_trace_otlp_proto_1 = require("@opentelemetry/exporter-trace-otlp-proto"); const resources_1 = require("@opentelemetry/resources"); const sdk_trace_node_1 = require("@opentelemetry/sdk-trace-node"); const openinference_semantic_conventions_1 = require("@arizeai/openinference-semantic-conventions"); const openinference_vercel_1 = require("@arizeai/openinference-vercel"); /** * Creates a provider that exports traces to Phoenix. */ function createProvider({ projectName, baseUrl, headers, }) { api_1.diag.setLogger(new api_1.DiagConsoleLogger(), api_1.DiagLogLevel.ERROR); const provider = new sdk_trace_node_1.NodeTracerProvider({ resource: (0, resources_1.resourceFromAttributes)({ [openinference_semantic_conventions_1.SEMRESATTRS_PROJECT_NAME]: projectName, }), spanProcessors: [ // We opt to use the OpenInferenceSimpleSpanProcessor instead of the SimpleSpanProcessor // Since so many AI applications use the AI SDK new openinference_vercel_1.OpenInferenceSimpleSpanProcessor({ exporter: new exporter_trace_otlp_proto_1.OTLPTraceExporter({ url: `${baseUrl}/v1/traces`, headers: Array.isArray(headers) ? Object.fromEntries(headers) : headers, }), }), ], }); return provider; } /** * For dry runs we create a provider that doesn't export traces. */ function createNoOpProvider() { const provider = new sdk_trace_node_1.NodeTracerProvider({}); return provider; } //# sourceMappingURL=instrumention.js.map