@arizeai/phoenix-client 1.2.0 → 2.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 (183) hide show
  1. package/README.md +118 -0
  2. package/dist/esm/client.d.ts +13 -1
  3. package/dist/esm/client.d.ts.map +1 -1
  4. package/dist/esm/client.js +4 -1
  5. package/dist/esm/client.js.map +1 -1
  6. package/dist/esm/datasets/appendDatasetExamples.d.ts +21 -0
  7. package/dist/esm/datasets/appendDatasetExamples.d.ts.map +1 -0
  8. package/dist/esm/datasets/appendDatasetExamples.js +32 -0
  9. package/dist/esm/datasets/appendDatasetExamples.js.map +1 -0
  10. package/dist/esm/datasets/createDataset.d.ts +25 -0
  11. package/dist/esm/datasets/createDataset.d.ts.map +1 -0
  12. package/dist/esm/datasets/createDataset.js +34 -0
  13. package/dist/esm/datasets/createDataset.js.map +1 -0
  14. package/dist/esm/datasets/getDataset.d.ts +10 -0
  15. package/dist/esm/datasets/getDataset.d.ts.map +1 -0
  16. package/dist/esm/datasets/getDataset.js +18 -0
  17. package/dist/esm/datasets/getDataset.js.map +1 -0
  18. package/dist/esm/datasets/getDatasetExamples.d.ts +10 -0
  19. package/dist/esm/datasets/getDatasetExamples.d.ts.map +1 -0
  20. package/dist/esm/datasets/getDatasetExamples.js +25 -0
  21. package/dist/esm/datasets/getDatasetExamples.js.map +1 -0
  22. package/dist/esm/datasets/getDatasetInfo.d.ts +11 -0
  23. package/dist/esm/datasets/getDatasetInfo.d.ts.map +1 -0
  24. package/dist/esm/datasets/getDatasetInfo.js +25 -0
  25. package/dist/esm/datasets/getDatasetInfo.js.map +1 -0
  26. package/dist/esm/datasets/index.d.ts +7 -0
  27. package/dist/esm/datasets/index.d.ts.map +1 -0
  28. package/dist/esm/datasets/index.js +7 -0
  29. package/dist/esm/datasets/index.js.map +1 -0
  30. package/dist/esm/datasets/listDatasets.d.ts +23 -0
  31. package/dist/esm/datasets/listDatasets.d.ts.map +1 -0
  32. package/dist/esm/datasets/listDatasets.js +26 -0
  33. package/dist/esm/datasets/listDatasets.js.map +1 -0
  34. package/dist/esm/experiments/getExperiment.d.ts +14 -0
  35. package/dist/esm/experiments/getExperiment.d.ts.map +1 -0
  36. package/dist/esm/experiments/getExperiment.js +25 -0
  37. package/dist/esm/experiments/getExperiment.js.map +1 -0
  38. package/dist/esm/experiments/getExperimentInfo.d.ts +13 -0
  39. package/dist/esm/experiments/getExperimentInfo.d.ts.map +1 -0
  40. package/dist/esm/experiments/getExperimentInfo.js +24 -0
  41. package/dist/esm/experiments/getExperimentInfo.js.map +1 -0
  42. package/dist/esm/experiments/getExperimentRuns.d.ts +15 -0
  43. package/dist/esm/experiments/getExperimentRuns.d.ts.map +1 -0
  44. package/dist/esm/experiments/getExperimentRuns.js +33 -0
  45. package/dist/esm/experiments/getExperimentRuns.js.map +1 -0
  46. package/dist/esm/experiments/index.d.ts +3 -0
  47. package/dist/esm/experiments/index.d.ts.map +1 -1
  48. package/dist/esm/experiments/index.js +3 -0
  49. package/dist/esm/experiments/index.js.map +1 -1
  50. package/dist/esm/experiments/instrumention.d.ts +18 -0
  51. package/dist/esm/experiments/instrumention.d.ts.map +1 -0
  52. package/dist/esm/experiments/instrumention.js +34 -0
  53. package/dist/esm/experiments/instrumention.js.map +1 -0
  54. package/dist/esm/experiments/runExperiment.d.ts +24 -21
  55. package/dist/esm/experiments/runExperiment.d.ts.map +1 -1
  56. package/dist/esm/experiments/runExperiment.js +221 -108
  57. package/dist/esm/experiments/runExperiment.js.map +1 -1
  58. package/dist/esm/schemas/llm/anthropic/converters.d.ts +28 -28
  59. package/dist/esm/schemas/llm/anthropic/messagePartSchemas.d.ts +8 -8
  60. package/dist/esm/schemas/llm/anthropic/messageSchemas.d.ts +24 -24
  61. package/dist/esm/schemas/llm/anthropic/toolCallSchemas.d.ts +8 -8
  62. package/dist/esm/schemas/llm/constants.d.ts +6 -6
  63. package/dist/esm/schemas/llm/converters.d.ts +24 -24
  64. package/dist/esm/schemas/llm/openai/converters.d.ts +6 -6
  65. package/dist/esm/schemas/llm/schemas.d.ts +22 -22
  66. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  67. package/dist/esm/types/datasets.d.ts +33 -8
  68. package/dist/esm/types/datasets.d.ts.map +1 -1
  69. package/dist/esm/types/experiments.d.ts +17 -4
  70. package/dist/esm/types/experiments.d.ts.map +1 -1
  71. package/dist/esm/utils/ensureString.d.ts +8 -0
  72. package/dist/esm/utils/ensureString.d.ts.map +1 -0
  73. package/dist/esm/utils/ensureString.js +14 -0
  74. package/dist/esm/utils/ensureString.js.map +1 -0
  75. package/dist/esm/utils/objectAsAttributes.d.ts +3 -0
  76. package/dist/esm/utils/objectAsAttributes.d.ts.map +1 -0
  77. package/dist/esm/utils/objectAsAttributes.js +4 -0
  78. package/dist/esm/utils/objectAsAttributes.js.map +1 -0
  79. package/dist/src/client.d.ts +13 -1
  80. package/dist/src/client.d.ts.map +1 -1
  81. package/dist/src/client.js +1 -1
  82. package/dist/src/client.js.map +1 -1
  83. package/dist/src/datasets/appendDatasetExamples.d.ts +21 -0
  84. package/dist/src/datasets/appendDatasetExamples.d.ts.map +1 -0
  85. package/dist/src/datasets/appendDatasetExamples.js +50 -0
  86. package/dist/src/datasets/appendDatasetExamples.js.map +1 -0
  87. package/dist/src/datasets/createDataset.d.ts +25 -0
  88. package/dist/src/datasets/createDataset.d.ts.map +1 -0
  89. package/dist/src/datasets/createDataset.js +52 -0
  90. package/dist/src/datasets/createDataset.js.map +1 -0
  91. package/dist/src/datasets/getDataset.d.ts +10 -0
  92. package/dist/src/datasets/getDataset.d.ts.map +1 -0
  93. package/dist/src/datasets/getDataset.js +29 -0
  94. package/dist/src/datasets/getDataset.js.map +1 -0
  95. package/dist/src/datasets/getDatasetExamples.d.ts +10 -0
  96. package/dist/src/datasets/getDatasetExamples.d.ts.map +1 -0
  97. package/dist/src/datasets/getDatasetExamples.js +40 -0
  98. package/dist/src/datasets/getDatasetExamples.js.map +1 -0
  99. package/dist/src/datasets/getDatasetInfo.d.ts +11 -0
  100. package/dist/src/datasets/getDatasetInfo.d.ts.map +1 -0
  101. package/dist/src/datasets/getDatasetInfo.js +43 -0
  102. package/dist/src/datasets/getDatasetInfo.js.map +1 -0
  103. package/dist/src/datasets/index.d.ts +7 -0
  104. package/dist/src/datasets/index.d.ts.map +1 -0
  105. package/dist/src/datasets/index.js +23 -0
  106. package/dist/src/datasets/index.js.map +1 -0
  107. package/dist/src/datasets/listDatasets.d.ts +23 -0
  108. package/dist/src/datasets/listDatasets.d.ts.map +1 -0
  109. package/dist/src/datasets/listDatasets.js +40 -0
  110. package/dist/src/datasets/listDatasets.js.map +1 -0
  111. package/dist/src/experiments/getExperiment.d.ts +14 -0
  112. package/dist/src/experiments/getExperiment.d.ts.map +1 -0
  113. package/dist/src/experiments/getExperiment.js +36 -0
  114. package/dist/src/experiments/getExperiment.js.map +1 -0
  115. package/dist/src/experiments/getExperimentInfo.d.ts +13 -0
  116. package/dist/src/experiments/getExperimentInfo.d.ts.map +1 -0
  117. package/dist/src/experiments/getExperimentInfo.js +41 -0
  118. package/dist/src/experiments/getExperimentInfo.js.map +1 -0
  119. package/dist/src/experiments/getExperimentRuns.d.ts +15 -0
  120. package/dist/src/experiments/getExperimentRuns.d.ts.map +1 -0
  121. package/dist/src/experiments/getExperimentRuns.js +50 -0
  122. package/dist/src/experiments/getExperimentRuns.js.map +1 -0
  123. package/dist/src/experiments/index.d.ts +3 -0
  124. package/dist/src/experiments/index.d.ts.map +1 -1
  125. package/dist/src/experiments/index.js +3 -0
  126. package/dist/src/experiments/index.js.map +1 -1
  127. package/dist/src/experiments/instrumention.d.ts +18 -0
  128. package/dist/src/experiments/instrumention.d.ts.map +1 -0
  129. package/dist/src/experiments/instrumention.js +38 -0
  130. package/dist/src/experiments/instrumention.js.map +1 -0
  131. package/dist/src/experiments/runExperiment.d.ts +24 -21
  132. package/dist/src/experiments/runExperiment.d.ts.map +1 -1
  133. package/dist/src/experiments/runExperiment.js +222 -111
  134. package/dist/src/experiments/runExperiment.js.map +1 -1
  135. package/dist/src/schemas/llm/anthropic/converters.d.ts +28 -28
  136. package/dist/src/schemas/llm/anthropic/messagePartSchemas.d.ts +8 -8
  137. package/dist/src/schemas/llm/anthropic/messageSchemas.d.ts +24 -24
  138. package/dist/src/schemas/llm/anthropic/toolCallSchemas.d.ts +8 -8
  139. package/dist/src/schemas/llm/constants.d.ts +6 -6
  140. package/dist/src/schemas/llm/converters.d.ts +24 -24
  141. package/dist/src/schemas/llm/openai/converters.d.ts +6 -6
  142. package/dist/src/schemas/llm/schemas.d.ts +22 -22
  143. package/dist/src/types/datasets.d.ts +33 -8
  144. package/dist/src/types/datasets.d.ts.map +1 -1
  145. package/dist/src/types/experiments.d.ts +17 -4
  146. package/dist/src/types/experiments.d.ts.map +1 -1
  147. package/dist/src/utils/ensureString.d.ts +8 -0
  148. package/dist/src/utils/ensureString.d.ts.map +1 -0
  149. package/dist/src/utils/ensureString.js +18 -0
  150. package/dist/src/utils/ensureString.js.map +1 -0
  151. package/dist/src/utils/objectAsAttributes.d.ts +3 -0
  152. package/dist/src/utils/objectAsAttributes.d.ts.map +1 -0
  153. package/dist/src/utils/objectAsAttributes.js +7 -0
  154. package/dist/src/utils/objectAsAttributes.js.map +1 -0
  155. package/dist/tsconfig.tsbuildinfo +1 -1
  156. package/package.json +13 -1
  157. package/src/client.ts +4 -1
  158. package/src/datasets/appendDatasetExamples.ts +55 -0
  159. package/src/datasets/createDataset.ts +60 -0
  160. package/src/datasets/getDataset.ts +27 -0
  161. package/src/datasets/getDatasetExamples.ts +34 -0
  162. package/src/datasets/getDatasetInfo.ts +34 -0
  163. package/src/datasets/index.ts +6 -0
  164. package/src/datasets/listDatasets.ts +37 -0
  165. package/src/experiments/getExperiment.ts +40 -0
  166. package/src/experiments/getExperimentInfo.ts +39 -0
  167. package/src/experiments/getExperimentRuns.ts +45 -0
  168. package/src/experiments/index.ts +3 -0
  169. package/src/experiments/instrumention.ts +52 -0
  170. package/src/experiments/runExperiment.ts +277 -133
  171. package/src/types/datasets.ts +35 -9
  172. package/src/types/experiments.ts +19 -4
  173. package/src/utils/ensureString.ts +14 -0
  174. package/src/utils/objectAsAttributes.ts +9 -0
  175. package/dist/esm/utils/getDatasetBySelector.d.ts +0 -25
  176. package/dist/esm/utils/getDatasetBySelector.d.ts.map +0 -1
  177. package/dist/esm/utils/getDatasetBySelector.js +0 -37
  178. package/dist/esm/utils/getDatasetBySelector.js.map +0 -1
  179. package/dist/src/utils/getDatasetBySelector.d.ts +0 -25
  180. package/dist/src/utils/getDatasetBySelector.d.ts.map +0 -1
  181. package/dist/src/utils/getDatasetBySelector.js +0 -47
  182. package/dist/src/utils/getDatasetBySelector.js.map +0 -1
  183. package/src/utils/getDatasetBySelector.ts +0 -55
@@ -1,11 +1,32 @@
1
1
  import { queue } from "async";
2
2
  import invariant from "tiny-invariant";
3
3
  import { createClient } from "../client.js";
4
- import { getDatasetBySelector } from "../utils/getDatasetBySelector.js";
4
+ import { getDataset } from "../datasets/getDataset.js";
5
5
  import { pluralize } from "../utils/pluralize.js";
6
6
  import { promisifyResult } from "../utils/promisifyResult.js";
7
+ import { createProvider, createNoOpProvider } from "./instrumention.js";
8
+ import { SpanStatusCode } from "@opentelemetry/api";
9
+ import { MimeType, OpenInferenceSpanKind, SemanticConventions, } from "@arizeai/openinference-semantic-conventions";
10
+ import { ensureString } from "../utils/ensureString.js";
11
+ import { objectAsAttributes } from "../utils/objectAsAttributes.js";
7
12
  /**
8
- * Run an experiment.
13
+ * Runs an experiment using a given set of dataset of examples.
14
+ *
15
+ * An experiment is a user-defined task that runs on each example in a dataset. The results from
16
+ * each experiment can be evaluated using any number of evaluators to measure the behavior of the
17
+ * task. The experiment and evaluation results are stored in the Phoenix database for comparison
18
+ * and analysis.
19
+ *
20
+ * A `task` is either a sync or async function that returns a JSON serializable
21
+ * output. If the `task` is a function of one argument then that argument will be bound to the
22
+ * `input` field of the dataset example. Alternatively, the `task` can be a function of any
23
+ * combination of specific argument names that will be bound to special values:
24
+ *
25
+ * - `input`: The input field of the dataset example
26
+ * - `expected`: The expected or reference output of the dataset example
27
+ * - `reference`: An alias for `expected`
28
+ * - `metadata`: Metadata associated with the dataset example
29
+ * - `example`: The dataset `Example` object with all associated fields
9
30
  *
10
31
  * @example
11
32
  * ```ts
@@ -15,34 +36,34 @@ import { promisifyResult } from "../utils/promisifyResult.js";
15
36
  * dataset: "my-dataset",
16
37
  * task: async (example) => example.input,
17
38
  * evaluators: [
18
- * asEvaluator("my-evaluator", "CODE", async (params) => params.output),
39
+ * asEvaluator({ name: "my-evaluator", kind: "CODE", evaluate: async (params) => params.output }),
19
40
  * ],
20
41
  * });
21
42
  * ```
22
- *
23
- * @experimental This feature is not complete, and will change in the future.
24
43
  */
25
- export async function runExperiment({ experimentName: _experimentName, experimentDescription, experimentMetadata, client: _client, dataset: _dataset, task, evaluators, projectName = "default", logger = console, record = true, concurrency = 5, dryRun = false, }) {
44
+ export async function runExperiment({ experimentName, experimentDescription, experimentMetadata = {}, client: _client, dataset: DatasetSelector, task, evaluators, logger = console, record = true, concurrency = 5, dryRun = false, }) {
45
+ let provider;
26
46
  const isDryRun = typeof dryRun === "number" || dryRun === true;
27
47
  const client = _client ?? createClient();
28
- const dataset = await getDatasetBySelector({ dataset: _dataset, client });
48
+ const dataset = await getDataset({ dataset: DatasetSelector, client });
29
49
  invariant(dataset, `Dataset not found`);
30
50
  invariant(dataset.examples.length > 0, `Dataset has no examples`);
31
51
  const nExamples = typeof dryRun === "number"
32
- ? Math.max(dryRun, dataset.examples.length)
52
+ ? Math.min(dryRun, dataset.examples.length)
33
53
  : dataset.examples.length;
34
- const experimentName = _experimentName ?? `${dataset.name}-${new Date().toISOString()}`;
35
- const experimentParams = {
36
- nExamples,
37
- };
54
+ let projectName = `${dataset.name}-exp-${new Date().toISOString()}`;
55
+ // initialize the tracer into scope
56
+ let taskTracer;
38
57
  let experiment;
39
58
  if (isDryRun) {
40
59
  experiment = {
41
- id: id(),
60
+ id: localId(),
42
61
  datasetId: dataset.id,
43
62
  datasetVersionId: dataset.versionId,
44
63
  projectName,
64
+ metadata: experimentMetadata,
45
65
  };
66
+ taskTracer = createNoOpProvider().getTracer("no-op");
46
67
  }
47
68
  else {
48
69
  const experimentResponse = await client
@@ -61,19 +82,30 @@ export async function runExperiment({ experimentName: _experimentName, experimen
61
82
  })
62
83
  .then((res) => res.data?.data);
63
84
  invariant(experimentResponse, `Failed to create experiment`);
85
+ projectName = experimentResponse.project_name ?? projectName;
64
86
  experiment = {
65
87
  id: experimentResponse.id,
66
- datasetId: dataset.id,
67
- datasetVersionId: dataset.versionId,
88
+ datasetId: experimentResponse.dataset_id,
89
+ datasetVersionId: experimentResponse.dataset_version_id,
68
90
  projectName,
91
+ metadata: experimentResponse.metadata,
69
92
  };
93
+ // Initialize the tracer, now that we have a project name
94
+ const baseUrl = client.config.baseUrl;
95
+ invariant(baseUrl, "Phoenix base URL not found. Please set PHOENIX_HOST or set baseUrl on the client.");
96
+ provider = createProvider({
97
+ projectName,
98
+ baseUrl,
99
+ headers: client.config.headers ?? {},
100
+ });
101
+ taskTracer = provider.getTracer(projectName);
70
102
  }
71
103
  if (!record) {
72
104
  logger.info(`🔧 Running experiment in readonly mode. Results will not be recorded.`);
73
105
  }
74
- logger.info(`🧪 Starting experiment "${experimentName}" on dataset "${dataset.id}" with task "${task.name}" and ${evaluators?.length ?? 0} ${pluralize("evaluator", evaluators?.length ?? 0)} and ${concurrency} concurrent runs`);
106
+ logger.info(`🧪 Starting experiment "${experimentName || `<unnamed>`}" on dataset "${dataset.id}" with task "${task.name}" and ${evaluators?.length ?? 0} ${pluralize("evaluator", evaluators?.length ?? 0)} and ${concurrency} concurrent runs`);
75
107
  const runs = {};
76
- await runTask({
108
+ await runTaskWithExamples({
77
109
  client,
78
110
  experimentId: experiment.id,
79
111
  task,
@@ -85,13 +117,17 @@ export async function runExperiment({ experimentName: _experimentName, experimen
85
117
  concurrency,
86
118
  isDryRun,
87
119
  nExamples,
120
+ tracer: taskTracer,
88
121
  });
89
122
  logger.info(`✅ Task runs completed`);
90
123
  const ranExperiment = {
91
124
  ...experiment,
92
- params: experimentParams,
93
125
  runs,
94
126
  };
127
+ // Shut down the provider so that the experiments run
128
+ if (provider) {
129
+ await provider.shutdown?.();
130
+ }
95
131
  const { evaluationRuns } = await evaluateExperiment({
96
132
  experiment: ranExperiment,
97
133
  evaluators: evaluators ?? [],
@@ -107,60 +143,78 @@ export async function runExperiment({ experimentName: _experimentName, experimen
107
143
  /**
108
144
  * Run a task against n examples in a dataset.
109
145
  */
110
- function runTask({ client, experimentId, task, dataset, onComplete, logger, concurrency = 5, isDryRun, nExamples, }) {
146
+ function runTaskWithExamples({ client, experimentId, task, dataset, onComplete, logger, concurrency = 5, isDryRun, nExamples, tracer, }) {
111
147
  logger.info(`🔧 Running task "${task.name}" on dataset "${dataset.id}"`);
112
148
  const run = async (example) => {
113
- logger.info(`🔧 Running task "${task.name}" on example "${example.id} of dataset "${dataset.id}"`);
114
- const thisRun = {
115
- id: id(),
116
- traceId: null, // TODO: fill this in once we trace experiments
117
- experimentId,
118
- datasetExampleId: example.id,
119
- startTime: new Date(),
120
- endTime: new Date(), // will get replaced with actual end time
121
- output: null,
122
- error: null,
123
- };
124
- try {
125
- const taskOutput = await promisifyResult(task(example));
126
- // TODO: why doesn't run output type match task output type?
127
- thisRun.output =
128
- typeof taskOutput === "string"
129
- ? taskOutput
130
- : JSON.stringify(taskOutput);
131
- }
132
- catch (error) {
133
- thisRun.error = error instanceof Error ? error.message : "Unknown error";
134
- }
135
- thisRun.endTime = new Date();
136
- if (!isDryRun) {
137
- // Log the run to the server
138
- // We log this without awaiting (e.g. best effort)
139
- const res = await client.POST("/v1/experiments/{experiment_id}/runs", {
140
- params: {
141
- path: {
142
- experiment_id: experimentId,
149
+ return tracer.startActiveSpan(`Task: ${task.name}`, async (span) => {
150
+ logger.info(`🔧 Running task "${task.name}" on example "${example.id} of dataset "${dataset.id}"`);
151
+ const traceId = span.spanContext().traceId;
152
+ const thisRun = {
153
+ id: localId(), // initialized with local id, will be replaced with server-assigned id when dry run is false
154
+ traceId,
155
+ experimentId,
156
+ datasetExampleId: example.id,
157
+ startTime: new Date(),
158
+ endTime: new Date(), // will get replaced with actual end time
159
+ output: null,
160
+ error: null,
161
+ };
162
+ try {
163
+ const taskOutput = await promisifyResult(task(example));
164
+ thisRun.output =
165
+ typeof taskOutput === "string"
166
+ ? taskOutput
167
+ : JSON.stringify(taskOutput);
168
+ }
169
+ catch (error) {
170
+ thisRun.error =
171
+ error instanceof Error ? error.message : "Unknown error";
172
+ span.setStatus({ code: SpanStatusCode.ERROR });
173
+ }
174
+ thisRun.endTime = new Date();
175
+ if (!isDryRun) {
176
+ // Log the run to the server
177
+ const res = await client.POST("/v1/experiments/{experiment_id}/runs", {
178
+ params: {
179
+ path: {
180
+ experiment_id: experimentId,
181
+ },
143
182
  },
144
- },
145
- body: {
146
- dataset_example_id: example.id,
147
- output: thisRun.output,
148
- repetition_number: 0,
149
- start_time: thisRun.startTime.toISOString(),
150
- end_time: thisRun.endTime.toISOString(),
151
- trace_id: thisRun.traceId,
152
- error: thisRun.error,
153
- },
154
- });
155
- // replace the local run id with the server-assigned id
156
- thisRun.id = res.data?.data.id ?? thisRun.id;
157
- }
158
- onComplete(thisRun);
159
- return thisRun;
183
+ body: {
184
+ dataset_example_id: example.id,
185
+ output: thisRun.output,
186
+ repetition_number: 0,
187
+ start_time: thisRun.startTime.toISOString(),
188
+ end_time: thisRun.endTime.toISOString(),
189
+ trace_id: thisRun.traceId,
190
+ error: thisRun.error,
191
+ },
192
+ });
193
+ // replace the local run id with the server-assigned id
194
+ thisRun.id = res.data?.data.id ?? thisRun.id;
195
+ const inputMimeType = typeof example.input === "string" ? MimeType.TEXT : MimeType.JSON;
196
+ const outputMimeType = typeof thisRun.output === "string" ? MimeType.TEXT : MimeType.JSON;
197
+ span.setStatus({ code: SpanStatusCode.OK });
198
+ span.setAttributes({
199
+ [SemanticConventions.OPENINFERENCE_SPAN_KIND]: OpenInferenceSpanKind.CHAIN,
200
+ [SemanticConventions.INPUT_MIME_TYPE]: inputMimeType,
201
+ [SemanticConventions.INPUT_VALUE]: ensureString(example.input),
202
+ [SemanticConventions.OUTPUT_MIME_TYPE]: outputMimeType,
203
+ [SemanticConventions.OUTPUT_VALUE]: ensureString(thisRun.output),
204
+ });
205
+ }
206
+ span?.end();
207
+ onComplete(thisRun);
208
+ return thisRun;
209
+ });
160
210
  };
161
211
  const q = queue(run, concurrency);
162
212
  const examplesToUse = dataset.examples.slice(0, nExamples);
163
- examplesToUse.forEach((example) => q.push(example));
213
+ examplesToUse.forEach((example) => q.push(example, (err) => {
214
+ if (err) {
215
+ logger.error(`Error running task "${task.name}" on example "${example.id}": ${err}`);
216
+ }
217
+ }));
164
218
  return q.drain();
165
219
  }
166
220
  /**
@@ -168,14 +222,30 @@ function runTask({ client, experimentId, task, dataset, onComplete, logger, conc
168
222
  *
169
223
  * @experimental This feature is not complete, and will change in the future.
170
224
  */
171
- export async function evaluateExperiment({ experiment, evaluators, client: _client, logger, concurrency = 5, dryRun = false, }) {
225
+ export async function evaluateExperiment({ experiment, evaluators, client: _client, logger = console, concurrency = 5, dryRun = false, }) {
172
226
  const isDryRun = typeof dryRun === "number" || dryRun === true;
227
+ const client = _client ?? createClient();
228
+ const baseUrl = client.config.baseUrl;
229
+ invariant(baseUrl, "Phoenix base URL not found. Please set PHOENIX_HOST or set baseUrl on the client.");
230
+ let provider;
231
+ if (!isDryRun) {
232
+ provider = createProvider({
233
+ projectName: "evaluators",
234
+ baseUrl,
235
+ headers: client.config.headers ?? {},
236
+ });
237
+ }
238
+ else {
239
+ provider = createNoOpProvider();
240
+ }
241
+ const tracer = isDryRun
242
+ ? provider.getTracer("no-op")
243
+ : provider.getTracer("evaluators");
173
244
  const nRuns = typeof dryRun === "number"
174
245
  ? Math.max(dryRun, Object.keys(experiment.runs).length)
175
246
  : Object.keys(experiment.runs).length;
176
- const client = _client ?? createClient();
177
- const dataset = await getDatasetBySelector({
178
- dataset: experiment.datasetId,
247
+ const dataset = await getDataset({
248
+ dataset: { datasetId: experiment.datasetId },
179
249
  client,
180
250
  });
181
251
  invariant(dataset, `Dataset "${experiment.datasetId}" not found`);
@@ -204,35 +274,78 @@ export async function evaluateExperiment({ experiment, evaluators, client: _clie
204
274
  run,
205
275
  })));
206
276
  const evaluatorsQueue = queue(async (evaluatorAndRun) => {
207
- const evalResult = await runEvaluator({
208
- evaluator: evaluatorAndRun.evaluator,
209
- run: evaluatorAndRun.run,
210
- exampleCache: examplesById,
211
- onComplete: onEvaluationComplete,
212
- });
213
- if (!isDryRun) {
214
- logger.info(`📝 Logging evaluation ${evalResult.id}`);
215
- // Log the evaluation to the server
216
- // We log this without awaiting (e.g. best effort)
217
- client.POST("/v1/experiment_evaluations", {
218
- body: {
219
- experiment_run_id: evaluatorAndRun.run.id,
220
- name: evaluatorAndRun.evaluator.name,
221
- annotator_kind: evaluatorAndRun.evaluator.kind,
222
- start_time: evalResult.startTime.toISOString(),
223
- end_time: evalResult.endTime.toISOString(),
224
- result: {
225
- ...evalResult.result,
226
- },
227
- error: evalResult.error,
228
- trace_id: evalResult.traceId,
229
- },
277
+ return tracer.startActiveSpan(`Evaluation: ${evaluatorAndRun.evaluator.name}`, async (span) => {
278
+ const evalResult = await runEvaluator({
279
+ evaluator: evaluatorAndRun.evaluator,
280
+ run: evaluatorAndRun.run,
281
+ exampleCache: examplesById,
282
+ onComplete: onEvaluationComplete,
283
+ logger,
230
284
  });
231
- }
285
+ span.setAttributes({
286
+ [SemanticConventions.OPENINFERENCE_SPAN_KIND]: OpenInferenceSpanKind.EVALUATOR,
287
+ [SemanticConventions.INPUT_MIME_TYPE]: MimeType.JSON,
288
+ [SemanticConventions.INPUT_VALUE]: JSON.stringify({
289
+ input: examplesById[evaluatorAndRun.run.datasetExampleId]?.input,
290
+ output: evaluatorAndRun.run.output,
291
+ expected: examplesById[evaluatorAndRun.run.datasetExampleId]?.output,
292
+ metadata: examplesById[evaluatorAndRun.run.datasetExampleId]?.metadata,
293
+ }),
294
+ [SemanticConventions.OUTPUT_MIME_TYPE]: MimeType.JSON,
295
+ [SemanticConventions.OUTPUT_VALUE]: ensureString(evalResult.result),
296
+ });
297
+ if (evalResult.error) {
298
+ span.setStatus({
299
+ code: SpanStatusCode.ERROR,
300
+ message: evalResult.error,
301
+ });
302
+ }
303
+ else {
304
+ span.setStatus({ code: SpanStatusCode.OK });
305
+ }
306
+ if (evalResult.result) {
307
+ span.setAttributes(objectAsAttributes(evalResult.result));
308
+ }
309
+ evalResult.traceId = span.spanContext().traceId;
310
+ if (!isDryRun) {
311
+ // Log the evaluation to the server
312
+ // We log this without awaiting (e.g. best effort)
313
+ client.POST("/v1/experiment_evaluations", {
314
+ body: {
315
+ experiment_run_id: evaluatorAndRun.run.id,
316
+ name: evaluatorAndRun.evaluator.name,
317
+ annotator_kind: evaluatorAndRun.evaluator.kind,
318
+ start_time: evalResult.startTime.toISOString(),
319
+ end_time: evalResult.endTime.toISOString(),
320
+ result: {
321
+ ...evalResult.result,
322
+ },
323
+ error: evalResult.error,
324
+ trace_id: evalResult.traceId,
325
+ },
326
+ });
327
+ }
328
+ span.end();
329
+ return evalResult;
330
+ });
232
331
  }, concurrency);
233
- evaluatorsAndRuns.forEach((evaluatorAndRun) => evaluatorsQueue.push(evaluatorAndRun));
332
+ if (!evaluatorsAndRuns.length) {
333
+ logger.info(`⛔ No evaluators to run`);
334
+ return {
335
+ ...experiment,
336
+ evaluationRuns: [],
337
+ };
338
+ }
339
+ evaluatorsAndRuns.forEach((evaluatorAndRun) => evaluatorsQueue.push(evaluatorAndRun, (err) => {
340
+ if (err) {
341
+ logger.error(`❌ Error running evaluator "${evaluatorAndRun.evaluator.name}" on run "${evaluatorAndRun.run.id}": ${err}`);
342
+ }
343
+ }));
234
344
  await evaluatorsQueue.drain();
235
345
  logger.info(`✅ Evaluation runs completed`);
346
+ if (provider) {
347
+ await provider.shutdown?.();
348
+ }
236
349
  return {
237
350
  ...experiment,
238
351
  evaluationRuns: Object.values(evaluationRuns),
@@ -243,20 +356,21 @@ export async function evaluateExperiment({ experiment, evaluators, client: _clie
243
356
  *
244
357
  * @experimental This feature is not complete, and will change in the future.
245
358
  */
246
- async function runEvaluator({ evaluator, run, exampleCache, onComplete, }) {
359
+ async function runEvaluator({ evaluator, run, exampleCache, onComplete, logger, }) {
247
360
  const example = exampleCache[run.datasetExampleId];
248
361
  invariant(example, `Example "${run.datasetExampleId}" not found`);
249
362
  const evaluate = async () => {
363
+ logger.info(`🧠 Evaluating run "${run.id}" with evaluator "${evaluator.name}"`);
250
364
  const thisEval = {
251
- id: id(),
252
- traceId: null, // TODO: fill this in once we trace experiments
365
+ id: localId(),
366
+ traceId: null,
253
367
  experimentRunId: run.id,
254
368
  startTime: new Date(),
255
369
  endTime: new Date(), // will get replaced with actual end time
256
370
  name: evaluator.name,
257
371
  result: null,
258
372
  error: null,
259
- annotatorKind: "LLM", // TODO: make configurable via evaluator def
373
+ annotatorKind: evaluator.kind,
260
374
  };
261
375
  try {
262
376
  const result = await evaluator.evaluate({
@@ -266,9 +380,11 @@ async function runEvaluator({ evaluator, run, exampleCache, onComplete, }) {
266
380
  metadata: example.metadata,
267
381
  });
268
382
  thisEval.result = result;
383
+ logger.info(`✅ Evaluator "${evaluator.name}" on run "${run.id}" completed`);
269
384
  }
270
385
  catch (error) {
271
386
  thisEval.error = error instanceof Error ? error.message : "Unknown error";
387
+ logger.error(`❌ Evaluator "${evaluator.name}" on run "${run.id}" failed: ${thisEval.error}`);
272
388
  }
273
389
  thisEval.endTime = new Date();
274
390
  onComplete(thisEval);
@@ -292,17 +408,14 @@ export function asEvaluator({ name, kind, evaluate, }) {
292
408
  evaluate,
293
409
  };
294
410
  }
295
- let _id = 1000;
411
+ let _localIdIndex = 1000;
296
412
  /**
297
- * Generate a unique id.
413
+ * Generate a local id.
298
414
  *
299
- * @deprecated Use id generated by phoenix instead.
300
- * @returns A unique id.
415
+ * @returns A semi-unique id.
301
416
  */
302
- export function id() {
303
- return (() => {
304
- _id++;
305
- return _id.toString();
306
- })();
417
+ function localId() {
418
+ _localIdIndex++;
419
+ return `local_${_localIdIndex}`;
307
420
  }
308
421
  //# sourceMappingURL=runExperiment.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"runExperiment.js","sourceRoot":"","sources":["../../../src/experiments/runExperiment.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runExperiment.js","sourceRoot":"","sources":["../../../src/experiments/runExperiment.ts"],"names":[],"mappings":"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"}
@@ -43,14 +43,14 @@ export declare const anthropicMessagePartToOpenAI: import("zod").ZodEffects<impo
43
43
  input: import("zod").ZodType<import("../../jsonLiteralSchema.js").JSONLiteral, import("zod").ZodTypeDef, import("../../jsonLiteralSchema.js").JSONLiteral>;
44
44
  }, "strip", import("zod").ZodTypeAny, {
45
45
  type: "tool_use";
46
- input: import("../../jsonLiteralSchema.js").JSONLiteral;
47
- id: string;
48
46
  name: string;
47
+ id: string;
48
+ input: import("../../jsonLiteralSchema.js").JSONLiteral;
49
49
  }, {
50
50
  type: "tool_use";
51
- input: import("../../jsonLiteralSchema.js").JSONLiteral;
52
- id: string;
53
51
  name: string;
52
+ id: string;
53
+ input: import("../../jsonLiteralSchema.js").JSONLiteral;
54
54
  }>, import("zod").ZodObject<{
55
55
  type: import("zod").ZodLiteral<"tool_result">;
56
56
  tool_use_id: import("zod").ZodString;
@@ -134,9 +134,9 @@ export declare const anthropicMessagePartToOpenAI: import("zod").ZodEffects<impo
134
134
  };
135
135
  } | null, {
136
136
  type: "tool_use";
137
- input: import("../../jsonLiteralSchema.js").JSONLiteral;
138
- id: string;
139
137
  name: string;
138
+ id: string;
139
+ input: import("../../jsonLiteralSchema.js").JSONLiteral;
140
140
  } | {
141
141
  text: string;
142
142
  type: "text";
@@ -213,14 +213,14 @@ export declare const anthropicMessageToOpenAI: import("zod").ZodEffects<import("
213
213
  input: import("zod").ZodType<import("../../jsonLiteralSchema.js").JSONLiteral, import("zod").ZodTypeDef, import("../../jsonLiteralSchema.js").JSONLiteral>;
214
214
  }, "strip", import("zod").ZodTypeAny, {
215
215
  type: "tool_use";
216
- input: import("../../jsonLiteralSchema.js").JSONLiteral;
217
- id: string;
218
216
  name: string;
217
+ id: string;
218
+ input: import("../../jsonLiteralSchema.js").JSONLiteral;
219
219
  }, {
220
220
  type: "tool_use";
221
- input: import("../../jsonLiteralSchema.js").JSONLiteral;
222
- id: string;
223
221
  name: string;
222
+ id: string;
223
+ input: import("../../jsonLiteralSchema.js").JSONLiteral;
224
224
  }>, import("zod").ZodObject<{
225
225
  type: import("zod").ZodLiteral<"tool_result">;
226
226
  tool_use_id: import("zod").ZodString;
@@ -342,14 +342,14 @@ export declare const anthropicMessageToOpenAI: import("zod").ZodEffects<import("
342
342
  input: import("zod").ZodType<import("../../jsonLiteralSchema.js").JSONLiteral, import("zod").ZodTypeDef, import("../../jsonLiteralSchema.js").JSONLiteral>;
343
343
  }, "strip", import("zod").ZodTypeAny, {
344
344
  type: "tool_use";
345
- input: import("../../jsonLiteralSchema.js").JSONLiteral;
346
- id: string;
347
345
  name: string;
346
+ id: string;
347
+ input: import("../../jsonLiteralSchema.js").JSONLiteral;
348
348
  }, {
349
349
  type: "tool_use";
350
- input: import("../../jsonLiteralSchema.js").JSONLiteral;
351
- id: string;
352
350
  name: string;
351
+ id: string;
352
+ input: import("../../jsonLiteralSchema.js").JSONLiteral;
353
353
  }>, import("zod").ZodObject<{
354
354
  type: import("zod").ZodLiteral<"tool_result">;
355
355
  tool_use_id: import("zod").ZodString;
@@ -471,14 +471,14 @@ export declare const anthropicMessageToOpenAI: import("zod").ZodEffects<import("
471
471
  input: import("zod").ZodType<import("../../jsonLiteralSchema.js").JSONLiteral, import("zod").ZodTypeDef, import("../../jsonLiteralSchema.js").JSONLiteral>;
472
472
  }, "strip", import("zod").ZodTypeAny, {
473
473
  type: "tool_use";
474
- input: import("../../jsonLiteralSchema.js").JSONLiteral;
475
- id: string;
476
474
  name: string;
475
+ id: string;
476
+ input: import("../../jsonLiteralSchema.js").JSONLiteral;
477
477
  }, {
478
478
  type: "tool_use";
479
- input: import("../../jsonLiteralSchema.js").JSONLiteral;
480
- id: string;
481
479
  name: string;
480
+ id: string;
481
+ input: import("../../jsonLiteralSchema.js").JSONLiteral;
482
482
  }>, import("zod").ZodObject<{
483
483
  type: import("zod").ZodLiteral<"tool_result">;
484
484
  tool_use_id: import("zod").ZodString;
@@ -721,14 +721,14 @@ export declare const anthropicMessageToOpenAI: import("zod").ZodEffects<import("
721
721
  input: import("zod").ZodType<import("../../jsonLiteralSchema.js").JSONLiteral, import("zod").ZodTypeDef, import("../../jsonLiteralSchema.js").JSONLiteral>;
722
722
  }, "strip", import("zod").ZodTypeAny, {
723
723
  type: "tool_use";
724
- input: import("../../jsonLiteralSchema.js").JSONLiteral;
725
- id: string;
726
724
  name: string;
725
+ id: string;
726
+ input: import("../../jsonLiteralSchema.js").JSONLiteral;
727
727
  }, {
728
728
  type: "tool_use";
729
- input: import("../../jsonLiteralSchema.js").JSONLiteral;
730
- id: string;
731
729
  name: string;
730
+ id: string;
731
+ input: import("../../jsonLiteralSchema.js").JSONLiteral;
732
732
  }>, import("zod").ZodObject<{
733
733
  type: import("zod").ZodLiteral<"tool_result">;
734
734
  tool_use_id: import("zod").ZodString;
@@ -814,14 +814,14 @@ export declare const anthropicToolCallToOpenAI: import("zod").ZodEffects<import(
814
814
  input: import("zod").ZodType<import("../../jsonLiteralSchema.js").JSONLiteral, import("zod").ZodTypeDef, import("../../jsonLiteralSchema.js").JSONLiteral>;
815
815
  }, "strip", import("zod").ZodTypeAny, {
816
816
  type: "tool_use";
817
- input: import("../../jsonLiteralSchema.js").JSONLiteral;
818
- id: string;
819
817
  name: string;
818
+ id: string;
819
+ input: import("../../jsonLiteralSchema.js").JSONLiteral;
820
820
  }, {
821
821
  type: "tool_use";
822
- input: import("../../jsonLiteralSchema.js").JSONLiteral;
823
- id: string;
824
822
  name: string;
823
+ id: string;
824
+ input: import("../../jsonLiteralSchema.js").JSONLiteral;
825
825
  }>, {
826
826
  function: {
827
827
  name: string;
@@ -833,9 +833,9 @@ export declare const anthropicToolCallToOpenAI: import("zod").ZodEffects<import(
833
833
  id: string;
834
834
  }, {
835
835
  type: "tool_use";
836
- input: import("../../jsonLiteralSchema.js").JSONLiteral;
837
- id: string;
838
836
  name: string;
837
+ id: string;
838
+ input: import("../../jsonLiteralSchema.js").JSONLiteral;
839
839
  }>;
840
840
  /**
841
841
  * Parse incoming object as an Anthropic tool choice and immediately convert to OpenAI format