judgeval 0.2.1 → 0.2.3

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 (45) hide show
  1. package/dist/cjs/common/logger-instance.js +19 -17
  2. package/dist/cjs/common/logger-instance.js.map +1 -1
  3. package/dist/cjs/common/tracer.js +58 -50
  4. package/dist/cjs/common/tracer.js.map +1 -1
  5. package/dist/cjs/constants.js +6 -4
  6. package/dist/cjs/constants.js.map +1 -1
  7. package/dist/cjs/data/datasets/eval-dataset-client.js +349 -0
  8. package/dist/cjs/data/datasets/eval-dataset-client.js.map +1 -0
  9. package/dist/cjs/data/datasets/eval-dataset.js +405 -0
  10. package/dist/cjs/data/datasets/eval-dataset.js.map +1 -0
  11. package/dist/cjs/data/example.js +22 -1
  12. package/dist/cjs/data/example.js.map +1 -1
  13. package/dist/cjs/e2etests/eval-operations.test.js +282 -0
  14. package/dist/cjs/e2etests/eval-operations.test.js.map +1 -0
  15. package/dist/cjs/e2etests/judgee-traces.test.js +278 -0
  16. package/dist/cjs/e2etests/judgee-traces.test.js.map +1 -0
  17. package/dist/cjs/judgment-client.js +309 -534
  18. package/dist/cjs/judgment-client.js.map +1 -1
  19. package/dist/esm/common/logger-instance.js +19 -17
  20. package/dist/esm/common/logger-instance.js.map +1 -1
  21. package/dist/esm/common/tracer.js +58 -50
  22. package/dist/esm/common/tracer.js.map +1 -1
  23. package/dist/esm/constants.js +5 -3
  24. package/dist/esm/constants.js.map +1 -1
  25. package/dist/esm/data/datasets/eval-dataset-client.js +342 -0
  26. package/dist/esm/data/datasets/eval-dataset-client.js.map +1 -0
  27. package/dist/esm/data/datasets/eval-dataset.js +375 -0
  28. package/dist/esm/data/datasets/eval-dataset.js.map +1 -0
  29. package/dist/esm/data/example.js +22 -1
  30. package/dist/esm/data/example.js.map +1 -1
  31. package/dist/esm/e2etests/eval-operations.test.js +254 -0
  32. package/dist/esm/e2etests/eval-operations.test.js.map +1 -0
  33. package/dist/esm/e2etests/judgee-traces.test.js +253 -0
  34. package/dist/esm/e2etests/judgee-traces.test.js.map +1 -0
  35. package/dist/esm/judgment-client.js +311 -536
  36. package/dist/esm/judgment-client.js.map +1 -1
  37. package/dist/types/common/tracer.d.ts +0 -1
  38. package/dist/types/constants.d.ts +2 -3
  39. package/dist/types/data/datasets/eval-dataset-client.d.ts +39 -0
  40. package/dist/types/data/datasets/eval-dataset.d.ts +45 -0
  41. package/dist/types/data/example.d.ts +24 -12
  42. package/dist/types/e2etests/eval-operations.test.d.ts +5 -0
  43. package/dist/types/e2etests/judgee-traces.test.d.ts +5 -0
  44. package/dist/types/judgment-client.d.ts +3 -25
  45. package/package.json +9 -11
@@ -0,0 +1,349 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.EvalDatasetClient = void 0;
16
+ const example_js_1 = require("../example.js"); // Use Example class
17
+ const eval_dataset_js_1 = require("./eval-dataset.js");
18
+ const axios_1 = __importDefault(require("axios")); // Use axios
19
+ const cli_progress_1 = __importDefault(require("cli-progress")); // Use cli-progress
20
+ const ansi_colors_1 = __importDefault(require("ansi-colors")); // For colored progress bar text
21
+ const logger_instance_js_1 = __importDefault(require("../../common/logger-instance.js")); // Adjust path as needed
22
+ // Import constants (assuming they are correctly defined in constants.ts)
23
+ const constants_js_1 = require("../../constants.js"); // Adjust path as needed
24
+ class EvalDatasetClient {
25
+ constructor(judgmentApiKey, organizationId) {
26
+ if (!judgmentApiKey)
27
+ throw new Error('Judgment API Key is required for EvalDatasetClient.');
28
+ if (!organizationId)
29
+ throw new Error('Organization ID is required for EvalDatasetClient.');
30
+ this.judgmentApiKey = judgmentApiKey;
31
+ this.organizationId = organizationId;
32
+ // Optional: Log initialization if desired
33
+ logger_instance_js_1.default.info('Initialized EvalDatasetClient.');
34
+ }
35
+ createDataset(examples = []) {
36
+ return new eval_dataset_js_1.EvalDataset(examples);
37
+ }
38
+ /**
39
+ * Pushes the dataset to the Judgment platform.
40
+ * @returns True if successful, false otherwise.
41
+ */
42
+ pushDataset(dataset_1, alias_1, projectName_1) {
43
+ return __awaiter(this, arguments, void 0, function* (dataset, alias, projectName, overwrite = false) {
44
+ var _a;
45
+ logger_instance_js_1.default.debug(`Pushing dataset with alias '${alias}' for project '${projectName}' (overwrite=${overwrite})`);
46
+ if (overwrite) {
47
+ logger_instance_js_1.default.warn(`Overwrite enabled for dataset alias '${alias}' in project '${projectName}'`);
48
+ }
49
+ const progressBar = new cli_progress_1.default.SingleBar({
50
+ format: `Pushing ${ansi_colors_1.default.magenta(alias)} to Judgment... | ${ansi_colors_1.default.cyan('{bar}')} | {percentage}% || {status}`,
51
+ barCompleteChar: '\u2588',
52
+ barIncompleteChar: '\u2591',
53
+ hideCursor: true,
54
+ clearOnComplete: false,
55
+ stopOnComplete: true,
56
+ }, cli_progress_1.default.Presets.shades_classic);
57
+ progressBar.start(100, 0, { status: 'Starting...' });
58
+ const content = {
59
+ dataset_alias: alias,
60
+ project_name: projectName,
61
+ examples: dataset.examples.map((e) => e.toJSON()),
62
+ overwrite: overwrite,
63
+ };
64
+ try {
65
+ progressBar.update(30, { status: 'Sending request...' });
66
+ const response = yield axios_1.default.post(constants_js_1.JUDGMENT_DATASETS_PUSH_API_URL, content, {
67
+ headers: this.getAuthHeaders(),
68
+ });
69
+ progressBar.update(80, { status: 'Processing response...' });
70
+ if (response.status >= 200 && response.status < 300) {
71
+ const payload = response.data;
72
+ dataset.alias = (_a = payload === null || payload === void 0 ? void 0 : payload._alias) !== null && _a !== void 0 ? _a : alias;
73
+ dataset.id = payload === null || payload === void 0 ? void 0 : payload._id;
74
+ logger_instance_js_1.default.info(`Successfully pushed dataset with alias '${alias}' to project '${projectName}'`);
75
+ progressBar.update(100, { status: ansi_colors_1.default.green('Done!') });
76
+ return true;
77
+ }
78
+ else {
79
+ logger_instance_js_1.default.error(`Server error during push dataset: ${response.status} ${response.statusText}`);
80
+ progressBar.stop();
81
+ return false;
82
+ }
83
+ }
84
+ catch (error) {
85
+ this.handleApiError(error, 'pushDataset');
86
+ progressBar.stop();
87
+ return false;
88
+ }
89
+ });
90
+ }
91
+ /**
92
+ * Pulls the dataset from the Judgment platform.
93
+ */
94
+ pullDataset(alias, projectName) {
95
+ return __awaiter(this, void 0, void 0, function* () {
96
+ var _a, _b;
97
+ logger_instance_js_1.default.debug(`Pulling dataset with alias '${alias}' from project '${projectName}'`);
98
+ const dataset = this.createDataset(); // Use own createDataset
99
+ const progressBar = new cli_progress_1.default.SingleBar({
100
+ format: `Pulling ${ansi_colors_1.default.magenta(alias)} from Judgment... | ${ansi_colors_1.default.cyan('{bar}')} | {percentage}% || {status}`,
101
+ barCompleteChar: '\u2588',
102
+ barIncompleteChar: '\u2591',
103
+ hideCursor: true,
104
+ clearOnComplete: false,
105
+ stopOnComplete: true,
106
+ }, cli_progress_1.default.Presets.shades_classic);
107
+ progressBar.start(100, 0, { status: 'Starting...' });
108
+ const requestBody = {
109
+ dataset_alias: alias,
110
+ project_name: projectName
111
+ };
112
+ try {
113
+ progressBar.update(30, { status: 'Sending request...' });
114
+ const response = yield axios_1.default.post(constants_js_1.JUDGMENT_DATASETS_PULL_API_URL, requestBody, {
115
+ headers: this.getAuthHeaders()
116
+ });
117
+ progressBar.update(80, { status: 'Processing response...' });
118
+ if (response.status >= 200 && response.status < 300) {
119
+ const payload = response.data;
120
+ const examplesFromApi = (_a = payload === null || payload === void 0 ? void 0 : payload.examples) !== null && _a !== void 0 ? _a : [];
121
+ // Map API response (assuming snake_case based on Python) to ExampleOptions
122
+ dataset.examples = examplesFromApi.map((e_api) => {
123
+ const options = {
124
+ input: e_api.input,
125
+ actualOutput: e_api.actual_output,
126
+ expectedOutput: e_api.expected_output,
127
+ context: e_api.context,
128
+ retrievalContext: e_api.retrieval_context,
129
+ additionalMetadata: e_api.additional_metadata,
130
+ toolsCalled: e_api.tools_called,
131
+ expectedTools: e_api.expected_tools,
132
+ exampleId: e_api.example_id,
133
+ exampleIndex: e_api.example_index,
134
+ timestamp: e_api.timestamp,
135
+ example: e_api.example,
136
+ };
137
+ return new example_js_1.Example(options);
138
+ });
139
+ dataset.alias = (_b = payload === null || payload === void 0 ? void 0 : payload.alias) !== null && _b !== void 0 ? _b : alias;
140
+ dataset.id = payload === null || payload === void 0 ? void 0 : payload.id;
141
+ logger_instance_js_1.default.info(`Successfully pulled dataset with alias '${alias}' from project '${projectName}'`);
142
+ progressBar.update(100, { status: ansi_colors_1.default.green('Done!') });
143
+ return dataset;
144
+ }
145
+ else {
146
+ logger_instance_js_1.default.error(`Server error during pull dataset: ${response.status} ${response.statusText}`);
147
+ progressBar.stop();
148
+ throw new Error(`Failed to pull dataset '${alias}': ${response.statusText}`);
149
+ }
150
+ }
151
+ catch (error) {
152
+ this.handleApiError(error, 'pullDataset');
153
+ progressBar.stop();
154
+ throw error;
155
+ }
156
+ });
157
+ }
158
+ /**
159
+ * Deletes the dataset from the Judgment platform.
160
+ * @returns True if successful, false otherwise.
161
+ */
162
+ deleteDataset(alias, projectName) {
163
+ return __awaiter(this, void 0, void 0, function* () {
164
+ logger_instance_js_1.default.debug(`Deleting dataset with alias '${alias}' from project '${projectName}'`);
165
+ const progressBar = new cli_progress_1.default.SingleBar({
166
+ format: `Deleting ${ansi_colors_1.default.magenta(alias)} from Judgment... | ${ansi_colors_1.default.cyan('{bar}')} | {percentage}% || {status}`,
167
+ barCompleteChar: '\u2588',
168
+ barIncompleteChar: '\u2591',
169
+ hideCursor: true,
170
+ clearOnComplete: false,
171
+ stopOnComplete: true,
172
+ }, cli_progress_1.default.Presets.shades_classic);
173
+ progressBar.start(100, 0, { status: 'Starting...' });
174
+ const requestBody = {
175
+ dataset_alias: alias,
176
+ project_name: projectName
177
+ };
178
+ try {
179
+ progressBar.update(30, { status: 'Sending request...' });
180
+ yield axios_1.default.post(constants_js_1.JUDGMENT_DATASETS_DELETE_API_URL, requestBody, {
181
+ headers: this.getAuthHeaders()
182
+ });
183
+ progressBar.update(100, { status: ansi_colors_1.default.green('Done!') });
184
+ logger_instance_js_1.default.info(`Successfully deleted dataset with alias '${alias}' from project '${projectName}'`);
185
+ return true;
186
+ }
187
+ catch (error) {
188
+ this.handleApiError(error, 'deleteDataset');
189
+ progressBar.stop();
190
+ return false;
191
+ }
192
+ });
193
+ }
194
+ /**
195
+ * Pulls dataset statistics for a project from the Judgment platform.
196
+ */
197
+ pullProjectDatasetStats(projectName) {
198
+ return __awaiter(this, void 0, void 0, function* () {
199
+ logger_instance_js_1.default.debug(`Pulling project dataset stats for project '${projectName}'`);
200
+ const progressBar = new cli_progress_1.default.SingleBar({
201
+ format: `Pulling project stats for ${ansi_colors_1.default.magenta(projectName)}... | ${ansi_colors_1.default.cyan('{bar}')} | {percentage}% || {status}`,
202
+ barCompleteChar: '\u2588',
203
+ barIncompleteChar: '\u2591',
204
+ hideCursor: true,
205
+ clearOnComplete: false,
206
+ stopOnComplete: true,
207
+ }, cli_progress_1.default.Presets.shades_classic);
208
+ progressBar.start(100, 0, { status: 'Starting...' });
209
+ const requestBody = {
210
+ project_name: projectName
211
+ };
212
+ try {
213
+ progressBar.update(30, { status: 'Sending request...' });
214
+ const response = yield axios_1.default.post(constants_js_1.JUDGMENT_DATASETS_PROJECT_STATS_API_URL, requestBody, {
215
+ headers: this.getAuthHeaders()
216
+ });
217
+ progressBar.update(80, { status: 'Processing response...' });
218
+ if (response.status >= 200 && response.status < 300) {
219
+ logger_instance_js_1.default.info(`Successfully pulled project stats for '${projectName}'`);
220
+ progressBar.update(100, { status: ansi_colors_1.default.green('Done!') });
221
+ return response.data;
222
+ }
223
+ else {
224
+ logger_instance_js_1.default.error(`Server error pulling project stats: ${response.status} ${response.statusText}`);
225
+ progressBar.stop();
226
+ throw new Error(`Failed to pull project stats for '${projectName}': ${response.statusText}`);
227
+ }
228
+ }
229
+ catch (error) {
230
+ this.handleApiError(error, 'pullProjectDatasetStats');
231
+ progressBar.stop();
232
+ throw error;
233
+ }
234
+ });
235
+ }
236
+ /**
237
+ * Inserts new examples into an existing dataset on the Judgment platform.
238
+ * @returns True if successful, false otherwise.
239
+ */
240
+ insertDataset(alias, examples, projectName) {
241
+ return __awaiter(this, void 0, void 0, function* () {
242
+ logger_instance_js_1.default.debug(`Inserting ${examples.length} examples into dataset '${alias}' for project '${projectName}'`);
243
+ const progressBar = new cli_progress_1.default.SingleBar({
244
+ format: `Inserting examples into ${ansi_colors_1.default.magenta(alias)}... | ${ansi_colors_1.default.cyan('{bar}')} | {percentage}% || {status}`,
245
+ barCompleteChar: '\u2588',
246
+ barIncompleteChar: '\u2591',
247
+ hideCursor: true,
248
+ clearOnComplete: false,
249
+ stopOnComplete: true,
250
+ }, cli_progress_1.default.Presets.shades_classic);
251
+ progressBar.start(100, 0, { status: 'Starting...' });
252
+ const content = {
253
+ dataset_alias: alias,
254
+ examples: examples.map((e) => e.toJSON()),
255
+ project_name: projectName
256
+ };
257
+ try {
258
+ progressBar.update(30, { status: 'Sending request...' });
259
+ yield axios_1.default.post(constants_js_1.JUDGMENT_DATASETS_INSERT_API_URL, content, {
260
+ headers: this.getAuthHeaders()
261
+ });
262
+ progressBar.update(100, { status: ansi_colors_1.default.green('Done!') });
263
+ logger_instance_js_1.default.info(`Successfully inserted examples into dataset '${alias}' in project '${projectName}'`);
264
+ return true;
265
+ }
266
+ catch (error) {
267
+ this.handleApiError(error, 'insertDataset');
268
+ progressBar.stop();
269
+ return false;
270
+ }
271
+ });
272
+ }
273
+ /**
274
+ * Exports a dataset in JSONL format from the Judgment platform.
275
+ * @returns AxiosResponse containing the stream if successful.
276
+ */
277
+ exportJsonl(alias, projectName) {
278
+ return __awaiter(this, void 0, void 0, function* () {
279
+ logger_instance_js_1.default.debug(`Exporting dataset '${alias}' from project '${projectName}' as JSONL`);
280
+ const progressBar = new cli_progress_1.default.SingleBar({
281
+ format: `Exporting ${ansi_colors_1.default.magenta(alias)} as JSONL... | ${ansi_colors_1.default.cyan('{bar}')} | {percentage}% || {status}`,
282
+ barCompleteChar: '\u2588',
283
+ barIncompleteChar: '\u2591',
284
+ hideCursor: true,
285
+ clearOnComplete: false,
286
+ stopOnComplete: true,
287
+ }, cli_progress_1.default.Presets.shades_classic);
288
+ progressBar.start(100, 0, { status: 'Starting...' });
289
+ const requestBody = {
290
+ dataset_alias: alias,
291
+ project_name: projectName,
292
+ };
293
+ try {
294
+ progressBar.update(30, { status: 'Sending request...' });
295
+ const response = yield axios_1.default.post(constants_js_1.JUDGMENT_DATASETS_EXPORT_JSONL_API_URL, requestBody, {
296
+ headers: this.getAuthHeaders(),
297
+ responseType: 'stream',
298
+ });
299
+ progressBar.update(100, { status: ansi_colors_1.default.green('Done!') });
300
+ logger_instance_js_1.default.info(`Successfully initiated export for dataset '${alias}' from project '${projectName}'`);
301
+ return response;
302
+ }
303
+ catch (error) {
304
+ this.handleApiError(error, 'exportJsonl');
305
+ progressBar.stop();
306
+ throw error;
307
+ }
308
+ });
309
+ }
310
+ // --- Helper Methods ---
311
+ getAuthHeaders() {
312
+ return {
313
+ 'Content-Type': 'application/json',
314
+ 'Authorization': `Bearer ${this.judgmentApiKey}`,
315
+ 'X-Organization-Id': this.organizationId,
316
+ };
317
+ }
318
+ handleApiError(error, context) {
319
+ logger_instance_js_1.default.error(`API Error during ${context}:`);
320
+ if (axios_1.default.isAxiosError(error)) {
321
+ const axiosError = error;
322
+ const response = axiosError.response;
323
+ if (response) {
324
+ logger_instance_js_1.default.error(`Status: ${response.status} ${response.statusText}`);
325
+ logger_instance_js_1.default.debug('Response Data:', response.data);
326
+ if (response.status === 422) {
327
+ logger_instance_js_1.default.error('Validation Error Detail:', response.data);
328
+ }
329
+ else if (context === 'exportJsonl' && response.status === 404) {
330
+ logger_instance_js_1.default.error(`Dataset not found.`);
331
+ }
332
+ else if (context.startsWith('delete') && response.status === 404) {
333
+ logger_instance_js_1.default.warn(`${context}: Resource not found, may have already been deleted.`);
334
+ }
335
+ }
336
+ else if (axiosError.request) {
337
+ logger_instance_js_1.default.error('No response received from server.'); // Simplified log call
338
+ }
339
+ else {
340
+ logger_instance_js_1.default.error(`Error setting up API request for ${context}`); // Simplified log call
341
+ }
342
+ }
343
+ else {
344
+ logger_instance_js_1.default.error(`Unexpected error during ${context}`); // Simplified log call
345
+ }
346
+ }
347
+ }
348
+ exports.EvalDatasetClient = EvalDatasetClient;
349
+ //# sourceMappingURL=eval-dataset-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eval-dataset-client.js","sourceRoot":"","sources":["../../../../src/data/datasets/eval-dataset-client.ts"],"names":[],"mappings":"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"}