@arizeai/phoenix-client 5.0.0 → 5.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/dist/esm/experiments/runExperiment.d.ts +1 -2
  2. package/dist/esm/experiments/runExperiment.d.ts.map +1 -1
  3. package/dist/esm/experiments/runExperiment.js +16 -18
  4. package/dist/esm/experiments/runExperiment.js.map +1 -1
  5. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  6. package/dist/esm/utils/toObjectHeaders.d.ts +6 -0
  7. package/dist/esm/utils/toObjectHeaders.d.ts.map +1 -0
  8. package/dist/esm/utils/toObjectHeaders.js +18 -0
  9. package/dist/esm/utils/toObjectHeaders.js.map +1 -0
  10. package/dist/src/experiments/runExperiment.d.ts +1 -2
  11. package/dist/src/experiments/runExperiment.d.ts.map +1 -1
  12. package/dist/src/experiments/runExperiment.js +28 -30
  13. package/dist/src/experiments/runExperiment.js.map +1 -1
  14. package/dist/src/utils/toObjectHeaders.d.ts +6 -0
  15. package/dist/src/utils/toObjectHeaders.d.ts.map +1 -0
  16. package/dist/src/utils/toObjectHeaders.js +21 -0
  17. package/dist/src/utils/toObjectHeaders.js.map +1 -0
  18. package/dist/tsconfig.tsbuildinfo +1 -1
  19. package/package.json +3 -9
  20. package/src/experiments/runExperiment.ts +22 -19
  21. package/src/utils/toObjectHeaders.ts +22 -0
  22. package/dist/esm/experiments/instrumentation.d.ts +0 -29
  23. package/dist/esm/experiments/instrumentation.d.ts.map +0 -1
  24. package/dist/esm/experiments/instrumentation.js +0 -40
  25. package/dist/esm/experiments/instrumentation.js.map +0 -1
  26. package/dist/esm/utils/objectAsAttributes.d.ts +0 -3
  27. package/dist/esm/utils/objectAsAttributes.d.ts.map +0 -1
  28. package/dist/esm/utils/objectAsAttributes.js +0 -4
  29. package/dist/esm/utils/objectAsAttributes.js.map +0 -1
  30. package/dist/src/experiments/instrumentation.d.ts +0 -29
  31. package/dist/src/experiments/instrumentation.d.ts.map +0 -1
  32. package/dist/src/experiments/instrumentation.js +0 -44
  33. package/dist/src/experiments/instrumentation.js.map +0 -1
  34. package/dist/src/utils/objectAsAttributes.d.ts +0 -3
  35. package/dist/src/utils/objectAsAttributes.d.ts.map +0 -1
  36. package/dist/src/utils/objectAsAttributes.js +0 -7
  37. package/dist/src/utils/objectAsAttributes.js.map +0 -1
  38. package/src/experiments/instrumentation.ts +0 -75
  39. package/src/utils/objectAsAttributes.ts +0 -9
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arizeai/phoenix-client",
3
- "version": "5.0.0",
3
+ "version": "5.1.0",
4
4
  "description": "A client for the Phoenix API",
5
5
  "main": "dist/src/index.js",
6
6
  "module": "dist/esm/index.js",
@@ -72,18 +72,12 @@
72
72
  "dependencies": {
73
73
  "@arizeai/openinference-semantic-conventions": "^1.1.0",
74
74
  "@arizeai/openinference-vercel": "^2.3.1",
75
- "@opentelemetry/api": "^1.9.0",
76
- "@opentelemetry/core": "^1.25.1",
77
- "@opentelemetry/exporter-trace-otlp-proto": "^0.57.2",
78
- "@opentelemetry/instrumentation": "^0.57.2",
79
- "@opentelemetry/resources": "^2.0.0",
80
- "@opentelemetry/sdk-trace-base": "^1.30.1",
81
- "@opentelemetry/sdk-trace-node": "^1.30.1",
82
75
  "async": "^3.2.6",
83
76
  "openapi-fetch": "^0.12.5",
84
77
  "tiny-invariant": "^1.3.3",
85
78
  "zod": "^3.24.2",
86
- "zod-to-json-schema": "^3.24.3"
79
+ "zod-to-json-schema": "^3.24.3",
80
+ "@arizeai/phoenix-otel": "0.2.0"
87
81
  },
88
82
  "engines": {
89
83
  "node": ">=18"
@@ -22,27 +22,29 @@ import { getDataset } from "../datasets/getDataset";
22
22
  import { pluralize } from "../utils/pluralize";
23
23
  import { promisifyResult } from "../utils/promisifyResult";
24
24
  import { AnnotatorKind } from "../types/annotations";
25
- import { createProvider, createNoOpProvider } from "./instrumentation";
26
25
  import {
27
26
  type DiagLogLevel,
28
27
  SpanStatusCode,
29
28
  Tracer,
30
29
  trace,
31
- } from "@opentelemetry/api";
30
+ NodeTracerProvider,
31
+ objectAsAttributes,
32
+ createNoOpProvider,
33
+ register,
34
+ } from "@arizeai/phoenix-otel";
32
35
  import {
33
36
  MimeType,
34
37
  OpenInferenceSpanKind,
35
38
  SemanticConventions,
36
39
  } from "@arizeai/openinference-semantic-conventions";
37
40
  import { ensureString } from "../utils/ensureString";
38
- import type { NodeTracerProvider } from "@opentelemetry/sdk-trace-node";
39
- import { objectAsAttributes } from "../utils/objectAsAttributes";
40
41
  import {
41
42
  getDatasetUrl,
42
43
  getDatasetExperimentsUrl,
43
44
  getExperimentUrl,
44
45
  } from "../utils/urlUtils";
45
46
  import assert from "assert";
47
+ import { toObjectHeaders } from "../utils/toObjectHeaders";
46
48
 
47
49
  /**
48
50
  * Validate that a repetition is valid
@@ -245,17 +247,18 @@ export async function runExperiment({
245
247
  baseUrl,
246
248
  "Phoenix base URL not found. Please set PHOENIX_HOST or set baseUrl on the client."
247
249
  );
248
- provider = createProvider({
250
+
251
+ provider = register({
249
252
  projectName,
250
- baseUrl,
251
- headers: client.config.headers ?? {},
252
- useBatchSpanProcessor,
253
+ url: baseUrl,
254
+ headers: client.config.headers
255
+ ? toObjectHeaders(client.config.headers)
256
+ : undefined,
257
+ batch: useBatchSpanProcessor,
253
258
  diagLogLevel,
259
+ global: setGlobalTracerProvider,
254
260
  });
255
- // Register the provider
256
- if (setGlobalTracerProvider) {
257
- provider.register();
258
- }
261
+
259
262
  taskTracer = provider.getTracer(projectName);
260
263
  }
261
264
  if (!record) {
@@ -548,16 +551,16 @@ export async function evaluateExperiment({
548
551
  if (paramsTracerProvider) {
549
552
  provider = paramsTracerProvider;
550
553
  } else if (!isDryRun) {
551
- provider = createProvider({
554
+ provider = register({
552
555
  projectName: "evaluators",
553
- baseUrl,
554
- headers: client.config.headers ?? {},
555
- useBatchSpanProcessor,
556
+ url: baseUrl,
557
+ headers: client.config.headers
558
+ ? toObjectHeaders(client.config.headers)
559
+ : undefined,
560
+ batch: useBatchSpanProcessor,
556
561
  diagLogLevel,
562
+ global: setGlobalTracerProvider,
557
563
  });
558
- if (setGlobalTracerProvider) {
559
- provider.register();
560
- }
561
564
  } else {
562
565
  provider = createNoOpProvider();
563
566
  }
@@ -0,0 +1,22 @@
1
+ import { HeadersOptions } from "openapi-fetch";
2
+
3
+ /**
4
+ * A utility function that simplifies the headers for passing to other clients
5
+ */
6
+ export function toObjectHeaders(
7
+ headers: HeadersOptions
8
+ ): Record<string, string> {
9
+ if (Array.isArray(headers)) {
10
+ return Object.fromEntries(headers);
11
+ }
12
+
13
+ const objectHeaders: Record<string, string> = {};
14
+ for (const [key, value] of Object.entries(headers)) {
15
+ if (value !== null && value !== undefined) {
16
+ objectHeaders[key] = Array.isArray(value)
17
+ ? value.join(", ")
18
+ : String(value);
19
+ }
20
+ }
21
+ return objectHeaders;
22
+ }
@@ -1,29 +0,0 @@
1
- import { DiagLogLevel } from "@opentelemetry/api";
2
- import { NodeTracerProvider } from "@opentelemetry/sdk-trace-node";
3
- import { HeadersOptions } from "openapi-fetch";
4
- /**
5
- * Creates a provider that exports traces to Phoenix.
6
- */
7
- export declare function createProvider({ projectName, baseUrl, headers, useBatchSpanProcessor, diagLogLevel, }: {
8
- projectName: string;
9
- headers: HeadersOptions;
10
- /**
11
- * Whether to use batching for the span processor.
12
- * @default true
13
- */
14
- useBatchSpanProcessor: boolean;
15
- /**
16
- * The base URL of the Phoenix. Doesn't include the /v1/traces path.
17
- */
18
- baseUrl: string;
19
- /**
20
- * The diag log level to set for the built in DiagConsoleLogger instance.
21
- * Omit to disable built in logging.
22
- */
23
- diagLogLevel?: DiagLogLevel;
24
- }): NodeTracerProvider;
25
- /**
26
- * For dry runs we create a provider that doesn't export traces.
27
- */
28
- export declare function createNoOpProvider(): NodeTracerProvider;
29
- //# sourceMappingURL=instrumentation.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"instrumentation.d.ts","sourceRoot":"","sources":["../../../src/experiments/instrumentation.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAG3E,OAAO,EACL,kBAAkB,EAEnB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAM/C;;GAEG;AACH,wBAAgB,cAAc,CAAC,EAC7B,WAAW,EACX,OAAO,EACP,OAAO,EACP,qBAA4B,EAC5B,YAAY,GACb,EAAE;IACD,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,cAAc,CAAC;IACxB;;;OAGG;IACH,qBAAqB,EAAE,OAAO,CAAC;IAC/B;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B,sBAyBA;AAED;;GAEG;AACH,wBAAgB,kBAAkB,uBAIjC"}
@@ -1,40 +0,0 @@
1
- import { diag, DiagConsoleLogger } from "@opentelemetry/api";
2
- import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-proto";
3
- import { resourceFromAttributes } from "@opentelemetry/resources";
4
- import { NodeTracerProvider, } from "@opentelemetry/sdk-trace-node";
5
- import { SEMRESATTRS_PROJECT_NAME } from "@arizeai/openinference-semantic-conventions";
6
- import { OpenInferenceBatchSpanProcessor, OpenInferenceSimpleSpanProcessor, } from "@arizeai/openinference-vercel";
7
- /**
8
- * Creates a provider that exports traces to Phoenix.
9
- */
10
- export function createProvider({ projectName, baseUrl, headers, useBatchSpanProcessor = true, diagLogLevel, }) {
11
- if (diagLogLevel) {
12
- diag.setLogger(new DiagConsoleLogger(), diagLogLevel);
13
- }
14
- const exporter = new OTLPTraceExporter({
15
- url: `${baseUrl}/v1/traces`,
16
- headers: Array.isArray(headers) ? Object.fromEntries(headers) : headers,
17
- });
18
- let spanProcessor;
19
- if (useBatchSpanProcessor) {
20
- spanProcessor = new OpenInferenceBatchSpanProcessor({ exporter });
21
- }
22
- else {
23
- spanProcessor = new OpenInferenceSimpleSpanProcessor({ exporter });
24
- }
25
- const provider = new NodeTracerProvider({
26
- resource: resourceFromAttributes({
27
- [SEMRESATTRS_PROJECT_NAME]: projectName,
28
- }),
29
- spanProcessors: [spanProcessor],
30
- });
31
- return provider;
32
- }
33
- /**
34
- * For dry runs we create a provider that doesn't export traces.
35
- */
36
- export function createNoOpProvider() {
37
- const provider = new NodeTracerProvider({});
38
- return provider;
39
- }
40
- //# sourceMappingURL=instrumentation.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../../src/experiments/instrumentation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAgB,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AAC7E,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EACL,kBAAkB,GAEnB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,wBAAwB,EAAE,MAAM,6CAA6C,CAAC;AAEvF,OAAO,EACL,+BAA+B,EAC/B,gCAAgC,GACjC,MAAM,+BAA+B,CAAC;AAEvC;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,EAC7B,WAAW,EACX,OAAO,EACP,OAAO,EACP,qBAAqB,GAAG,IAAI,EAC5B,YAAY,GAkBb;IACC,IAAI,YAAY,EAAE,CAAC;QACjB,IAAI,CAAC,SAAS,CAAC,IAAI,iBAAiB,EAAE,EAAE,YAAY,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,iBAAiB,CAAC;QACrC,GAAG,EAAE,GAAG,OAAO,YAAY;QAC3B,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO;KACxE,CAAC,CAAC;IAEH,IAAI,aAA4B,CAAC;IACjC,IAAI,qBAAqB,EAAE,CAAC;QAC1B,aAAa,GAAG,IAAI,+BAA+B,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;IACpE,CAAC;SAAM,CAAC;QACN,aAAa,GAAG,IAAI,gCAAgC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;IACrE,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,kBAAkB,CAAC;QACtC,QAAQ,EAAE,sBAAsB,CAAC;YAC/B,CAAC,wBAAwB,CAAC,EAAE,WAAW;SACxC,CAAC;QACF,cAAc,EAAE,CAAC,aAAa,CAAC;KAChC,CAAC,CAAC;IAEH,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB;IAChC,MAAM,QAAQ,GAAG,IAAI,kBAAkB,CAAC,EAAE,CAAC,CAAC;IAE5C,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -1,3 +0,0 @@
1
- import { AttributeValue } from "@opentelemetry/api";
2
- export declare function objectAsAttributes<T extends Record<string, unknown>>(obj: T): Record<string, AttributeValue>;
3
- //# sourceMappingURL=objectAsAttributes.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"objectAsAttributes.d.ts","sourceRoot":"","sources":["../../../src/utils/objectAsAttributes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClE,GAAG,EAAE,CAAC,GACL,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAIhC"}
@@ -1,4 +0,0 @@
1
- export function objectAsAttributes(obj) {
2
- return Object.fromEntries(Object.entries(obj).filter(([_, value]) => value !== null));
3
- }
4
- //# sourceMappingURL=objectAsAttributes.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"objectAsAttributes.js","sourceRoot":"","sources":["../../../src/utils/objectAsAttributes.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,kBAAkB,CAChC,GAAM;IAEN,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,CACzB,CAAC;AACtC,CAAC"}
@@ -1,29 +0,0 @@
1
- import { DiagLogLevel } from "@opentelemetry/api";
2
- import { NodeTracerProvider } from "@opentelemetry/sdk-trace-node";
3
- import { HeadersOptions } from "openapi-fetch";
4
- /**
5
- * Creates a provider that exports traces to Phoenix.
6
- */
7
- export declare function createProvider({ projectName, baseUrl, headers, useBatchSpanProcessor, diagLogLevel, }: {
8
- projectName: string;
9
- headers: HeadersOptions;
10
- /**
11
- * Whether to use batching for the span processor.
12
- * @default true
13
- */
14
- useBatchSpanProcessor: boolean;
15
- /**
16
- * The base URL of the Phoenix. Doesn't include the /v1/traces path.
17
- */
18
- baseUrl: string;
19
- /**
20
- * The diag log level to set for the built in DiagConsoleLogger instance.
21
- * Omit to disable built in logging.
22
- */
23
- diagLogLevel?: DiagLogLevel;
24
- }): NodeTracerProvider;
25
- /**
26
- * For dry runs we create a provider that doesn't export traces.
27
- */
28
- export declare function createNoOpProvider(): NodeTracerProvider;
29
- //# sourceMappingURL=instrumentation.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"instrumentation.d.ts","sourceRoot":"","sources":["../../../src/experiments/instrumentation.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAG3E,OAAO,EACL,kBAAkB,EAEnB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAM/C;;GAEG;AACH,wBAAgB,cAAc,CAAC,EAC7B,WAAW,EACX,OAAO,EACP,OAAO,EACP,qBAA4B,EAC5B,YAAY,GACb,EAAE;IACD,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,cAAc,CAAC;IACxB;;;OAGG;IACH,qBAAqB,EAAE,OAAO,CAAC;IAC/B;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B,sBAyBA;AAED;;GAEG;AACH,wBAAgB,kBAAkB,uBAIjC"}
@@ -1,44 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createProvider = createProvider;
4
- exports.createNoOpProvider = createNoOpProvider;
5
- const api_1 = require("@opentelemetry/api");
6
- const exporter_trace_otlp_proto_1 = require("@opentelemetry/exporter-trace-otlp-proto");
7
- const resources_1 = require("@opentelemetry/resources");
8
- const sdk_trace_node_1 = require("@opentelemetry/sdk-trace-node");
9
- const openinference_semantic_conventions_1 = require("@arizeai/openinference-semantic-conventions");
10
- const openinference_vercel_1 = require("@arizeai/openinference-vercel");
11
- /**
12
- * Creates a provider that exports traces to Phoenix.
13
- */
14
- function createProvider({ projectName, baseUrl, headers, useBatchSpanProcessor = true, diagLogLevel, }) {
15
- if (diagLogLevel) {
16
- api_1.diag.setLogger(new api_1.DiagConsoleLogger(), diagLogLevel);
17
- }
18
- const exporter = new exporter_trace_otlp_proto_1.OTLPTraceExporter({
19
- url: `${baseUrl}/v1/traces`,
20
- headers: Array.isArray(headers) ? Object.fromEntries(headers) : headers,
21
- });
22
- let spanProcessor;
23
- if (useBatchSpanProcessor) {
24
- spanProcessor = new openinference_vercel_1.OpenInferenceBatchSpanProcessor({ exporter });
25
- }
26
- else {
27
- spanProcessor = new openinference_vercel_1.OpenInferenceSimpleSpanProcessor({ exporter });
28
- }
29
- const provider = new sdk_trace_node_1.NodeTracerProvider({
30
- resource: (0, resources_1.resourceFromAttributes)({
31
- [openinference_semantic_conventions_1.SEMRESATTRS_PROJECT_NAME]: projectName,
32
- }),
33
- spanProcessors: [spanProcessor],
34
- });
35
- return provider;
36
- }
37
- /**
38
- * For dry runs we create a provider that doesn't export traces.
39
- */
40
- function createNoOpProvider() {
41
- const provider = new sdk_trace_node_1.NodeTracerProvider({});
42
- return provider;
43
- }
44
- //# sourceMappingURL=instrumentation.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../../src/experiments/instrumentation.ts"],"names":[],"mappings":";;AAiBA,wCAgDC;AAKD,gDAIC;AA1ED,4CAA2E;AAC3E,wFAA6E;AAC7E,wDAAkE;AAClE,kEAGuC;AACvC,oGAAuF;AAEvF,wEAGuC;AAEvC;;GAEG;AACH,SAAgB,cAAc,CAAC,EAC7B,WAAW,EACX,OAAO,EACP,OAAO,EACP,qBAAqB,GAAG,IAAI,EAC5B,YAAY,GAkBb;IACC,IAAI,YAAY,EAAE,CAAC;QACjB,UAAI,CAAC,SAAS,CAAC,IAAI,uBAAiB,EAAE,EAAE,YAAY,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,6CAAiB,CAAC;QACrC,GAAG,EAAE,GAAG,OAAO,YAAY;QAC3B,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO;KACxE,CAAC,CAAC;IAEH,IAAI,aAA4B,CAAC;IACjC,IAAI,qBAAqB,EAAE,CAAC;QAC1B,aAAa,GAAG,IAAI,sDAA+B,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;IACpE,CAAC;SAAM,CAAC;QACN,aAAa,GAAG,IAAI,uDAAgC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;IACrE,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,mCAAkB,CAAC;QACtC,QAAQ,EAAE,IAAA,kCAAsB,EAAC;YAC/B,CAAC,6DAAwB,CAAC,EAAE,WAAW;SACxC,CAAC;QACF,cAAc,EAAE,CAAC,aAAa,CAAC;KAChC,CAAC,CAAC;IAEH,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,SAAgB,kBAAkB;IAChC,MAAM,QAAQ,GAAG,IAAI,mCAAkB,CAAC,EAAE,CAAC,CAAC;IAE5C,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -1,3 +0,0 @@
1
- import { AttributeValue } from "@opentelemetry/api";
2
- export declare function objectAsAttributes<T extends Record<string, unknown>>(obj: T): Record<string, AttributeValue>;
3
- //# sourceMappingURL=objectAsAttributes.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"objectAsAttributes.d.ts","sourceRoot":"","sources":["../../../src/utils/objectAsAttributes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClE,GAAG,EAAE,CAAC,GACL,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAIhC"}
@@ -1,7 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.objectAsAttributes = objectAsAttributes;
4
- function objectAsAttributes(obj) {
5
- return Object.fromEntries(Object.entries(obj).filter(([_, value]) => value !== null));
6
- }
7
- //# sourceMappingURL=objectAsAttributes.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"objectAsAttributes.js","sourceRoot":"","sources":["../../../src/utils/objectAsAttributes.ts"],"names":[],"mappings":";;AAEA,gDAMC;AAND,SAAgB,kBAAkB,CAChC,GAAM;IAEN,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,CACzB,CAAC;AACtC,CAAC"}
@@ -1,75 +0,0 @@
1
- import { diag, DiagConsoleLogger, DiagLogLevel } from "@opentelemetry/api";
2
- import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-proto";
3
- import { resourceFromAttributes } from "@opentelemetry/resources";
4
- import {
5
- NodeTracerProvider,
6
- SpanProcessor,
7
- } from "@opentelemetry/sdk-trace-node";
8
- import { SEMRESATTRS_PROJECT_NAME } from "@arizeai/openinference-semantic-conventions";
9
- import { HeadersOptions } from "openapi-fetch";
10
- import {
11
- OpenInferenceBatchSpanProcessor,
12
- OpenInferenceSimpleSpanProcessor,
13
- } from "@arizeai/openinference-vercel";
14
-
15
- /**
16
- * Creates a provider that exports traces to Phoenix.
17
- */
18
- export function createProvider({
19
- projectName,
20
- baseUrl,
21
- headers,
22
- useBatchSpanProcessor = true,
23
- diagLogLevel,
24
- }: {
25
- projectName: string;
26
- headers: HeadersOptions;
27
- /**
28
- * Whether to use batching for the span processor.
29
- * @default true
30
- */
31
- useBatchSpanProcessor: boolean;
32
- /**
33
- * The base URL of the Phoenix. Doesn't include the /v1/traces path.
34
- */
35
- baseUrl: string;
36
- /**
37
- * The diag log level to set for the built in DiagConsoleLogger instance.
38
- * Omit to disable built in logging.
39
- */
40
- diagLogLevel?: DiagLogLevel;
41
- }) {
42
- if (diagLogLevel) {
43
- diag.setLogger(new DiagConsoleLogger(), diagLogLevel);
44
- }
45
-
46
- const exporter = new OTLPTraceExporter({
47
- url: `${baseUrl}/v1/traces`,
48
- headers: Array.isArray(headers) ? Object.fromEntries(headers) : headers,
49
- });
50
-
51
- let spanProcessor: SpanProcessor;
52
- if (useBatchSpanProcessor) {
53
- spanProcessor = new OpenInferenceBatchSpanProcessor({ exporter });
54
- } else {
55
- spanProcessor = new OpenInferenceSimpleSpanProcessor({ exporter });
56
- }
57
-
58
- const provider = new NodeTracerProvider({
59
- resource: resourceFromAttributes({
60
- [SEMRESATTRS_PROJECT_NAME]: projectName,
61
- }),
62
- spanProcessors: [spanProcessor],
63
- });
64
-
65
- return provider;
66
- }
67
-
68
- /**
69
- * For dry runs we create a provider that doesn't export traces.
70
- */
71
- export function createNoOpProvider() {
72
- const provider = new NodeTracerProvider({});
73
-
74
- return provider;
75
- }
@@ -1,9 +0,0 @@
1
- import { AttributeValue } from "@opentelemetry/api";
2
-
3
- export function objectAsAttributes<T extends Record<string, unknown>>(
4
- obj: T
5
- ): Record<string, AttributeValue> {
6
- return Object.fromEntries(
7
- Object.entries(obj).filter(([_, value]) => value !== null)
8
- ) as Record<string, AttributeValue>;
9
- }