@retab/node 0.0.46 → 0.0.52
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 +8 -215
- package/dist/api/client.d.ts +2 -2
- package/dist/api/client.d.ts.map +1 -1
- package/dist/api/client.js +2 -2
- package/dist/api/documents/client.d.ts +3 -3
- package/dist/api/documents/client.d.ts.map +1 -1
- package/dist/api/documents/client.js +3 -3
- package/dist/api/projects/client.d.ts +15 -0
- package/dist/api/projects/client.d.ts.map +1 -0
- package/dist/api/projects/client.js +43 -0
- package/dist/api/projects/documents/client.d.ts +12 -0
- package/dist/api/projects/documents/client.d.ts.map +1 -0
- package/dist/api/projects/documents/client.js +39 -0
- package/dist/api/projects/iterations/client.d.ts +17 -0
- package/dist/api/projects/iterations/client.d.ts.map +1 -0
- package/dist/api/projects/iterations/client.js +64 -0
- package/dist/client.d.ts +1 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +6 -1
- package/dist/generated_types.d.ts +17837 -40090
- package/dist/generated_types.d.ts.map +1 -1
- package/dist/generated_types.js +309 -979
- package/dist/index.d.ts +7 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/types.d.ts +188 -80
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +22 -1
- package/package.json +6 -9
- package/dist/api/consensus/client.d.ts +0 -7
- package/dist/api/consensus/client.d.ts.map +0 -1
- package/dist/api/consensus/client.js +0 -14
- package/dist/errors.d.ts +0 -34
- package/dist/errors.d.ts.map +0 -1
- package/dist/errors.js +0 -53
- package/dist/resource.d.ts +0 -12
- package/dist/resource.d.ts.map +0 -1
- package/dist/resource.js +0 -19
- package/dist/resources/consensus/completions.d.ts +0 -66
- package/dist/resources/consensus/completions.d.ts.map +0 -1
- package/dist/resources/consensus/completions.js +0 -84
- package/dist/resources/consensus/index.d.ts +0 -72
- package/dist/resources/consensus/index.d.ts.map +0 -1
- package/dist/resources/consensus/index.js +0 -76
- package/dist/resources/consensus/responses.d.ts +0 -69
- package/dist/resources/consensus/responses.d.ts.map +0 -1
- package/dist/resources/consensus/responses.js +0 -99
- package/dist/resources/documents/extractions.d.ts +0 -74
- package/dist/resources/documents/extractions.d.ts.map +0 -1
- package/dist/resources/documents/extractions.js +0 -196
- package/dist/resources/documents/index.d.ts +0 -21
- package/dist/resources/documents/index.d.ts.map +0 -1
- package/dist/resources/documents/index.js +0 -55
- package/dist/resources/evaluations/documents.d.ts +0 -40
- package/dist/resources/evaluations/documents.d.ts.map +0 -1
- package/dist/resources/evaluations/documents.js +0 -123
- package/dist/resources/evaluations/index.d.ts +0 -14
- package/dist/resources/evaluations/index.d.ts.map +0 -1
- package/dist/resources/evaluations/index.js +0 -17
- package/dist/resources/evaluations/iterations.d.ts +0 -50
- package/dist/resources/evaluations/iterations.d.ts.map +0 -1
- package/dist/resources/evaluations/iterations.js +0 -156
- package/dist/resources/files.d.ts +0 -82
- package/dist/resources/files.d.ts.map +0 -1
- package/dist/resources/files.js +0 -150
- package/dist/resources/finetuning.d.ts +0 -105
- package/dist/resources/finetuning.d.ts.map +0 -1
- package/dist/resources/finetuning.js +0 -181
- package/dist/resources/index.d.ts +0 -11
- package/dist/resources/index.d.ts.map +0 -1
- package/dist/resources/index.js +0 -10
- package/dist/resources/models.d.ts +0 -57
- package/dist/resources/models.d.ts.map +0 -1
- package/dist/resources/models.js +0 -72
- package/dist/resources/processors/automations/endpoints.d.ts +0 -90
- package/dist/resources/processors/automations/endpoints.d.ts.map +0 -1
- package/dist/resources/processors/automations/endpoints.js +0 -145
- package/dist/resources/processors/automations/index.d.ts +0 -7
- package/dist/resources/processors/automations/index.d.ts.map +0 -1
- package/dist/resources/processors/automations/index.js +0 -6
- package/dist/resources/processors/automations/links.d.ts +0 -90
- package/dist/resources/processors/automations/links.d.ts.map +0 -1
- package/dist/resources/processors/automations/links.js +0 -149
- package/dist/resources/processors/automations/logs.d.ts +0 -35
- package/dist/resources/processors/automations/logs.d.ts.map +0 -1
- package/dist/resources/processors/automations/logs.js +0 -60
- package/dist/resources/processors/automations/mailboxes.d.ts +0 -102
- package/dist/resources/processors/automations/mailboxes.d.ts.map +0 -1
- package/dist/resources/processors/automations/mailboxes.js +0 -157
- package/dist/resources/processors/automations/outlook.d.ts +0 -114
- package/dist/resources/processors/automations/outlook.d.ts.map +0 -1
- package/dist/resources/processors/automations/outlook.js +0 -170
- package/dist/resources/processors/automations/tests.d.ts +0 -58
- package/dist/resources/processors/automations/tests.d.ts.map +0 -1
- package/dist/resources/processors/automations/tests.js +0 -90
- package/dist/resources/processors/index.d.ts +0 -303
- package/dist/resources/processors/index.d.ts.map +0 -1
- package/dist/resources/processors/index.js +0 -261
- package/dist/resources/schemas.d.ts +0 -63
- package/dist/resources/schemas.d.ts.map +0 -1
- package/dist/resources/schemas.js +0 -183
- package/dist/resources/secrets/external_api_keys.d.ts +0 -61
- package/dist/resources/secrets/external_api_keys.d.ts.map +0 -1
- package/dist/resources/secrets/external_api_keys.js +0 -120
- package/dist/resources/secrets/index.d.ts +0 -14
- package/dist/resources/secrets/index.d.ts.map +0 -1
- package/dist/resources/secrets/index.js +0 -17
- package/dist/resources/secrets/webhooks.d.ts +0 -73
- package/dist/resources/secrets/webhooks.d.ts.map +0 -1
- package/dist/resources/secrets/webhooks.js +0 -145
- package/dist/resources/usage.d.ts +0 -223
- package/dist/resources/usage.d.ts.map +0 -1
- package/dist/resources/usage.js +0 -310
- package/dist/types/ai_models.d.ts +0 -389
- package/dist/types/ai_models.d.ts.map +0 -1
- package/dist/types/ai_models.js +0 -145
- package/dist/types/automations/cron.d.ts +0 -28
- package/dist/types/automations/cron.d.ts.map +0 -1
- package/dist/types/automations/cron.js +0 -1
- package/dist/types/automations/endpoints.d.ts +0 -13
- package/dist/types/automations/endpoints.d.ts.map +0 -1
- package/dist/types/automations/endpoints.js +0 -1
- package/dist/types/automations/index.d.ts +0 -7
- package/dist/types/automations/index.d.ts.map +0 -1
- package/dist/types/automations/index.js +0 -6
- package/dist/types/automations/links.d.ts +0 -15
- package/dist/types/automations/links.d.ts.map +0 -1
- package/dist/types/automations/links.js +0 -1
- package/dist/types/automations/mailboxes.d.ts +0 -18
- package/dist/types/automations/mailboxes.d.ts.map +0 -1
- package/dist/types/automations/mailboxes.js +0 -1
- package/dist/types/automations/outlook.d.ts +0 -37
- package/dist/types/automations/outlook.d.ts.map +0 -1
- package/dist/types/automations/outlook.js +0 -1
- package/dist/types/automations/webhooks.d.ts +0 -13
- package/dist/types/automations/webhooks.d.ts.map +0 -1
- package/dist/types/automations/webhooks.js +0 -1
- package/dist/types/browser_canvas.d.ts +0 -4
- package/dist/types/browser_canvas.d.ts.map +0 -1
- package/dist/types/browser_canvas.js +0 -2
- package/dist/types/chat.d.ts +0 -99
- package/dist/types/chat.d.ts.map +0 -1
- package/dist/types/chat.js +0 -20
- package/dist/types/consensus.d.ts +0 -10
- package/dist/types/consensus.d.ts.map +0 -1
- package/dist/types/consensus.js +0 -1
- package/dist/types/db/annotations.d.ts +0 -108
- package/dist/types/db/annotations.d.ts.map +0 -1
- package/dist/types/db/annotations.js +0 -6
- package/dist/types/db/files.d.ts +0 -133
- package/dist/types/db/files.d.ts.map +0 -1
- package/dist/types/db/files.js +0 -5
- package/dist/types/documents/extractions.d.ts +0 -1849
- package/dist/types/documents/extractions.d.ts.map +0 -1
- package/dist/types/documents/extractions.js +0 -211
- package/dist/types/documents/processing.d.ts +0 -249
- package/dist/types/documents/processing.d.ts.map +0 -1
- package/dist/types/documents/processing.js +0 -6
- package/dist/types/evaluations/iterations.d.ts +0 -41
- package/dist/types/evaluations/iterations.d.ts.map +0 -1
- package/dist/types/evaluations/iterations.js +0 -1
- package/dist/types/jobs/base.d.ts +0 -162
- package/dist/types/jobs/base.d.ts.map +0 -1
- package/dist/types/jobs/base.js +0 -6
- package/dist/types/jobs/specialized.d.ts +0 -200
- package/dist/types/jobs/specialized.d.ts.map +0 -1
- package/dist/types/jobs/specialized.js +0 -37
- package/dist/types/logs.d.ts +0 -92
- package/dist/types/logs.d.ts.map +0 -1
- package/dist/types/logs.js +0 -1
- package/dist/types/mime.d.ts +0 -426
- package/dist/types/mime.d.ts.map +0 -1
- package/dist/types/mime.js +0 -48
- package/dist/types/modalities.d.ts +0 -31
- package/dist/types/modalities.d.ts.map +0 -1
- package/dist/types/modalities.js +0 -109
- package/dist/types/pagination.d.ts +0 -5
- package/dist/types/pagination.d.ts.map +0 -1
- package/dist/types/pagination.js +0 -1
- package/dist/types/schemas/enhancement.d.ts +0 -250
- package/dist/types/schemas/enhancement.d.ts.map +0 -1
- package/dist/types/schemas/enhancement.js +0 -6
- package/dist/types/schemas/generate.d.ts +0 -160
- package/dist/types/schemas/generate.d.ts.map +0 -1
- package/dist/types/schemas/generate.js +0 -19
- package/dist/types/schemas/object.d.ts +0 -116
- package/dist/types/schemas/object.d.ts.map +0 -1
- package/dist/types/schemas/object.js +0 -861
- package/dist/types/secrets/external_api_keys.d.ts +0 -27
- package/dist/types/secrets/external_api_keys.d.ts.map +0 -1
- package/dist/types/secrets/external_api_keys.js +0 -11
- package/dist/types/secrets/index.d.ts +0 -2
- package/dist/types/secrets/index.d.ts.map +0 -1
- package/dist/types/secrets/index.js +0 -1
- package/dist/types/standards.d.ts +0 -37
- package/dist/types/standards.d.ts.map +0 -1
- package/dist/types/standards.js +0 -1
- package/dist/utils/ai_models.d.ts +0 -10
- package/dist/utils/ai_models.d.ts.map +0 -1
- package/dist/utils/ai_models.js +0 -183
- package/dist/utils/batch_processing.d.ts +0 -227
- package/dist/utils/batch_processing.d.ts.map +0 -1
- package/dist/utils/batch_processing.js +0 -268
- package/dist/utils/benchmarking.d.ts +0 -115
- package/dist/utils/benchmarking.d.ts.map +0 -1
- package/dist/utils/benchmarking.js +0 -355
- package/dist/utils/chat.d.ts +0 -70
- package/dist/utils/chat.d.ts.map +0 -1
- package/dist/utils/chat.js +0 -79
- package/dist/utils/cost_calculation.d.ts +0 -26
- package/dist/utils/cost_calculation.d.ts.map +0 -1
- package/dist/utils/cost_calculation.js +0 -99
- package/dist/utils/datasets.d.ts +0 -135
- package/dist/utils/datasets.d.ts.map +0 -1
- package/dist/utils/datasets.js +0 -359
- package/dist/utils/display.d.ts +0 -108
- package/dist/utils/display.d.ts.map +0 -1
- package/dist/utils/display.js +0 -244
- package/dist/utils/hash.d.ts +0 -18
- package/dist/utils/hash.d.ts.map +0 -1
- package/dist/utils/hash.js +0 -31
- package/dist/utils/hashing.d.ts +0 -18
- package/dist/utils/hashing.d.ts.map +0 -1
- package/dist/utils/hashing.js +0 -28
- package/dist/utils/index.d.ts +0 -8
- package/dist/utils/index.d.ts.map +0 -1
- package/dist/utils/index.js +0 -10
- package/dist/utils/json_schema.d.ts +0 -18
- package/dist/utils/json_schema.d.ts.map +0 -1
- package/dist/utils/json_schema.js +0 -334
- package/dist/utils/json_schema_utils.d.ts +0 -42
- package/dist/utils/json_schema_utils.d.ts.map +0 -1
- package/dist/utils/json_schema_utils.js +0 -212
- package/dist/utils/jsonl.d.ts +0 -60
- package/dist/utils/jsonl.d.ts.map +0 -1
- package/dist/utils/jsonl.js +0 -259
- package/dist/utils/mime.d.ts +0 -6
- package/dist/utils/mime.d.ts.map +0 -1
- package/dist/utils/mime.js +0 -129
- package/dist/utils/model_cards.d.ts +0 -219
- package/dist/utils/model_cards.d.ts.map +0 -1
- package/dist/utils/model_cards.js +0 -462
- package/dist/utils/prompt_optimization.d.ts +0 -96
- package/dist/utils/prompt_optimization.d.ts.map +0 -1
- package/dist/utils/prompt_optimization.js +0 -275
- package/dist/utils/responses.d.ts +0 -35
- package/dist/utils/responses.d.ts.map +0 -1
- package/dist/utils/responses.js +0 -37
- package/dist/utils/stream.d.ts +0 -13
- package/dist/utils/stream.d.ts.map +0 -1
- package/dist/utils/stream.js +0 -64
- package/dist/utils/stream_context_managers.d.ts +0 -147
- package/dist/utils/stream_context_managers.d.ts.map +0 -1
- package/dist/utils/stream_context_managers.js +0 -380
- package/dist/utils/usage.d.ts +0 -57
- package/dist/utils/usage.d.ts.map +0 -1
- package/dist/utils/usage.js +0 -97
- package/dist/utils/webhook_secrets.d.ts +0 -59
- package/dist/utils/webhook_secrets.d.ts.map +0 -1
- package/dist/utils/webhook_secrets.js +0 -107
- package/dist/utils/zod_to_json_schema.d.ts +0 -11
- package/dist/utils/zod_to_json_schema.d.ts.map +0 -1
- package/dist/utils/zod_to_json_schema.js +0 -123
|
@@ -1,268 +0,0 @@
|
|
|
1
|
-
import fs from 'fs';
|
|
2
|
-
import axios from 'axios';
|
|
3
|
-
import { readJSONL, writeJSONL } from './jsonl.js';
|
|
4
|
-
/**
|
|
5
|
-
* OpenAI Batch API client
|
|
6
|
-
*/
|
|
7
|
-
export class OpenAIBatchProcessor {
|
|
8
|
-
constructor(options) {
|
|
9
|
-
this.apiKey = options.apiKey;
|
|
10
|
-
this.baseUrl = options.baseUrl || 'https://api.openai.com/v1';
|
|
11
|
-
this.timeout = options.timeout || 300000; // 5 minutes
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* Upload file for batch processing
|
|
15
|
-
*/
|
|
16
|
-
async uploadFile(filePath, purpose = 'batch') {
|
|
17
|
-
if (!fs.existsSync(filePath)) {
|
|
18
|
-
throw new Error(`File not found: ${filePath}`);
|
|
19
|
-
}
|
|
20
|
-
const formData = new FormData();
|
|
21
|
-
const fileBuffer = fs.readFileSync(filePath);
|
|
22
|
-
const blob = new Blob([fileBuffer]);
|
|
23
|
-
formData.append('file', blob, filePath.split('/').pop());
|
|
24
|
-
formData.append('purpose', purpose);
|
|
25
|
-
const response = await axios.post(`${this.baseUrl}/files`, formData, {
|
|
26
|
-
headers: {
|
|
27
|
-
'Authorization': `Bearer ${this.apiKey}`,
|
|
28
|
-
'Content-Type': 'multipart/form-data',
|
|
29
|
-
},
|
|
30
|
-
timeout: this.timeout,
|
|
31
|
-
});
|
|
32
|
-
return {
|
|
33
|
-
id: response.data.id,
|
|
34
|
-
filename: response.data.filename,
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Create batch job
|
|
39
|
-
*/
|
|
40
|
-
async createBatch(inputFileId, endpoint, completionWindow = '24h', metadata) {
|
|
41
|
-
const response = await axios.post(`${this.baseUrl}/batches`, {
|
|
42
|
-
input_file_id: inputFileId,
|
|
43
|
-
endpoint,
|
|
44
|
-
completion_window: completionWindow,
|
|
45
|
-
metadata,
|
|
46
|
-
}, {
|
|
47
|
-
headers: {
|
|
48
|
-
'Authorization': `Bearer ${this.apiKey}`,
|
|
49
|
-
'Content-Type': 'application/json',
|
|
50
|
-
},
|
|
51
|
-
timeout: this.timeout,
|
|
52
|
-
});
|
|
53
|
-
return response.data;
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Get batch job status
|
|
57
|
-
*/
|
|
58
|
-
async getBatch(batchId) {
|
|
59
|
-
const response = await axios.get(`${this.baseUrl}/batches/${batchId}`, {
|
|
60
|
-
headers: {
|
|
61
|
-
'Authorization': `Bearer ${this.apiKey}`,
|
|
62
|
-
},
|
|
63
|
-
timeout: this.timeout,
|
|
64
|
-
});
|
|
65
|
-
return response.data;
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* Cancel batch job
|
|
69
|
-
*/
|
|
70
|
-
async cancelBatch(batchId) {
|
|
71
|
-
const response = await axios.post(`${this.baseUrl}/batches/${batchId}/cancel`, {}, {
|
|
72
|
-
headers: {
|
|
73
|
-
'Authorization': `Bearer ${this.apiKey}`,
|
|
74
|
-
'Content-Type': 'application/json',
|
|
75
|
-
},
|
|
76
|
-
timeout: this.timeout,
|
|
77
|
-
});
|
|
78
|
-
return response.data;
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* List batch jobs
|
|
82
|
-
*/
|
|
83
|
-
async listBatches(after, limit = 20) {
|
|
84
|
-
const params = new URLSearchParams();
|
|
85
|
-
if (after)
|
|
86
|
-
params.append('after', after);
|
|
87
|
-
params.append('limit', limit.toString());
|
|
88
|
-
const response = await axios.get(`${this.baseUrl}/batches?${params}`, {
|
|
89
|
-
headers: {
|
|
90
|
-
'Authorization': `Bearer ${this.apiKey}`,
|
|
91
|
-
},
|
|
92
|
-
timeout: this.timeout,
|
|
93
|
-
});
|
|
94
|
-
return response.data;
|
|
95
|
-
}
|
|
96
|
-
/**
|
|
97
|
-
* Download file content
|
|
98
|
-
*/
|
|
99
|
-
async downloadFile(fileId) {
|
|
100
|
-
const response = await axios.get(`${this.baseUrl}/files/${fileId}/content`, {
|
|
101
|
-
headers: {
|
|
102
|
-
'Authorization': `Bearer ${this.apiKey}`,
|
|
103
|
-
},
|
|
104
|
-
timeout: this.timeout,
|
|
105
|
-
});
|
|
106
|
-
return response.data;
|
|
107
|
-
}
|
|
108
|
-
/**
|
|
109
|
-
* Monitor batch job progress
|
|
110
|
-
*/
|
|
111
|
-
async *monitorBatch(batchId, pollInterval = 30000) {
|
|
112
|
-
const startTime = Date.now();
|
|
113
|
-
let lastProgress = 0;
|
|
114
|
-
while (true) {
|
|
115
|
-
const batch = await this.getBatch(batchId);
|
|
116
|
-
const timeElapsed = Date.now() - startTime;
|
|
117
|
-
const progress = {
|
|
118
|
-
total: batch.request_counts.total,
|
|
119
|
-
completed: batch.request_counts.completed,
|
|
120
|
-
failed: batch.request_counts.failed,
|
|
121
|
-
percentage: batch.request_counts.total > 0 ?
|
|
122
|
-
(batch.request_counts.completed / batch.request_counts.total) * 100 : 0,
|
|
123
|
-
};
|
|
124
|
-
// Estimate time remaining
|
|
125
|
-
let estimatedTimeRemaining;
|
|
126
|
-
if (progress.completed > lastProgress && progress.completed > 0) {
|
|
127
|
-
const completionRate = progress.completed / timeElapsed;
|
|
128
|
-
const remaining = progress.total - progress.completed;
|
|
129
|
-
estimatedTimeRemaining = remaining / completionRate;
|
|
130
|
-
}
|
|
131
|
-
yield {
|
|
132
|
-
jobId: batchId,
|
|
133
|
-
status: batch.status,
|
|
134
|
-
progress,
|
|
135
|
-
timeElapsed,
|
|
136
|
-
estimatedTimeRemaining,
|
|
137
|
-
};
|
|
138
|
-
// Break if job is complete
|
|
139
|
-
if (['completed', 'failed', 'cancelled', 'expired'].includes(batch.status)) {
|
|
140
|
-
break;
|
|
141
|
-
}
|
|
142
|
-
lastProgress = progress.completed;
|
|
143
|
-
await new Promise(resolve => setTimeout(resolve, pollInterval));
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
/**
|
|
147
|
-
* Process batch end-to-end
|
|
148
|
-
*/
|
|
149
|
-
async processBatch(requestsFilePath, outputFilePath, endpoint = '/v1/chat/completions', options = {}) {
|
|
150
|
-
const { completionWindow = '24h', metadata, pollInterval = 30000, showProgress = true, } = options;
|
|
151
|
-
console.log('🚀 Starting batch processing...');
|
|
152
|
-
// Upload input file
|
|
153
|
-
console.log('📤 Uploading input file...');
|
|
154
|
-
const uploadResult = await this.uploadFile(requestsFilePath);
|
|
155
|
-
console.log(`✅ File uploaded: ${uploadResult.id}`);
|
|
156
|
-
// Create batch job
|
|
157
|
-
console.log('⚙️ Creating batch job...');
|
|
158
|
-
const batch = await this.createBatch(uploadResult.id, endpoint, completionWindow, metadata);
|
|
159
|
-
console.log(`✅ Batch created: ${batch.id}`);
|
|
160
|
-
// Monitor progress
|
|
161
|
-
if (showProgress) {
|
|
162
|
-
console.log('📊 Monitoring batch progress...');
|
|
163
|
-
for await (const progress of this.monitorBatch(batch.id, pollInterval)) {
|
|
164
|
-
const { percentage, completed, total } = progress.progress;
|
|
165
|
-
const timeStr = `${Math.round(progress.timeElapsed / 1000)}s`;
|
|
166
|
-
const etaStr = progress.estimatedTimeRemaining ?
|
|
167
|
-
` (ETA: ${Math.round(progress.estimatedTimeRemaining / 1000)}s)` : '';
|
|
168
|
-
console.log(` Status: ${progress.status} - ${percentage.toFixed(1)}% (${completed}/${total}) - ${timeStr}${etaStr}`);
|
|
169
|
-
if (['completed', 'failed', 'cancelled', 'expired'].includes(progress.status)) {
|
|
170
|
-
break;
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
// Get final batch status
|
|
175
|
-
const finalBatch = await this.getBatch(batch.id);
|
|
176
|
-
if (finalBatch.status === 'completed' && finalBatch.output_file_id) {
|
|
177
|
-
console.log('📥 Downloading results...');
|
|
178
|
-
const results = await this.downloadFile(finalBatch.output_file_id);
|
|
179
|
-
fs.writeFileSync(outputFilePath, results);
|
|
180
|
-
console.log(`✅ Results saved to: ${outputFilePath}`);
|
|
181
|
-
}
|
|
182
|
-
else {
|
|
183
|
-
console.error(`❌ Batch failed with status: ${finalBatch.status}`);
|
|
184
|
-
if (finalBatch.error_file_id) {
|
|
185
|
-
const errors = await this.downloadFile(finalBatch.error_file_id);
|
|
186
|
-
console.error('Error details:', errors);
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
return finalBatch;
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
/**
|
|
193
|
-
* Utility functions for batch processing
|
|
194
|
-
*/
|
|
195
|
-
export const batchUtils = {
|
|
196
|
-
/**
|
|
197
|
-
* Create batch requests for chat completions
|
|
198
|
-
*/
|
|
199
|
-
createChatCompletionRequests: (messages, model = 'gpt-4o-mini', options = {}) => {
|
|
200
|
-
return messages.map((msg, index) => ({
|
|
201
|
-
custom_id: msg.customId || `request_${index}`,
|
|
202
|
-
method: 'POST',
|
|
203
|
-
url: '/v1/chat/completions',
|
|
204
|
-
body: {
|
|
205
|
-
model,
|
|
206
|
-
messages: msg.messages,
|
|
207
|
-
temperature: options.temperature || 0.0,
|
|
208
|
-
max_tokens: options.maxTokens,
|
|
209
|
-
response_format: options.responseFormat,
|
|
210
|
-
},
|
|
211
|
-
}));
|
|
212
|
-
},
|
|
213
|
-
/**
|
|
214
|
-
* Create batch requests for document extraction
|
|
215
|
-
*/
|
|
216
|
-
createExtractionRequests: (documents, model = 'gpt-4o-mini') => {
|
|
217
|
-
return documents.map((doc, index) => ({
|
|
218
|
-
custom_id: doc.customId || `extraction_${index}`,
|
|
219
|
-
method: 'POST',
|
|
220
|
-
url: '/v1/documents/extractions',
|
|
221
|
-
body: {
|
|
222
|
-
json_schema: doc.schema,
|
|
223
|
-
documents: [doc.document],
|
|
224
|
-
model,
|
|
225
|
-
},
|
|
226
|
-
}));
|
|
227
|
-
},
|
|
228
|
-
/**
|
|
229
|
-
* Save batch requests to JSONL file
|
|
230
|
-
*/
|
|
231
|
-
saveBatchRequests: async (requests, filePath) => {
|
|
232
|
-
await writeJSONL(filePath, requests);
|
|
233
|
-
console.log(`📄 Saved ${requests.length} batch requests to ${filePath}`);
|
|
234
|
-
},
|
|
235
|
-
/**
|
|
236
|
-
* Parse batch results from JSONL file
|
|
237
|
-
*/
|
|
238
|
-
parseBatchResults: async (filePath) => {
|
|
239
|
-
const results = await readJSONL(filePath);
|
|
240
|
-
return results;
|
|
241
|
-
},
|
|
242
|
-
/**
|
|
243
|
-
* Extract successful results from batch responses
|
|
244
|
-
*/
|
|
245
|
-
extractSuccessfulResults: (responses) => {
|
|
246
|
-
return responses
|
|
247
|
-
.filter(response => !response.error && response.response.status_code === 200)
|
|
248
|
-
.map(response => ({
|
|
249
|
-
customId: response.custom_id,
|
|
250
|
-
result: response.response.body,
|
|
251
|
-
}));
|
|
252
|
-
},
|
|
253
|
-
/**
|
|
254
|
-
* Extract failed results from batch responses
|
|
255
|
-
*/
|
|
256
|
-
extractFailedResults: (responses) => {
|
|
257
|
-
return responses
|
|
258
|
-
.filter(response => response.error || response.response.status_code !== 200)
|
|
259
|
-
.map(response => ({
|
|
260
|
-
customId: response.custom_id,
|
|
261
|
-
error: response.error || { code: 'http_error', message: `HTTP ${response.response.status_code}` },
|
|
262
|
-
}));
|
|
263
|
-
},
|
|
264
|
-
};
|
|
265
|
-
export default {
|
|
266
|
-
OpenAIBatchProcessor,
|
|
267
|
-
batchUtils,
|
|
268
|
-
};
|
|
@@ -1,115 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Benchmarking and evaluation utilities for model comparison
|
|
3
|
-
* Equivalent to Python's benchmarking.py
|
|
4
|
-
*/
|
|
5
|
-
export interface EvaluationMetrics {
|
|
6
|
-
accuracy: number;
|
|
7
|
-
precision: number;
|
|
8
|
-
recall: number;
|
|
9
|
-
f1Score: number;
|
|
10
|
-
exactMatch: number;
|
|
11
|
-
levenshteinDistance: number;
|
|
12
|
-
jaccardSimilarity: number;
|
|
13
|
-
hammingDistance: number;
|
|
14
|
-
fieldAccuracy: Record<string, number>;
|
|
15
|
-
completeness: number;
|
|
16
|
-
errorRate: number;
|
|
17
|
-
}
|
|
18
|
-
export interface SingleFileEvalResult {
|
|
19
|
-
filename: string;
|
|
20
|
-
metrics: EvaluationMetrics;
|
|
21
|
-
predictions: any[];
|
|
22
|
-
groundTruths: any[];
|
|
23
|
-
differences: Record<string, any>[];
|
|
24
|
-
executionTime: number;
|
|
25
|
-
}
|
|
26
|
-
export interface BenchmarkResult {
|
|
27
|
-
model: string;
|
|
28
|
-
overallMetrics: EvaluationMetrics;
|
|
29
|
-
fileResults: SingleFileEvalResult[];
|
|
30
|
-
aggregateStats: {
|
|
31
|
-
meanAccuracy: number;
|
|
32
|
-
stdDevAccuracy: number;
|
|
33
|
-
meanF1: number;
|
|
34
|
-
stdDevF1: number;
|
|
35
|
-
totalFiles: number;
|
|
36
|
-
totalPredictions: number;
|
|
37
|
-
};
|
|
38
|
-
executionTime: number;
|
|
39
|
-
}
|
|
40
|
-
export interface DictionaryDifference {
|
|
41
|
-
field: string;
|
|
42
|
-
predicted: any;
|
|
43
|
-
groundTruth: any;
|
|
44
|
-
differenceType: 'missing' | 'extra' | 'value_mismatch' | 'type_mismatch';
|
|
45
|
-
path: string;
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* Calculate Levenshtein distance between two strings
|
|
49
|
-
*/
|
|
50
|
-
export declare function levenshteinDistance(str1: string, str2: string): number;
|
|
51
|
-
/**
|
|
52
|
-
* Calculate Jaccard similarity between two sets
|
|
53
|
-
*/
|
|
54
|
-
export declare function jaccardSimilarity(set1: Set<any>, set2: Set<any>): number;
|
|
55
|
-
/**
|
|
56
|
-
* Calculate Hamming distance between two strings
|
|
57
|
-
*/
|
|
58
|
-
export declare function hammingDistance(str1: string, str2: string): number;
|
|
59
|
-
/**
|
|
60
|
-
* Flatten nested object into dot-notation keys
|
|
61
|
-
*/
|
|
62
|
-
export declare function flattenObject(obj: any, prefix?: string): Record<string, any>;
|
|
63
|
-
/**
|
|
64
|
-
* Compute detailed differences between two dictionaries
|
|
65
|
-
*/
|
|
66
|
-
export declare function computeDictDifference(predicted: any, groundTruth: any, path?: string): DictionaryDifference[];
|
|
67
|
-
/**
|
|
68
|
-
* Aggregate dictionary differences across multiple examples
|
|
69
|
-
*/
|
|
70
|
-
export declare function aggregateDictDifferences(differences: DictionaryDifference[][]): Record<string, {
|
|
71
|
-
count: number;
|
|
72
|
-
percentage: number;
|
|
73
|
-
examples: DictionaryDifference[];
|
|
74
|
-
}>;
|
|
75
|
-
/**
|
|
76
|
-
* Calculate comprehensive evaluation metrics
|
|
77
|
-
*/
|
|
78
|
-
export declare function calculateMetrics(predictions: any[], groundTruths: any[]): EvaluationMetrics;
|
|
79
|
-
/**
|
|
80
|
-
* Single file evaluation class
|
|
81
|
-
*/
|
|
82
|
-
export declare class SingleFileEval {
|
|
83
|
-
private filename;
|
|
84
|
-
private predictions;
|
|
85
|
-
private groundTruths;
|
|
86
|
-
constructor(filename: string, predictions: any[], groundTruths: any[]);
|
|
87
|
-
evaluate(): Promise<SingleFileEvalResult>;
|
|
88
|
-
}
|
|
89
|
-
/**
|
|
90
|
-
* Plot metrics with uncertainty (text-based visualization)
|
|
91
|
-
*/
|
|
92
|
-
export declare function plotMetricsWithUncertainty(results: BenchmarkResult[]): void;
|
|
93
|
-
/**
|
|
94
|
-
* Benchmark multiple models
|
|
95
|
-
*/
|
|
96
|
-
export declare function benchmark(models: string[], testDataPath: string, groundTruthPath: string, evaluationFunction: (model: string, testData: any[]) => Promise<any[]>): Promise<BenchmarkResult[]>;
|
|
97
|
-
/**
|
|
98
|
-
* Save benchmark results to file
|
|
99
|
-
*/
|
|
100
|
-
export declare function saveBenchmarkResults(results: BenchmarkResult[], outputPath: string): Promise<void>;
|
|
101
|
-
declare const _default: {
|
|
102
|
-
SingleFileEval: typeof SingleFileEval;
|
|
103
|
-
calculateMetrics: typeof calculateMetrics;
|
|
104
|
-
computeDictDifference: typeof computeDictDifference;
|
|
105
|
-
aggregateDictDifferences: typeof aggregateDictDifferences;
|
|
106
|
-
levenshteinDistance: typeof levenshteinDistance;
|
|
107
|
-
jaccardSimilarity: typeof jaccardSimilarity;
|
|
108
|
-
hammingDistance: typeof hammingDistance;
|
|
109
|
-
flattenObject: typeof flattenObject;
|
|
110
|
-
plotMetricsWithUncertainty: typeof plotMetricsWithUncertainty;
|
|
111
|
-
benchmark: typeof benchmark;
|
|
112
|
-
saveBenchmarkResults: typeof saveBenchmarkResults;
|
|
113
|
-
};
|
|
114
|
-
export default _default;
|
|
115
|
-
//# sourceMappingURL=benchmarking.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"benchmarking.d.ts","sourceRoot":"","sources":["../../src/utils/benchmarking.ts"],"names":[],"mappings":"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"}
|