@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.
- package/README.md +1 -1
- package/dist/esm/__generated__/api/v1.d.ts +9 -0
- package/dist/esm/__generated__/api/v1.d.ts.map +1 -1
- package/dist/esm/datasets/getDataset.d.ts +2 -3
- package/dist/esm/datasets/getDataset.d.ts.map +1 -1
- package/dist/esm/datasets/getDataset.js +2 -3
- package/dist/esm/datasets/getDataset.js.map +1 -1
- package/dist/esm/datasets/getDatasetExamples.d.ts +4 -4
- package/dist/esm/datasets/getDatasetExamples.d.ts.map +1 -1
- package/dist/esm/datasets/getDatasetExamples.js +11 -11
- package/dist/esm/datasets/getDatasetExamples.js.map +1 -1
- package/dist/esm/experiments/getExperimentInfo.d.ts.map +1 -1
- package/dist/esm/experiments/getExperimentInfo.js +1 -1
- package/dist/esm/experiments/getExperimentInfo.js.map +1 -1
- package/dist/esm/experiments/runExperiment.d.ts +1 -1
- package/dist/esm/experiments/runExperiment.d.ts.map +1 -1
- package/dist/esm/experiments/runExperiment.js +19 -3
- package/dist/esm/experiments/runExperiment.js.map +1 -1
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/esm/types/datasets.d.ts +8 -10
- package/dist/esm/types/datasets.d.ts.map +1 -1
- package/dist/esm/types/experiments.d.ts +1 -0
- package/dist/esm/types/experiments.d.ts.map +1 -1
- package/dist/esm/utils/formatPromptMessages.d.ts.map +1 -1
- package/dist/esm/utils/getPromptBySelector.d.ts.map +1 -1
- package/dist/src/__generated__/api/v1.d.ts +9 -0
- package/dist/src/__generated__/api/v1.d.ts.map +1 -1
- package/dist/src/datasets/getDataset.d.ts +2 -3
- package/dist/src/datasets/getDataset.d.ts.map +1 -1
- package/dist/src/datasets/getDataset.js +2 -3
- package/dist/src/datasets/getDataset.js.map +1 -1
- package/dist/src/datasets/getDatasetExamples.d.ts +4 -4
- package/dist/src/datasets/getDatasetExamples.d.ts.map +1 -1
- package/dist/src/datasets/getDatasetExamples.js +8 -11
- package/dist/src/datasets/getDatasetExamples.js.map +1 -1
- package/dist/src/experiments/getExperimentInfo.d.ts.map +1 -1
- package/dist/src/experiments/getExperimentInfo.js +1 -1
- package/dist/src/experiments/getExperimentInfo.js.map +1 -1
- package/dist/src/experiments/runExperiment.d.ts +1 -1
- package/dist/src/experiments/runExperiment.d.ts.map +1 -1
- package/dist/src/experiments/runExperiment.js +21 -14
- package/dist/src/experiments/runExperiment.js.map +1 -1
- package/dist/src/types/datasets.d.ts +8 -10
- package/dist/src/types/datasets.d.ts.map +1 -1
- package/dist/src/types/experiments.d.ts +1 -0
- package/dist/src/types/experiments.d.ts.map +1 -1
- package/dist/src/utils/formatPromptMessages.d.ts.map +1 -1
- package/dist/src/utils/getPromptBySelector.d.ts.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/src/__generated__/api/v1.ts +9 -0
- package/src/datasets/getDataset.ts +2 -4
- package/src/datasets/getDatasetExamples.ts +13 -13
- package/src/experiments/getExperimentInfo.ts +3 -5
- package/src/experiments/runExperiment.ts +19 -3
- package/src/types/datasets.ts +5 -9
- 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": "
|
|
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.
|
|
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
|
|
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,
|
|
15
|
-
* @
|
|
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
|
|
25
|
+
if ("datasetName" in datasetSelector) {
|
|
27
26
|
const datasetInfo = await getDatasetInfoByName({
|
|
28
27
|
client,
|
|
29
|
-
datasetName:
|
|
28
|
+
datasetName: datasetSelector.datasetName,
|
|
30
29
|
});
|
|
31
30
|
datasetId = datasetInfo.id;
|
|
32
31
|
} else {
|
|
33
|
-
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:
|
|
42
|
-
? {
|
|
43
|
-
|
|
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 } = {} } =
|
|
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:
|
|
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({
|
|
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: {
|
|
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`);
|
package/src/types/datasets.ts
CHANGED
|
@@ -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
|
-
*
|
|
6
|
+
* A dataset can be identified by its datasetId, datasetName, or datasetVersionId
|
|
10
7
|
*/
|
|
11
|
-
export
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
}
|
|
8
|
+
export type DatasetSelector =
|
|
9
|
+
| (DatasetSelectorBase & { datasetId: string })
|
|
10
|
+
| (DatasetSelectorBase & { datasetName: string });
|
|
15
11
|
|
|
16
12
|
/**
|
|
17
13
|
* Overview information about a dataset
|
package/src/types/experiments.ts
CHANGED
|
@@ -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
|
*/
|