@arizeai/phoenix-client 2.0.0 โ†’ 2.0.1

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arizeai/phoenix-client",
3
- "version": "2.0.0",
3
+ "version": "2.0.1",
4
4
  "description": "A client for the Phoenix API",
5
5
  "main": "dist/src/index.js",
6
6
  "module": "dist/esm/index.js",
@@ -32,6 +32,11 @@ import {
32
32
  import { ensureString } from "../utils/ensureString";
33
33
  import type { NodeTracerProvider } from "@opentelemetry/sdk-trace-node";
34
34
  import { objectAsAttributes } from "../utils/objectAsAttributes";
35
+ import {
36
+ getDatasetUrl,
37
+ getDatasetExperimentsUrl,
38
+ getExperimentUrl,
39
+ } from "../utils/urlUtils";
35
40
 
36
41
  /**
37
42
  * Parameters for running an experiment.
@@ -197,6 +202,26 @@ export async function runExperiment({
197
202
  );
198
203
  }
199
204
 
205
+ if (!isDryRun && client.config.baseUrl) {
206
+ const datasetUrl = getDatasetUrl({
207
+ baseUrl: client.config.baseUrl,
208
+ datasetId: dataset.id,
209
+ });
210
+ const datasetExperimentsUrl = getDatasetExperimentsUrl({
211
+ baseUrl: client.config.baseUrl,
212
+ datasetId: dataset.id,
213
+ });
214
+ const experimentUrl = getExperimentUrl({
215
+ baseUrl: client.config.baseUrl,
216
+ datasetId: dataset.id,
217
+ experimentId: experiment.id,
218
+ });
219
+
220
+ logger.info(`๐Ÿ“Š View dataset: ${datasetUrl}`);
221
+ logger.info(`๐Ÿ“บ View dataset experiments: ${datasetExperimentsUrl}`);
222
+ logger.info(`๐Ÿ”— View this experiment: ${experimentUrl}`);
223
+ }
224
+
200
225
  logger.info(
201
226
  `๐Ÿงช Starting experiment "${experimentName || `<unnamed>`}" on dataset "${dataset.id}" with task "${task.name}" and ${evaluators?.length ?? 0} ${pluralize(
202
227
  "evaluator",
@@ -243,6 +268,15 @@ export async function runExperiment({
243
268
 
244
269
  logger.info(`โœ… Experiment ${experiment.id} completed`);
245
270
 
271
+ if (!isDryRun && client.config.baseUrl) {
272
+ const experimentUrl = getExperimentUrl({
273
+ baseUrl: client.config.baseUrl,
274
+ datasetId: dataset.id,
275
+ experimentId: experiment.id,
276
+ });
277
+ logger.info(`๐Ÿ” View results: ${experimentUrl}`);
278
+ }
279
+
246
280
  return ranExperiment;
247
281
  }
248
282
 
@@ -444,6 +478,15 @@ export async function evaluateExperiment({
444
478
  evaluators?.length ?? 0
445
479
  )}`
446
480
  );
481
+
482
+ if (!isDryRun && client.config.baseUrl) {
483
+ const experimentUrl = getExperimentUrl({
484
+ baseUrl: client.config.baseUrl,
485
+ datasetId: experiment.datasetId,
486
+ experimentId: experiment.id,
487
+ });
488
+ logger.info(`๐Ÿ”— View experiment evaluation: ${experimentUrl}`);
489
+ }
447
490
  type EvaluationId = string;
448
491
  const evaluationRuns: Record<EvaluationId, ExperimentEvaluationRun> = {};
449
492
 
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Utility functions for constructing URLs to Phoenix resources
3
+ */
4
+
5
+ /**
6
+ * Get the base URL for Phoenix web UI
7
+ * @param baseUrl The base URL of the Phoenix API
8
+ * @returns The base URL for the Phoenix web UI
9
+ */
10
+ function getWebBaseUrl(baseUrl: string): string {
11
+ return new URL(baseUrl).toString();
12
+ }
13
+
14
+ /**
15
+ * Get the URL to view a specific experiment in the Phoenix web UI
16
+ * @param baseUrl The base URL of the Phoenix API
17
+ * @param datasetId The ID of the dataset
18
+ * @param experimentId The ID of the experiment
19
+ * @returns The URL to view the experiment
20
+ */
21
+ export function getExperimentUrl({
22
+ baseUrl,
23
+ datasetId,
24
+ experimentId,
25
+ }: {
26
+ baseUrl: string;
27
+ datasetId: string;
28
+ experimentId: string;
29
+ }): string {
30
+ return `${getWebBaseUrl(baseUrl)}datasets/${datasetId}/compare?experimentId=${experimentId}`;
31
+ }
32
+
33
+ /**
34
+ * Get the URL to view experiments for a dataset in the Phoenix web UI
35
+ * @param baseUrl The base URL of the Phoenix API
36
+ * @param datasetId The ID of the dataset
37
+ * @returns The URL to view dataset experiments
38
+ */
39
+ export function getDatasetExperimentsUrl({
40
+ baseUrl,
41
+ datasetId,
42
+ }: {
43
+ baseUrl: string;
44
+ datasetId: string;
45
+ }): string {
46
+ return `${getWebBaseUrl(baseUrl)}datasets/${datasetId}/experiments`;
47
+ }
48
+
49
+ /**
50
+ * Get the URL to view a dataset in the Phoenix web UI
51
+ * @param baseUrl The base URL of the Phoenix API
52
+ * @param datasetId The ID of the dataset
53
+ * @returns The URL to view the dataset
54
+ */
55
+ export function getDatasetUrl({
56
+ baseUrl,
57
+ datasetId,
58
+ }: {
59
+ baseUrl: string;
60
+ datasetId: string;
61
+ }): string {
62
+ return `${getWebBaseUrl(baseUrl)}datasets/${datasetId}/examples`;
63
+ }