@arizeai/phoenix-client
Version:
A client for the Phoenix API
42 lines • 1.87 kB
JavaScript
;
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