@arizeai/phoenix-client 4.2.0 → 5.0.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 (57) 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 +1 -1
  16. package/dist/esm/experiments/runExperiment.d.ts.map +1 -1
  17. package/dist/esm/experiments/runExperiment.js +19 -3
  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/src/__generated__/api/v1.d.ts +9 -0
  27. package/dist/src/__generated__/api/v1.d.ts.map +1 -1
  28. package/dist/src/datasets/getDataset.d.ts +2 -3
  29. package/dist/src/datasets/getDataset.d.ts.map +1 -1
  30. package/dist/src/datasets/getDataset.js +2 -3
  31. package/dist/src/datasets/getDataset.js.map +1 -1
  32. package/dist/src/datasets/getDatasetExamples.d.ts +4 -4
  33. package/dist/src/datasets/getDatasetExamples.d.ts.map +1 -1
  34. package/dist/src/datasets/getDatasetExamples.js +8 -11
  35. package/dist/src/datasets/getDatasetExamples.js.map +1 -1
  36. package/dist/src/experiments/getExperimentInfo.d.ts.map +1 -1
  37. package/dist/src/experiments/getExperimentInfo.js +1 -1
  38. package/dist/src/experiments/getExperimentInfo.js.map +1 -1
  39. package/dist/src/experiments/runExperiment.d.ts +1 -1
  40. package/dist/src/experiments/runExperiment.d.ts.map +1 -1
  41. package/dist/src/experiments/runExperiment.js +21 -14
  42. package/dist/src/experiments/runExperiment.js.map +1 -1
  43. package/dist/src/types/datasets.d.ts +8 -10
  44. package/dist/src/types/datasets.d.ts.map +1 -1
  45. package/dist/src/types/experiments.d.ts +1 -0
  46. package/dist/src/types/experiments.d.ts.map +1 -1
  47. package/dist/src/utils/formatPromptMessages.d.ts.map +1 -1
  48. package/dist/src/utils/getPromptBySelector.d.ts.map +1 -1
  49. package/dist/tsconfig.tsbuildinfo +1 -1
  50. package/package.json +2 -2
  51. package/src/__generated__/api/v1.ts +9 -0
  52. package/src/datasets/getDataset.ts +2 -4
  53. package/src/datasets/getDatasetExamples.ts +13 -13
  54. package/src/experiments/getExperimentInfo.ts +3 -5
  55. package/src/experiments/runExperiment.ts +19 -3
  56. package/src/types/datasets.ts +5 -9
  57. package/src/types/experiments.ts +2 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arizeai/phoenix-client",
3
- "version": "4.2.0",
3
+ "version": "5.0.0",
4
4
  "description": "A client for the Phoenix API",
5
5
  "main": "dist/src/index.js",
6
6
  "module": "dist/esm/index.js",
@@ -90,7 +90,7 @@
90
90
  },
91
91
  "optionalDependencies": {
92
92
  "@anthropic-ai/sdk": "^0.35.0",
93
- "ai": "^5.0.38",
93
+ "ai": "^5.0.76",
94
94
  "openai": "^5.12.1"
95
95
  },
96
96
  "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,
@@ -160,7 +160,7 @@ export async function runExperiment({
160
160
  experimentDescription,
161
161
  experimentMetadata = {},
162
162
  client: _client,
163
- dataset: DatasetSelector,
163
+ dataset: datasetSelector,
164
164
  task,
165
165
  evaluators,
166
166
  logger = console,
@@ -180,7 +180,10 @@ export async function runExperiment({
180
180
  let provider: NodeTracerProvider | undefined;
181
181
  const isDryRun = typeof dryRun === "number" || dryRun === true;
182
182
  const client = _client ?? createClient();
183
- const dataset = await getDataset({ dataset: DatasetSelector, client });
183
+ const dataset = await getDataset({
184
+ dataset: datasetSelector,
185
+ client,
186
+ });
184
187
  invariant(dataset, `Dataset not found`);
185
188
  invariant(dataset.examples.length > 0, `Dataset has no examples`);
186
189
  const nExamples =
@@ -197,6 +200,8 @@ export async function runExperiment({
197
200
  id: localId(),
198
201
  datasetId: dataset.id,
199
202
  datasetVersionId: dataset.versionId,
203
+ // @todo: the dataset should return splits in response body
204
+ datasetSplits: datasetSelector?.splits ?? [],
200
205
  projectName,
201
206
  metadata: experimentMetadata,
202
207
  };
@@ -215,6 +220,11 @@ export async function runExperiment({
215
220
  metadata: experimentMetadata,
216
221
  project_name: projectName,
217
222
  repetitions,
223
+ // @todo: the dataset should return splits in response body
224
+ ...(datasetSelector?.splits
225
+ ? { splits: datasetSelector.splits }
226
+ : {}),
227
+ ...(dataset?.versionId ? { version_id: dataset.versionId } : {}),
218
228
  },
219
229
  })
220
230
  .then((res) => res.data?.data);
@@ -224,6 +234,8 @@ export async function runExperiment({
224
234
  id: experimentResponse.id,
225
235
  datasetId: experimentResponse.dataset_id,
226
236
  datasetVersionId: experimentResponse.dataset_version_id,
237
+ // @todo: the dataset should return splits in response body
238
+ datasetSplits: datasetSelector?.splits ?? [],
227
239
  projectName,
228
240
  metadata: experimentResponse.metadata,
229
241
  };
@@ -557,7 +569,11 @@ export async function evaluateExperiment({
557
569
  ? Math.min(dryRun, Object.keys(experiment.runs).length)
558
570
  : Object.keys(experiment.runs).length;
559
571
  const dataset = await getDataset({
560
- dataset: { datasetId: experiment.datasetId },
572
+ dataset: {
573
+ datasetId: experiment.datasetId,
574
+ versionId: experiment.datasetVersionId,
575
+ splits: experiment.datasetSplits,
576
+ },
561
577
  client,
562
578
  });
563
579
  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
  */