@arizeai/phoenix-client 6.7.0 → 6.8.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.
Files changed (113) hide show
  1. package/dist/esm/__generated__/api/v1.d.ts +377 -6
  2. package/dist/esm/__generated__/api/v1.d.ts.map +1 -1
  3. package/dist/esm/constants/serverRequirements.d.ts +2 -0
  4. package/dist/esm/constants/serverRequirements.d.ts.map +1 -1
  5. package/dist/esm/constants/serverRequirements.js +15 -0
  6. package/dist/esm/constants/serverRequirements.js.map +1 -1
  7. package/dist/esm/datasets/appendDatasetExamples.d.ts +9 -3
  8. package/dist/esm/datasets/appendDatasetExamples.d.ts.map +1 -1
  9. package/dist/esm/datasets/appendDatasetExamples.js +23 -3
  10. package/dist/esm/datasets/appendDatasetExamples.js.map +1 -1
  11. package/dist/esm/datasets/createDataset.d.ts +4 -1
  12. package/dist/esm/datasets/createDataset.d.ts.map +1 -1
  13. package/dist/esm/datasets/createDataset.js +38 -3
  14. package/dist/esm/datasets/createDataset.js.map +1 -1
  15. package/dist/esm/datasets/getDatasetExamples.d.ts.map +1 -1
  16. package/dist/esm/datasets/getDatasetExamples.js +3 -2
  17. package/dist/esm/datasets/getDatasetExamples.js.map +1 -1
  18. package/dist/esm/datasets/index.d.ts +0 -1
  19. package/dist/esm/datasets/index.d.ts.map +1 -1
  20. package/dist/esm/datasets/index.js +0 -1
  21. package/dist/esm/datasets/index.js.map +1 -1
  22. package/dist/esm/experiments/resumeEvaluation.d.ts.map +1 -1
  23. package/dist/esm/experiments/resumeEvaluation.js +2 -1
  24. package/dist/esm/experiments/resumeEvaluation.js.map +1 -1
  25. package/dist/esm/experiments/resumeExperiment.d.ts.map +1 -1
  26. package/dist/esm/experiments/resumeExperiment.js +3 -2
  27. package/dist/esm/experiments/resumeExperiment.js.map +1 -1
  28. package/dist/esm/experiments/runExperiment.js +1 -1
  29. package/dist/esm/experiments/runExperiment.js.map +1 -1
  30. package/dist/esm/spans/addSpanNote.d.ts +1 -1
  31. package/dist/esm/spans/addSpanNote.js +1 -1
  32. package/dist/esm/traces/addTraceNote.d.ts +43 -0
  33. package/dist/esm/traces/addTraceNote.d.ts.map +1 -0
  34. package/dist/esm/traces/addTraceNote.js +42 -0
  35. package/dist/esm/traces/addTraceNote.js.map +1 -0
  36. package/dist/esm/traces/index.d.ts +1 -0
  37. package/dist/esm/traces/index.d.ts.map +1 -1
  38. package/dist/esm/traces/index.js +1 -0
  39. package/dist/esm/traces/index.js.map +1 -1
  40. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  41. package/dist/esm/types/datasets.d.ts +10 -1
  42. package/dist/esm/types/datasets.d.ts.map +1 -1
  43. package/dist/esm/utils/formatPromptMessages.d.ts.map +1 -1
  44. package/dist/esm/utils/getPromptBySelector.d.ts.map +1 -1
  45. package/dist/src/__generated__/api/v1.d.ts +377 -6
  46. package/dist/src/__generated__/api/v1.d.ts.map +1 -1
  47. package/dist/src/constants/serverRequirements.d.ts +2 -0
  48. package/dist/src/constants/serverRequirements.d.ts.map +1 -1
  49. package/dist/src/constants/serverRequirements.js +16 -1
  50. package/dist/src/constants/serverRequirements.js.map +1 -1
  51. package/dist/src/datasets/appendDatasetExamples.d.ts +9 -3
  52. package/dist/src/datasets/appendDatasetExamples.d.ts.map +1 -1
  53. package/dist/src/datasets/appendDatasetExamples.js +24 -5
  54. package/dist/src/datasets/appendDatasetExamples.js.map +1 -1
  55. package/dist/src/datasets/createDataset.d.ts +4 -1
  56. package/dist/src/datasets/createDataset.d.ts.map +1 -1
  57. package/dist/src/datasets/createDataset.js +42 -5
  58. package/dist/src/datasets/createDataset.js.map +1 -1
  59. package/dist/src/datasets/getDatasetExamples.d.ts.map +1 -1
  60. package/dist/src/datasets/getDatasetExamples.js +15 -1
  61. package/dist/src/datasets/getDatasetExamples.js.map +1 -1
  62. package/dist/src/datasets/index.d.ts +0 -1
  63. package/dist/src/datasets/index.d.ts.map +1 -1
  64. package/dist/src/datasets/index.js +0 -1
  65. package/dist/src/datasets/index.js.map +1 -1
  66. package/dist/src/experiments/resumeEvaluation.d.ts.map +1 -1
  67. package/dist/src/experiments/resumeEvaluation.js +2 -1
  68. package/dist/src/experiments/resumeEvaluation.js.map +1 -1
  69. package/dist/src/experiments/resumeExperiment.d.ts.map +1 -1
  70. package/dist/src/experiments/resumeExperiment.js +3 -2
  71. package/dist/src/experiments/resumeExperiment.js.map +1 -1
  72. package/dist/src/experiments/runExperiment.js +1 -1
  73. package/dist/src/experiments/runExperiment.js.map +1 -1
  74. package/dist/src/spans/addSpanNote.d.ts +1 -1
  75. package/dist/src/spans/addSpanNote.js +1 -1
  76. package/dist/src/traces/addTraceNote.d.ts +43 -0
  77. package/dist/src/traces/addTraceNote.d.ts.map +1 -0
  78. package/dist/src/traces/addTraceNote.js +45 -0
  79. package/dist/src/traces/addTraceNote.js.map +1 -0
  80. package/dist/src/traces/index.d.ts +1 -0
  81. package/dist/src/traces/index.d.ts.map +1 -1
  82. package/dist/src/traces/index.js +1 -0
  83. package/dist/src/traces/index.js.map +1 -1
  84. package/dist/src/types/datasets.d.ts +10 -1
  85. package/dist/src/types/datasets.d.ts.map +1 -1
  86. package/dist/src/utils/formatPromptMessages.d.ts.map +1 -1
  87. package/dist/src/utils/getPromptBySelector.d.ts.map +1 -1
  88. package/dist/tsconfig.tsbuildinfo +1 -1
  89. package/docs/span-annotations.mdx +1 -1
  90. package/docs/spans.mdx +34 -1
  91. package/package.json +1 -1
  92. package/src/__generated__/api/v1.ts +377 -6
  93. package/src/constants/serverRequirements.ts +17 -0
  94. package/src/datasets/appendDatasetExamples.ts +26 -5
  95. package/src/datasets/createDataset.ts +66 -18
  96. package/src/datasets/getDatasetExamples.ts +7 -4
  97. package/src/datasets/index.ts +0 -1
  98. package/src/experiments/resumeEvaluation.ts +2 -1
  99. package/src/experiments/resumeExperiment.ts +3 -2
  100. package/src/experiments/runExperiment.ts +1 -1
  101. package/src/spans/addSpanNote.ts +1 -1
  102. package/src/traces/addTraceNote.ts +71 -0
  103. package/src/traces/index.ts +1 -0
  104. package/src/types/datasets.ts +10 -1
  105. package/dist/esm/datasets/createOrGetDataset.d.ts +0 -18
  106. package/dist/esm/datasets/createOrGetDataset.d.ts.map +0 -1
  107. package/dist/esm/datasets/createOrGetDataset.js +0 -29
  108. package/dist/esm/datasets/createOrGetDataset.js.map +0 -1
  109. package/dist/src/datasets/createOrGetDataset.d.ts +0 -18
  110. package/dist/src/datasets/createOrGetDataset.d.ts.map +0 -1
  111. package/dist/src/datasets/createOrGetDataset.js +0 -32
  112. package/dist/src/datasets/createOrGetDataset.js.map +0 -1
  113. package/src/datasets/createOrGetDataset.ts +0 -40
@@ -1,8 +1,10 @@
1
1
  import invariant from "tiny-invariant";
2
2
 
3
3
  import { createClient } from "../client";
4
+ import { DATASET_UPLOAD_EXAMPLE_IDS } from "../constants/serverRequirements";
4
5
  import type { ClientFn } from "../types/core";
5
6
  import type { DatasetSelector, Example } from "../types/datasets";
7
+ import { ensureServerCapability } from "../utils/serverVersionUtils";
6
8
  import { getDatasetInfo } from "./getDatasetInfo";
7
9
 
8
10
  export type AppendDatasetExamplesParams = ClientFn & {
@@ -18,8 +20,7 @@ export type AppendDatasetExamplesParams = ClientFn & {
18
20
 
19
21
  export type AppendDatasetExamplesResponse = {
20
22
  datasetId: string;
21
- // TODO: respond with the versionId
22
- // versionId: string;
23
+ versionId: string;
23
24
  };
24
25
 
25
26
  /**
@@ -36,19 +37,24 @@ export type AppendDatasetExamplesResponse = {
36
37
  * - `metadata`: Optional metadata for the example
37
38
  * - `splits`: Optional split assignment (string, array of strings, or null)
38
39
  * - `spanId`: Optional OpenTelemetry span ID to link the example back to its source span
40
+ * - `id`: Optional stable ID for the example, used to reference or update it later
39
41
  *
40
- * @returns A promise that resolves to the dataset ID
42
+ * @returns A promise that resolves to the dataset ID and version ID
41
43
  *
42
44
  * @example
43
45
  * ```ts
44
- * // Append examples with span links to an existing dataset
45
- * const { datasetId } = await appendDatasetExamples({
46
+ * const { datasetId, versionId } = await appendDatasetExamples({
46
47
  * dataset: { datasetName: "qa-dataset" },
47
48
  * examples: [
48
49
  * {
49
50
  * input: { question: "What is deep learning?" },
50
51
  * output: { answer: "Deep learning is..." },
51
52
  * spanId: "span123abc" // Links to the source span
53
+ * },
54
+ * {
55
+ * id: "my-stable-id", // Stable ID for referencing this example later
56
+ * input: { question: "What is a transformer?" },
57
+ * output: { answer: "A transformer is..." },
52
58
  * }
53
59
  * ]
54
60
  * });
@@ -73,6 +79,12 @@ export async function appendDatasetExamples({
73
79
  // Only include span_ids in the request if at least one example has a span ID
74
80
  const hasSpanIds = spanIds.some((id) => id !== null);
75
81
 
82
+ // Extract example IDs from examples, preserving null/undefined as null
83
+ const exampleIds = examples.map((example) => example?.id ?? null);
84
+
85
+ // Only include example_ids in the request if at least one example has an ID
86
+ const hasExampleIds = exampleIds.some((id) => id !== null);
87
+
76
88
  let datasetName: string;
77
89
  if ("datasetName" in dataset) {
78
90
  datasetName = dataset.datasetName;
@@ -83,6 +95,12 @@ export async function appendDatasetExamples({
83
95
  });
84
96
  datasetName = datasetInfo.name;
85
97
  }
98
+ if (hasExampleIds) {
99
+ await ensureServerCapability({
100
+ client,
101
+ requirement: DATASET_UPLOAD_EXAMPLE_IDS,
102
+ });
103
+ }
86
104
  const appendResponse = await client.POST("/v1/datasets/upload", {
87
105
  params: {
88
106
  query: {
@@ -97,11 +115,14 @@ export async function appendDatasetExamples({
97
115
  metadata,
98
116
  splits,
99
117
  ...(hasSpanIds ? { span_ids: spanIds } : {}),
118
+ ...(hasExampleIds ? { example_ids: exampleIds } : {}),
100
119
  },
101
120
  });
102
121
  invariant(appendResponse.data?.data, "Failed to append dataset examples");
103
122
  const datasetId = appendResponse.data.data.dataset_id;
123
+ const versionId = appendResponse.data.data.version_id;
104
124
  return {
105
125
  datasetId,
126
+ versionId,
106
127
  };
107
128
  }
@@ -1,8 +1,10 @@
1
1
  import invariant from "tiny-invariant";
2
2
 
3
3
  import { createClient } from "../client";
4
+ import { DATASET_UPLOAD_EXAMPLE_IDS } from "../constants/serverRequirements";
4
5
  import type { ClientFn } from "../types/core";
5
6
  import type { Example } from "../types/datasets";
7
+ import { ensureServerCapability } from "../utils/serverVersionUtils";
6
8
 
7
9
  export type CreateDatasetParams = ClientFn & {
8
10
  /**
@@ -24,7 +26,10 @@ export type CreateDatasetResponse = {
24
26
  };
25
27
 
26
28
  /**
27
- * Create a new dataset with examples.
29
+ * Create a dataset with the given examples.
30
+ *
31
+ * If a dataset with the same name already exists, it is updated to match the
32
+ * provided examples. Re-running with the same inputs is a no-op.
28
33
  *
29
34
  * @experimental this interface may change in the future
30
35
  *
@@ -82,27 +87,70 @@ export async function createDataset({
82
87
  // Only include span_ids in the request if at least one example has a span ID
83
88
  const hasSpanIds = spanIds.some((id) => id !== null);
84
89
 
85
- const createDatasetResponse = await client.POST("/v1/datasets/upload", {
86
- params: {
87
- query: {
88
- // TODO: parameterize this
89
- sync: true,
90
+ // Extract example IDs from examples, preserving null/undefined as null
91
+ const exampleIds = examples.map((example) => example?.id ?? null);
92
+
93
+ // Only include example_ids in the request if at least one example has an ID
94
+ const hasExampleIds = exampleIds.some((id) => id !== null);
95
+
96
+ const post = (action: "update" | "create") =>
97
+ client.POST("/v1/datasets/upload", {
98
+ params: {
99
+ query: {
100
+ // TODO: parameterize this
101
+ sync: true,
102
+ },
90
103
  },
91
- },
92
- body: {
93
- name,
94
- description,
95
- action: "create",
96
- inputs,
97
- outputs,
98
- metadata,
99
- splits,
100
- ...(hasSpanIds ? { span_ids: spanIds } : {}),
101
- },
102
- });
104
+ body: {
105
+ name,
106
+ description,
107
+ action,
108
+ inputs,
109
+ outputs,
110
+ metadata,
111
+ splits,
112
+ ...(hasSpanIds ? { span_ids: spanIds } : {}),
113
+ ...(hasExampleIds ? { example_ids: exampleIds } : {}),
114
+ },
115
+ });
116
+
117
+ if (hasExampleIds) {
118
+ await ensureServerCapability({
119
+ client,
120
+ requirement: DATASET_UPLOAD_EXAMPLE_IDS,
121
+ });
122
+ }
123
+ let createDatasetResponse = await post("update");
124
+ if (isUnsupportedUpdateActionResponse(createDatasetResponse)) {
125
+ warnUpdateFallback();
126
+ createDatasetResponse = await post("create");
127
+ }
103
128
  invariant(createDatasetResponse.data?.data, "Failed to create dataset");
104
129
  const datasetId = createDatasetResponse.data.data.dataset_id;
105
130
  return {
106
131
  datasetId,
107
132
  };
108
133
  }
134
+
135
+ function isUnsupportedUpdateActionResponse(result: {
136
+ response?: Response;
137
+ error?: unknown;
138
+ }): boolean {
139
+ if (result.response?.status !== 422) return false;
140
+ const body =
141
+ typeof result.error === "string"
142
+ ? result.error
143
+ : JSON.stringify(result.error ?? "");
144
+ return (
145
+ body.includes("Invalid dateset action") ||
146
+ body.includes("Invalid dataset action")
147
+ );
148
+ }
149
+
150
+ function warnUpdateFallback(): void {
151
+ // eslint-disable-next-line no-console
152
+ console.warn(
153
+ "Phoenix server does not support declarative update semantics. " +
154
+ "Upgrade to Phoenix v15 or later."
155
+ );
156
+ }
@@ -51,9 +51,12 @@ export async function getDatasetExamples({
51
51
  const examplesData = response.data.data;
52
52
  return {
53
53
  versionId: examplesData.version_id,
54
- examples: examplesData.examples.map((example) => ({
55
- ...example,
56
- updatedAt: new Date(example.updated_at),
57
- })),
54
+ examples: examplesData.examples.map(
55
+ ({ node_id, updated_at, ...example }) => ({
56
+ ...example,
57
+ nodeId: node_id,
58
+ updatedAt: new Date(updated_at),
59
+ })
60
+ ),
58
61
  };
59
62
  }
@@ -3,4 +3,3 @@ export * from "./getDataset";
3
3
  export * from "./getDatasetExamples";
4
4
  export * from "./appendDatasetExamples";
5
5
  export * from "./getDatasetInfo";
6
- export * from "./createOrGetDataset";
@@ -136,6 +136,7 @@ function buildIncompleteEvaluation(
136
136
  },
137
137
  datasetExample: {
138
138
  id: apiResponse.dataset_example.id,
139
+ nodeId: apiResponse.dataset_example.node_id,
139
140
  input: apiResponse.dataset_example.input,
140
141
  output: apiResponse.dataset_example.output ?? null,
141
142
  metadata: apiResponse.dataset_example.metadata || {},
@@ -728,7 +729,7 @@ async function runSingleEvaluation({
728
729
  ...objectAsAttributes({
729
730
  experiment_id: experimentId,
730
731
  experiment_run_id: experimentRun.id,
731
- dataset_example_id: datasetExample.id,
732
+ dataset_example_id: datasetExample.nodeId,
732
733
  }),
733
734
  });
734
735
 
@@ -132,6 +132,7 @@ function buildExampleFromApiResponse(
132
132
  ): ExampleWithId {
133
133
  return {
134
134
  id: apiExample.id,
135
+ nodeId: apiExample.node_id,
135
136
  input: apiExample.input,
136
137
  output: apiExample.output || null,
137
138
  metadata: apiExample.metadata || {},
@@ -618,7 +619,7 @@ async function recordTaskResult({
618
619
  },
619
620
  },
620
621
  body: {
621
- dataset_example_id: example.id,
622
+ dataset_example_id: example.nodeId,
622
623
  repetition_number: repetitionNumber,
623
624
  output: output as Record<string, unknown>,
624
625
  start_time: startTime.toISOString(),
@@ -694,7 +695,7 @@ async function runSingleTask({
694
695
  [SemanticConventions.INPUT_MIME_TYPE]: MimeType.JSON,
695
696
  ...objectAsAttributes({
696
697
  experiment_id: experimentId,
697
- dataset_example_id: example.id,
698
+ dataset_example_id: example.nodeId,
698
699
  repetition_number: repetitionNumber,
699
700
  }),
700
701
  });
@@ -509,7 +509,7 @@ function runTaskWithExamples({
509
509
  },
510
510
  },
511
511
  body: {
512
- dataset_example_id: example.id,
512
+ dataset_example_id: example.nodeId,
513
513
  output: thisRun.output,
514
514
  repetition_number: repetitionNumber,
515
515
  start_time: thisRun.startTime.toISOString(),
@@ -27,7 +27,7 @@ export interface AddSpanNoteParams extends ClientFn {
27
27
  *
28
28
  * Notes are a special type of annotation that allow multiple entries per span
29
29
  * (unlike regular annotations which are unique by name and identifier).
30
- * Each note gets a unique timestamp-based identifier.
30
+ * Each note gets a unique UUIDv4 identifier.
31
31
  *
32
32
  * @param params - The parameters to add a span note
33
33
  * @returns The ID of the created note annotation
@@ -0,0 +1,71 @@
1
+ import { createClient } from "../client";
2
+ import { ADD_TRACE_NOTE } from "../constants/serverRequirements";
3
+ import type { ClientFn } from "../types/core";
4
+ import { ensureServerCapability } from "../utils/serverVersionUtils";
5
+
6
+ /**
7
+ * Parameters for a single trace note.
8
+ */
9
+ export interface TraceNote {
10
+ /**
11
+ * The OpenTelemetry trace ID (hex format without 0x prefix).
12
+ */
13
+ traceId: string;
14
+ /**
15
+ * The note text to add to the trace.
16
+ */
17
+ note: string;
18
+ }
19
+
20
+ /**
21
+ * Parameters to add a trace note.
22
+ */
23
+ export interface AddTraceNoteParams extends ClientFn {
24
+ traceNote: TraceNote;
25
+ }
26
+
27
+ /**
28
+ * Add a note to a trace.
29
+ *
30
+ * Notes are a special type of annotation that allow multiple entries per trace.
31
+ * Each note gets a unique timestamp-based identifier.
32
+ *
33
+ * @param params - The parameters to add a trace note.
34
+ * @returns The ID of the created note annotation.
35
+ *
36
+ * @example
37
+ * ```ts
38
+ * const result = await addTraceNote({
39
+ * traceNote: {
40
+ * traceId: "abc123",
41
+ * note: "Needs review"
42
+ * }
43
+ * });
44
+ * ```
45
+ */
46
+ export async function addTraceNote({
47
+ client: _client,
48
+ traceNote,
49
+ }: AddTraceNoteParams): Promise<{ id: string }> {
50
+ const client = _client ?? createClient();
51
+ await ensureServerCapability({ client, requirement: ADD_TRACE_NOTE });
52
+
53
+ const { data, error } = await client.POST("/v1/trace_notes", {
54
+ body: {
55
+ data: {
56
+ trace_id: traceNote.traceId.trim(),
57
+ note: traceNote.note,
58
+ },
59
+ },
60
+ });
61
+
62
+ if (error) {
63
+ throw new Error(`Failed to add trace note: ${error}`);
64
+ }
65
+
66
+ if (!data?.data) {
67
+ throw new Error("Failed to add trace note: no data returned");
68
+ }
69
+
70
+ return data.data;
71
+ }
@@ -1 +1,2 @@
1
+ export * from "./addTraceNote";
1
2
  export * from "./getTraces";
@@ -58,12 +58,21 @@ export interface Example {
58
58
  * in the Phoenix UI, enabling traceability from datasets back to traces.
59
59
  */
60
60
  spanId?: string | null;
61
+ /**
62
+ * Optional user-provided ID for this example.
63
+ * If not provided, the server will generate an ID.
64
+ */
65
+ id?: string | null;
61
66
  }
62
67
 
63
68
  /**
64
69
  * An example that has been synced to the server
65
70
  */
66
- export interface ExampleWithId extends Example, Node {
71
+ export interface ExampleWithId extends Example {
72
+ /** The user-provided or server-generated ID for this example. */
73
+ id: string;
74
+ /** Server-generated node ID for this example. */
75
+ nodeId: string;
67
76
  updatedAt: Date;
68
77
  }
69
78
 
@@ -1,18 +0,0 @@
1
- import type { CreateDatasetParams } from "./createDataset.js";
2
- export type CreateOrGetDatasetParams = CreateDatasetParams;
3
- export type CreateOrGetDatasetResponse = {
4
- datasetId: string;
5
- };
6
- /**
7
- * Given the parameters to create a dataset, this function will either
8
- * retrieve an existing dataset by name or create a new one with the provided parameters.
9
- *
10
- * This is useful in cases where you would like to re-run a pipeline like:
11
- * - ensure dataset exists
12
- * - create a task
13
- * - run experiment
14
- * - evaluate experiment
15
- * without having to create a new dataset each time.
16
- */
17
- export declare function createOrGetDataset({ name, description, examples, client: _client, }: CreateOrGetDatasetParams): Promise<CreateOrGetDatasetResponse>;
18
- //# sourceMappingURL=createOrGetDataset.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createOrGetDataset.d.ts","sourceRoot":"","sources":["../../../src/datasets/createOrGetDataset.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAI3D,MAAM,MAAM,wBAAwB,GAAG,mBAAmB,CAAC;AAE3D,MAAM,MAAM,0BAA0B,GAAG;IACvC,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;;;;;;;;;GAUG;AACH,wBAAsB,kBAAkB,CAAC,EACvC,IAAI,EACJ,WAAW,EACX,QAAQ,EACR,MAAM,EAAE,OAAO,GAChB,EAAE,wBAAwB,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAYhE"}
@@ -1,29 +0,0 @@
1
- import { createClient } from "../client.js";
2
- import { createDataset } from "./createDataset.js";
3
- import { getDatasetInfoByName } from "./getDatasetInfoByName.js";
4
- /**
5
- * Given the parameters to create a dataset, this function will either
6
- * retrieve an existing dataset by name or create a new one with the provided parameters.
7
- *
8
- * This is useful in cases where you would like to re-run a pipeline like:
9
- * - ensure dataset exists
10
- * - create a task
11
- * - run experiment
12
- * - evaluate experiment
13
- * without having to create a new dataset each time.
14
- */
15
- export async function createOrGetDataset({ name, description, examples, client: _client, }) {
16
- const client = _client || createClient();
17
- // start by fetching an existing dataset by name, catching any errors that occur
18
- try {
19
- const dataset = await getDatasetInfoByName({ datasetName: name, client });
20
- return {
21
- datasetId: dataset.id,
22
- };
23
- }
24
- catch {
25
- // If the dataset doesn't exist, create it, falling back to the error handling inside createDataset
26
- return await createDataset({ name, description, examples, client });
27
- }
28
- }
29
- //# sourceMappingURL=createOrGetDataset.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createOrGetDataset.js","sourceRoot":"","sources":["../../../src/datasets/createOrGetDataset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAQ9D;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,EACvC,IAAI,EACJ,WAAW,EACX,QAAQ,EACR,MAAM,EAAE,OAAO,GACU;IACzB,MAAM,MAAM,GAAG,OAAO,IAAI,YAAY,EAAE,CAAC;IACzC,gFAAgF;IAChF,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,oBAAoB,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAC1E,OAAO;YACL,SAAS,EAAE,OAAO,CAAC,EAAE;SACtB,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,mGAAmG;QACnG,OAAO,MAAM,aAAa,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IACtE,CAAC;AACH,CAAC"}
@@ -1,18 +0,0 @@
1
- import type { CreateDatasetParams } from "./createDataset";
2
- export type CreateOrGetDatasetParams = CreateDatasetParams;
3
- export type CreateOrGetDatasetResponse = {
4
- datasetId: string;
5
- };
6
- /**
7
- * Given the parameters to create a dataset, this function will either
8
- * retrieve an existing dataset by name or create a new one with the provided parameters.
9
- *
10
- * This is useful in cases where you would like to re-run a pipeline like:
11
- * - ensure dataset exists
12
- * - create a task
13
- * - run experiment
14
- * - evaluate experiment
15
- * without having to create a new dataset each time.
16
- */
17
- export declare function createOrGetDataset({ name, description, examples, client: _client, }: CreateOrGetDatasetParams): Promise<CreateOrGetDatasetResponse>;
18
- //# sourceMappingURL=createOrGetDataset.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createOrGetDataset.d.ts","sourceRoot":"","sources":["../../../src/datasets/createOrGetDataset.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAI3D,MAAM,MAAM,wBAAwB,GAAG,mBAAmB,CAAC;AAE3D,MAAM,MAAM,0BAA0B,GAAG;IACvC,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;;;;;;;;;GAUG;AACH,wBAAsB,kBAAkB,CAAC,EACvC,IAAI,EACJ,WAAW,EACX,QAAQ,EACR,MAAM,EAAE,OAAO,GAChB,EAAE,wBAAwB,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAYhE"}
@@ -1,32 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createOrGetDataset = createOrGetDataset;
4
- const client_1 = require("../client");
5
- const createDataset_1 = require("./createDataset");
6
- const getDatasetInfoByName_1 = require("./getDatasetInfoByName");
7
- /**
8
- * Given the parameters to create a dataset, this function will either
9
- * retrieve an existing dataset by name or create a new one with the provided parameters.
10
- *
11
- * This is useful in cases where you would like to re-run a pipeline like:
12
- * - ensure dataset exists
13
- * - create a task
14
- * - run experiment
15
- * - evaluate experiment
16
- * without having to create a new dataset each time.
17
- */
18
- async function createOrGetDataset({ name, description, examples, client: _client, }) {
19
- const client = _client || (0, client_1.createClient)();
20
- // start by fetching an existing dataset by name, catching any errors that occur
21
- try {
22
- const dataset = await (0, getDatasetInfoByName_1.getDatasetInfoByName)({ datasetName: name, client });
23
- return {
24
- datasetId: dataset.id,
25
- };
26
- }
27
- catch (_a) {
28
- // If the dataset doesn't exist, create it, falling back to the error handling inside createDataset
29
- return await (0, createDataset_1.createDataset)({ name, description, examples, client });
30
- }
31
- }
32
- //# sourceMappingURL=createOrGetDataset.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createOrGetDataset.js","sourceRoot":"","sources":["../../../src/datasets/createOrGetDataset.ts"],"names":[],"mappings":";;AAsBA,gDAiBC;AAvCD,sCAAyC;AAEzC,mDAAgD;AAChD,iEAA8D;AAQ9D;;;;;;;;;;GAUG;AACI,KAAK,UAAU,kBAAkB,CAAC,EACvC,IAAI,EACJ,WAAW,EACX,QAAQ,EACR,MAAM,EAAE,OAAO,GACU;IACzB,MAAM,MAAM,GAAG,OAAO,IAAI,IAAA,qBAAY,GAAE,CAAC;IACzC,gFAAgF;IAChF,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,IAAA,2CAAoB,EAAC,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAC1E,OAAO;YACL,SAAS,EAAE,OAAO,CAAC,EAAE;SACtB,CAAC;IACJ,CAAC;IAAC,WAAM,CAAC;QACP,mGAAmG;QACnG,OAAO,MAAM,IAAA,6BAAa,EAAC,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IACtE,CAAC;AACH,CAAC"}
@@ -1,40 +0,0 @@
1
- import { createClient } from "../client";
2
- import type { CreateDatasetParams } from "./createDataset";
3
- import { createDataset } from "./createDataset";
4
- import { getDatasetInfoByName } from "./getDatasetInfoByName";
5
-
6
- export type CreateOrGetDatasetParams = CreateDatasetParams;
7
-
8
- export type CreateOrGetDatasetResponse = {
9
- datasetId: string;
10
- };
11
-
12
- /**
13
- * Given the parameters to create a dataset, this function will either
14
- * retrieve an existing dataset by name or create a new one with the provided parameters.
15
- *
16
- * This is useful in cases where you would like to re-run a pipeline like:
17
- * - ensure dataset exists
18
- * - create a task
19
- * - run experiment
20
- * - evaluate experiment
21
- * without having to create a new dataset each time.
22
- */
23
- export async function createOrGetDataset({
24
- name,
25
- description,
26
- examples,
27
- client: _client,
28
- }: CreateOrGetDatasetParams): Promise<CreateOrGetDatasetResponse> {
29
- const client = _client || createClient();
30
- // start by fetching an existing dataset by name, catching any errors that occur
31
- try {
32
- const dataset = await getDatasetInfoByName({ datasetName: name, client });
33
- return {
34
- datasetId: dataset.id,
35
- };
36
- } catch {
37
- // If the dataset doesn't exist, create it, falling back to the error handling inside createDataset
38
- return await createDataset({ name, description, examples, client });
39
- }
40
- }