@arizeai/phoenix-client 4.2.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 (84) hide show
  1. package/README.md +1 -1
  2. package/dist/esm/__generated__/api/v1.d.ts +9 -0
  3. package/dist/esm/__generated__/api/v1.d.ts.map +1 -1
  4. package/dist/esm/datasets/getDataset.d.ts +2 -3
  5. package/dist/esm/datasets/getDataset.d.ts.map +1 -1
  6. package/dist/esm/datasets/getDataset.js +2 -3
  7. package/dist/esm/datasets/getDataset.js.map +1 -1
  8. package/dist/esm/datasets/getDatasetExamples.d.ts +4 -4
  9. package/dist/esm/datasets/getDatasetExamples.d.ts.map +1 -1
  10. package/dist/esm/datasets/getDatasetExamples.js +11 -11
  11. package/dist/esm/datasets/getDatasetExamples.js.map +1 -1
  12. package/dist/esm/experiments/getExperimentInfo.d.ts.map +1 -1
  13. package/dist/esm/experiments/getExperimentInfo.js +1 -1
  14. package/dist/esm/experiments/getExperimentInfo.js.map +1 -1
  15. package/dist/esm/experiments/runExperiment.d.ts +2 -3
  16. package/dist/esm/experiments/runExperiment.d.ts.map +1 -1
  17. package/dist/esm/experiments/runExperiment.js +35 -21
  18. package/dist/esm/experiments/runExperiment.js.map +1 -1
  19. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  20. package/dist/esm/types/datasets.d.ts +8 -10
  21. package/dist/esm/types/datasets.d.ts.map +1 -1
  22. package/dist/esm/types/experiments.d.ts +1 -0
  23. package/dist/esm/types/experiments.d.ts.map +1 -1
  24. package/dist/esm/utils/formatPromptMessages.d.ts.map +1 -1
  25. package/dist/esm/utils/getPromptBySelector.d.ts.map +1 -1
  26. package/dist/esm/utils/toObjectHeaders.d.ts +6 -0
  27. package/dist/esm/utils/toObjectHeaders.d.ts.map +1 -0
  28. package/dist/esm/utils/toObjectHeaders.js +18 -0
  29. package/dist/esm/utils/toObjectHeaders.js.map +1 -0
  30. package/dist/src/__generated__/api/v1.d.ts +9 -0
  31. package/dist/src/__generated__/api/v1.d.ts.map +1 -1
  32. package/dist/src/datasets/getDataset.d.ts +2 -3
  33. package/dist/src/datasets/getDataset.d.ts.map +1 -1
  34. package/dist/src/datasets/getDataset.js +2 -3
  35. package/dist/src/datasets/getDataset.js.map +1 -1
  36. package/dist/src/datasets/getDatasetExamples.d.ts +4 -4
  37. package/dist/src/datasets/getDatasetExamples.d.ts.map +1 -1
  38. package/dist/src/datasets/getDatasetExamples.js +8 -11
  39. package/dist/src/datasets/getDatasetExamples.js.map +1 -1
  40. package/dist/src/experiments/getExperimentInfo.d.ts.map +1 -1
  41. package/dist/src/experiments/getExperimentInfo.js +1 -1
  42. package/dist/src/experiments/getExperimentInfo.js.map +1 -1
  43. package/dist/src/experiments/runExperiment.d.ts +2 -3
  44. package/dist/src/experiments/runExperiment.d.ts.map +1 -1
  45. package/dist/src/experiments/runExperiment.js +46 -41
  46. package/dist/src/experiments/runExperiment.js.map +1 -1
  47. package/dist/src/types/datasets.d.ts +8 -10
  48. package/dist/src/types/datasets.d.ts.map +1 -1
  49. package/dist/src/types/experiments.d.ts +1 -0
  50. package/dist/src/types/experiments.d.ts.map +1 -1
  51. package/dist/src/utils/formatPromptMessages.d.ts.map +1 -1
  52. package/dist/src/utils/getPromptBySelector.d.ts.map +1 -1
  53. package/dist/src/utils/toObjectHeaders.d.ts +6 -0
  54. package/dist/src/utils/toObjectHeaders.d.ts.map +1 -0
  55. package/dist/src/utils/toObjectHeaders.js +21 -0
  56. package/dist/src/utils/toObjectHeaders.js.map +1 -0
  57. package/dist/tsconfig.tsbuildinfo +1 -1
  58. package/package.json +4 -10
  59. package/src/__generated__/api/v1.ts +9 -0
  60. package/src/datasets/getDataset.ts +2 -4
  61. package/src/datasets/getDatasetExamples.ts +13 -13
  62. package/src/experiments/getExperimentInfo.ts +3 -5
  63. package/src/experiments/runExperiment.ts +41 -22
  64. package/src/types/datasets.ts +5 -9
  65. package/src/types/experiments.ts +2 -0
  66. package/src/utils/toObjectHeaders.ts +22 -0
  67. package/dist/esm/experiments/instrumentation.d.ts +0 -29
  68. package/dist/esm/experiments/instrumentation.d.ts.map +0 -1
  69. package/dist/esm/experiments/instrumentation.js +0 -40
  70. package/dist/esm/experiments/instrumentation.js.map +0 -1
  71. package/dist/esm/utils/objectAsAttributes.d.ts +0 -3
  72. package/dist/esm/utils/objectAsAttributes.d.ts.map +0 -1
  73. package/dist/esm/utils/objectAsAttributes.js +0 -4
  74. package/dist/esm/utils/objectAsAttributes.js.map +0 -1
  75. package/dist/src/experiments/instrumentation.d.ts +0 -29
  76. package/dist/src/experiments/instrumentation.d.ts.map +0 -1
  77. package/dist/src/experiments/instrumentation.js +0 -44
  78. package/dist/src/experiments/instrumentation.js.map +0 -1
  79. package/dist/src/utils/objectAsAttributes.d.ts +0 -3
  80. package/dist/src/utils/objectAsAttributes.d.ts.map +0 -1
  81. package/dist/src/utils/objectAsAttributes.js +0 -7
  82. package/dist/src/utils/objectAsAttributes.js.map +0 -1
  83. package/src/experiments/instrumentation.ts +0 -75
  84. 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": "4.2.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,25 +72,19 @@
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"
90
84
  },
91
85
  "optionalDependencies": {
92
86
  "@anthropic-ai/sdk": "^0.35.0",
93
- "ai": "^5.0.38",
87
+ "ai": "^5.0.76",
94
88
  "openai": "^5.12.1"
95
89
  },
96
90
  "scripts": {
@@ -939,6 +939,11 @@ export interface components {
939
939
  * @description ID of the dataset version over which the experiment will be run (if omitted, the latest version will be used)
940
940
  */
941
941
  version_id?: string | null;
942
+ /**
943
+ * Splits
944
+ * @description List of dataset split identifiers (GlobalIDs or names) to filter by
945
+ */
946
+ splits?: string[] | null;
942
947
  /**
943
948
  * Repetitions
944
949
  * @description Number of times the experiment should be repeated for each example
@@ -1397,6 +1402,8 @@ export interface components {
1397
1402
  dataset_id: string;
1398
1403
  /** Version Id */
1399
1404
  version_id: string;
1405
+ /** Filtered Splits */
1406
+ filtered_splits?: string[];
1400
1407
  /** Examples */
1401
1408
  examples: components["schemas"]["DatasetExample"][];
1402
1409
  };
@@ -3437,6 +3444,8 @@ export interface operations {
3437
3444
  query?: {
3438
3445
  /** @description The ID of the dataset version (if omitted, returns data from the latest version) */
3439
3446
  version_id?: string | null;
3447
+ /** @description List of dataset split identifiers (GlobalIDs or names) to filter by */
3448
+ split?: string[] | null;
3440
3449
  };
3441
3450
  header?: never;
3442
3451
  path: {
@@ -5,24 +5,22 @@ import { getDatasetExamples } from "./getDatasetExamples";
5
5
  import { getDatasetInfo } from "./getDatasetInfo";
6
6
 
7
7
  export type GetDatasetParams = ClientFn & {
8
+ /** Dataset selector (ID or name) */
8
9
  dataset: DatasetSelector;
9
- versionId?: string;
10
10
  };
11
11
 
12
12
  /**
13
13
  * Get dataset info and examples from the dataset
14
14
  * @param dataset - Dataset selector (ID or name)
15
- * @param versionId - Optional specific version ID (if omitted, returns data from the latest version)
16
15
  */
17
16
  export async function getDataset({
18
17
  client: _client,
19
18
  dataset,
20
- versionId,
21
19
  }: GetDatasetParams): Promise<Dataset> {
22
20
  const client = _client || createClient();
23
21
  const [datasetInfo, datasetExamples] = await Promise.all([
24
22
  getDatasetInfo({ client, dataset }),
25
- getDatasetExamples({ client, dataset, versionId }),
23
+ getDatasetExamples({ client, dataset }),
26
24
  ]);
27
25
  return {
28
26
  ...datasetInfo,
@@ -5,44 +5,44 @@ import { DatasetSelector, DatasetExamples } from "../types/datasets";
5
5
  import { getDatasetInfoByName } from "./getDatasetInfoByName";
6
6
 
7
7
  export type GetDatasetExamplesParams = ClientFn & {
8
+ /** Dataset selector (ID, name, or version ID) */
8
9
  dataset: DatasetSelector;
9
- versionId?: string;
10
10
  };
11
11
 
12
12
  /**
13
13
  * Get examples from a dataset
14
- * @param dataset - Dataset selector (ID, name, or version ID)
15
- * @param versionId - Optional specific version ID (ignored if dataset selector is datasetVersionId)
14
+ * @param dataset - Dataset selector (ID, name, version ID, or splits)
15
+ * @returns Dataset examples
16
16
  */
17
17
  export async function getDatasetExamples({
18
18
  client: _client,
19
- dataset,
20
- versionId,
19
+ dataset: datasetSelector,
21
20
  }: GetDatasetExamplesParams): Promise<DatasetExamples> {
22
21
  const client = _client || createClient();
23
22
 
24
23
  let datasetId: string;
25
24
 
26
- if ("datasetName" in dataset) {
25
+ if ("datasetName" in datasetSelector) {
27
26
  const datasetInfo = await getDatasetInfoByName({
28
27
  client,
29
- datasetName: dataset.datasetName,
28
+ datasetName: datasetSelector.datasetName,
30
29
  });
31
30
  datasetId = datasetInfo.id;
32
31
  } else {
33
- datasetId = dataset.datasetId;
32
+ datasetId = datasetSelector.datasetId;
34
33
  }
35
34
 
35
+ const { versionId, splits } = datasetSelector;
36
+
36
37
  const response = await client.GET("/v1/datasets/{id}/examples", {
37
38
  params: {
38
39
  path: {
39
40
  id: datasetId,
40
41
  },
41
- query: versionId
42
- ? {
43
- version_id: versionId,
44
- }
45
- : undefined,
42
+ query: {
43
+ ...(versionId ? { version_id: versionId } : {}),
44
+ ...(splits ? { split: splits } : {}),
45
+ },
46
46
  },
47
47
  });
48
48
 
@@ -18,16 +18,14 @@ export async function getExperimentInfo({
18
18
  experimentId: experiment_id,
19
19
  }: GetExperimentParams): Promise<ExperimentInfo> {
20
20
  const client = _client || createClient();
21
- const { data: { data: experimentData } = {} } = await client.GET(
22
- "/v1/experiments/{experiment_id}",
23
- {
21
+ const { data: { data: experimentData } = { data: undefined } } =
22
+ await client.GET("/v1/experiments/{experiment_id}", {
24
23
  params: {
25
24
  path: {
26
25
  experiment_id,
27
26
  },
28
27
  },
29
- }
30
- );
28
+ });
31
29
  invariant(experimentData, "Failed to get experiment");
32
30
  return {
33
31
  id: experimentData.id,
@@ -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
@@ -160,7 +162,7 @@ export async function runExperiment({
160
162
  experimentDescription,
161
163
  experimentMetadata = {},
162
164
  client: _client,
163
- dataset: DatasetSelector,
165
+ dataset: datasetSelector,
164
166
  task,
165
167
  evaluators,
166
168
  logger = console,
@@ -180,7 +182,10 @@ export async function runExperiment({
180
182
  let provider: NodeTracerProvider | undefined;
181
183
  const isDryRun = typeof dryRun === "number" || dryRun === true;
182
184
  const client = _client ?? createClient();
183
- const dataset = await getDataset({ dataset: DatasetSelector, client });
185
+ const dataset = await getDataset({
186
+ dataset: datasetSelector,
187
+ client,
188
+ });
184
189
  invariant(dataset, `Dataset not found`);
185
190
  invariant(dataset.examples.length > 0, `Dataset has no examples`);
186
191
  const nExamples =
@@ -197,6 +202,8 @@ export async function runExperiment({
197
202
  id: localId(),
198
203
  datasetId: dataset.id,
199
204
  datasetVersionId: dataset.versionId,
205
+ // @todo: the dataset should return splits in response body
206
+ datasetSplits: datasetSelector?.splits ?? [],
200
207
  projectName,
201
208
  metadata: experimentMetadata,
202
209
  };
@@ -215,6 +222,11 @@ export async function runExperiment({
215
222
  metadata: experimentMetadata,
216
223
  project_name: projectName,
217
224
  repetitions,
225
+ // @todo: the dataset should return splits in response body
226
+ ...(datasetSelector?.splits
227
+ ? { splits: datasetSelector.splits }
228
+ : {}),
229
+ ...(dataset?.versionId ? { version_id: dataset.versionId } : {}),
218
230
  },
219
231
  })
220
232
  .then((res) => res.data?.data);
@@ -224,6 +236,8 @@ export async function runExperiment({
224
236
  id: experimentResponse.id,
225
237
  datasetId: experimentResponse.dataset_id,
226
238
  datasetVersionId: experimentResponse.dataset_version_id,
239
+ // @todo: the dataset should return splits in response body
240
+ datasetSplits: datasetSelector?.splits ?? [],
227
241
  projectName,
228
242
  metadata: experimentResponse.metadata,
229
243
  };
@@ -233,17 +247,18 @@ export async function runExperiment({
233
247
  baseUrl,
234
248
  "Phoenix base URL not found. Please set PHOENIX_HOST or set baseUrl on the client."
235
249
  );
236
- provider = createProvider({
250
+
251
+ provider = register({
237
252
  projectName,
238
- baseUrl,
239
- headers: client.config.headers ?? {},
240
- useBatchSpanProcessor,
253
+ url: baseUrl,
254
+ headers: client.config.headers
255
+ ? toObjectHeaders(client.config.headers)
256
+ : undefined,
257
+ batch: useBatchSpanProcessor,
241
258
  diagLogLevel,
259
+ global: setGlobalTracerProvider,
242
260
  });
243
- // Register the provider
244
- if (setGlobalTracerProvider) {
245
- provider.register();
246
- }
261
+
247
262
  taskTracer = provider.getTracer(projectName);
248
263
  }
249
264
  if (!record) {
@@ -536,16 +551,16 @@ export async function evaluateExperiment({
536
551
  if (paramsTracerProvider) {
537
552
  provider = paramsTracerProvider;
538
553
  } else if (!isDryRun) {
539
- provider = createProvider({
554
+ provider = register({
540
555
  projectName: "evaluators",
541
- baseUrl,
542
- headers: client.config.headers ?? {},
543
- useBatchSpanProcessor,
556
+ url: baseUrl,
557
+ headers: client.config.headers
558
+ ? toObjectHeaders(client.config.headers)
559
+ : undefined,
560
+ batch: useBatchSpanProcessor,
544
561
  diagLogLevel,
562
+ global: setGlobalTracerProvider,
545
563
  });
546
- if (setGlobalTracerProvider) {
547
- provider.register();
548
- }
549
564
  } else {
550
565
  provider = createNoOpProvider();
551
566
  }
@@ -557,7 +572,11 @@ export async function evaluateExperiment({
557
572
  ? Math.min(dryRun, Object.keys(experiment.runs).length)
558
573
  : Object.keys(experiment.runs).length;
559
574
  const dataset = await getDataset({
560
- dataset: { datasetId: experiment.datasetId },
575
+ dataset: {
576
+ datasetId: experiment.datasetId,
577
+ versionId: experiment.datasetVersionId,
578
+ splits: experiment.datasetSplits,
579
+ },
561
580
  client,
562
581
  });
563
582
  invariant(dataset, `Dataset "${experiment.datasetId}" not found`);
@@ -1,17 +1,13 @@
1
1
  import { Node } from "./core";
2
2
 
3
- /**
4
- * A dataset can be identified by its datasetId, datasetName, or datasetVersionId
5
- */
6
- export type DatasetSelector = { datasetId: string } | { datasetName: string };
3
+ type DatasetSelectorBase = { versionId?: string; splits?: string[] };
7
4
 
8
5
  /**
9
- * Parameters for selecting a specific version of a dataset
6
+ * A dataset can be identified by its datasetId, datasetName, or datasetVersionId
10
7
  */
11
- export interface DatasetVersionSelector {
12
- dataset: DatasetSelector;
13
- versionId?: string;
14
- }
8
+ export type DatasetSelector =
9
+ | (DatasetSelectorBase & { datasetId: string })
10
+ | (DatasetSelectorBase & { datasetName: string });
15
11
 
16
12
  /**
17
13
  * Overview information about a dataset
@@ -8,6 +8,8 @@ import { Example } from "./datasets";
8
8
  export interface ExperimentInfo extends Node {
9
9
  datasetId: string;
10
10
  datasetVersionId: string;
11
+ // @todo: mark this as required when experiment API returns it
12
+ datasetSplits?: string[];
11
13
  /**
12
14
  * The project under which the experiment task traces are recorded
13
15
  */
@@ -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
- }