@inductiv/node-red-openai-api 0.3.8 → 0.4.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.
package/lib.js CHANGED
@@ -1,788 +1,766 @@
1
- var OpenaiApi = (function () {
1
+ let OpenaiApi = (function () {
2
2
  "use strict";
3
3
 
4
- const axios = require("axios");
5
- const FormData = require("form-data"); // Only if you handle form data
4
+ const fs = require("fs");
5
+ const OpenAI = require("openai").OpenAI;
6
6
 
7
7
  class OpenaiApi {
8
- constructor(options) {
9
- this.apiKey =
10
- typeof options === "object"
11
- ? options.apiKey
12
- ? options.apiKey
13
- : {}
14
- : {};
15
- }
8
+ async createChatCompletion(parameters) {
9
+ let node = parameters._node;
10
+ delete parameters._node;
11
+
12
+ const openai = new OpenAI({
13
+ apiKey: parameters.apiKey,
14
+ baseURL: parameters.apiBase,
15
+ organization: parameters.organization,
16
+ });
17
+ const response = await openai.chat.completions.create({
18
+ ...parameters.payload,
19
+ });
16
20
 
17
- setApiKey(value, headerOrQueryName, isQuery) {
18
- this.apiKey.value = value;
19
- this.apiKey.headerOrQueryName = headerOrQueryName;
20
- this.apiKey.isQuery = isQuery;
21
- }
22
- setApiBase(apiBase) {
23
- this.domain = apiBase;
21
+ if (parameters.payload.stream) {
22
+ for await (const chunk of response) {
23
+ node.send(chunk);
24
+ }
25
+ return { code: 0, status: "complete" };
26
+ } else {
27
+ return response;
28
+ }
24
29
  }
25
30
 
26
- setOrganizationIdHeader(organizationId) {
27
- this.organizationId = organizationId;
31
+ async createImage(parameters) {
32
+ const openai = new OpenAI({
33
+ apiKey: parameters.apiKey,
34
+ organization: parameters.organization,
35
+ });
36
+ const response = await openai.images.generate({
37
+ ...parameters.payload,
38
+ });
39
+
40
+ return response;
28
41
  }
29
42
 
30
- setAuthHeaders(headerParams) {
31
- var headers = headerParams ? headerParams : {};
32
- if (!this.apiKey.isQuery && this.apiKey.headerOrQueryName) {
33
- headers[this.apiKey.headerOrQueryName] = `Bearer ${this.apiKey.value}`;
43
+ async createImageEdit(parameters) {
44
+ const openai = new OpenAI({
45
+ apiKey: parameters.apiKey,
46
+ organization: parameters.organization,
47
+ });
48
+
49
+ parameters.payload.image = fs.createReadStream(parameters.payload.image);
50
+ if (parameters.payload.mask) {
51
+ parameters.payload.mask = fs.createReadStream(parameters.payload.mask);
34
52
  }
35
- return headers;
36
- }
37
53
 
38
- setNodeRef(node) {
39
- this.node = node;
54
+ const response = await openai.images.edit({
55
+ ...parameters.payload,
56
+ });
57
+
58
+ return response;
40
59
  }
41
60
 
42
- getFromEndpoint(path, parameters, expectedQueryParams, customHeaders = {}) {
43
- return new Promise((resolve, reject) => {
44
- var domain = this.domain;
45
- var organizationId = this.organizationId;
46
- var queryParameters = {};
47
- var baseHeaders = {};
61
+ async createImageVariation(parameters) {
62
+ const openai = new OpenAI({
63
+ apiKey: parameters.apiKey,
64
+ organization: parameters.organization,
65
+ });
48
66
 
49
- baseHeaders = this.setAuthHeaders(headers);
50
- baseHeaders["Accept"] = "application/json";
51
- if (organizationId) {
52
- customHeaders["OpenAI-Organization"] = organizationId;
53
- }
67
+ parameters.payload.image = fs.createReadStream(parameters.payload.image);
68
+ const response = await openai.images.createVariation({
69
+ ...parameters.payload,
70
+ });
54
71
 
55
- var headers = {
56
- ...baseHeaders,
57
- ...customHeaders,
58
- };
59
-
60
- // Only add query parameters if they are expected and exist
61
- if (expectedQueryParams) {
62
- expectedQueryParams.forEach((param) => {
63
- if (parameters.body[param] !== undefined) {
64
- queryParameters[param] = parameters.body[param];
65
- }
66
- });
67
- }
72
+ return response;
73
+ }
68
74
 
69
- // Merge any additional query parameters from the parameters object
70
- queryParameters = mergeQueryParams(parameters, queryParameters);
71
-
72
- // Axios request configuration
73
- const config = {
74
- method: "GET",
75
- url: domain + path,
76
- headers: headers,
77
- params: queryParameters,
78
- };
79
-
80
- // Axios GET request
81
- axios(config)
82
- .then((response) => {
83
- resolve(response);
84
- })
85
- .catch((error) => {
86
- reject(error);
87
- });
88
- });
89
- }
90
-
91
- postToEndpoint(
92
- path,
93
- parameters,
94
- expectedQueryParams,
95
- contentType,
96
- filePath,
97
- customHeaders = {},
98
- ) {
99
- return new Promise((resolve, reject) => {
100
- const _path = require("path");
101
-
102
- parameters = parameters || {};
103
- var domain = this.domain;
104
- var organizationId = this.organizationId;
105
- var queryParameters = {},
106
- baseHeaders = {},
107
- data;
108
-
109
- baseHeaders = this.setAuthHeaders(baseHeaders);
110
- baseHeaders["Accept"] = "application/json";
111
-
112
- if (organizationId) {
113
- customHeaders["OpenAI-Organization"] = organizationId;
114
- }
75
+ async createEmbedding(parameters) {
76
+ const openai = new OpenAI({
77
+ apiKey: parameters.apiKey,
78
+ organization: parameters.organization,
79
+ });
115
80
 
116
- var headers = {
117
- ...baseHeaders,
118
- ...customHeaders,
119
- };
120
-
121
- // Determine the Content-Type
122
- if (contentType === "form-data") {
123
- var formData = new FormData();
124
-
125
- Object.entries(parameters.body).forEach(([key, value]) => {
126
- if (value instanceof Buffer) {
127
- if (!filePath) {
128
- throw new Error(
129
- "msg.payload must include a `filename` property.",
130
- );
131
- }
132
-
133
- const filename = _path.basename(filePath);
134
- formData.append(key, value, filename);
135
- } else {
136
- if (parameters.body[key] !== undefined) {
137
- formData.append(key, value);
138
- }
139
- }
140
- });
141
-
142
- data = formData;
143
-
144
- let formHeaders = formData.getHeaders();
145
- Object.assign(headers, formHeaders);
146
- } else {
147
- // Handle JSON payloads
148
- headers["Content-Type"] = "application/json";
149
- data = parameters.body || {};
150
- }
81
+ const response = await openai.embeddings.create({
82
+ ...parameters.payload,
83
+ });
151
84
 
152
- // Add expected query parameters to the queryParameters object
153
- if (expectedQueryParams) {
154
- expectedQueryParams.forEach((param) => {
155
- if (parameters.body[param] !== undefined) {
156
- queryParameters[param] = parameters.body[param];
157
- }
158
- });
159
- }
85
+ return response;
86
+ }
160
87
 
161
- // Merge any additional query parameters from the parameters object
162
- queryParameters = mergeQueryParams(parameters.body, queryParameters);
163
-
164
- // Axios request configuration
165
- const config = {
166
- method: "POST",
167
- url: domain + path,
168
- headers: headers,
169
- params: queryParameters,
170
- data: data,
171
- responseType: data.stream === true ? "stream" : "json",
172
- };
173
-
174
- axios(config)
175
- .then((response) => {
176
- if (config.responseType === "stream") {
177
- // Handle the stream response
178
- response.data
179
- .on("data", (chunk) => {
180
- // Convert chunk from Uint8Array to string
181
- const chunkAsString = new TextDecoder().decode(chunk);
182
-
183
- // Emit converted data chunks as Node-RED messages
184
- this.node.send({ payload: chunkAsString });
185
- })
186
- .on("end", () => {
187
- // Handle the end of the stream
188
- resolve({ payload: "Stream ended" });
189
- })
190
- .on("error", (err) => {
191
- // Handle any errors
192
- reject(err);
193
- });
194
- } else {
195
- // Handle non-stream response (e.g., JSON)
196
- resolve(response);
197
- }
198
- })
199
- .catch((error) => {
200
- reject(error);
201
- });
202
- });
203
- }
204
-
205
- deleteFromEndpoint(
206
- path,
207
- parameters,
208
- expectedQueryParams,
209
- customHeaders = {},
210
- ) {
211
- return new Promise((resolve, reject) => {
212
- parameters = parameters || {};
213
- var domain = this.domain;
214
- var organizationId = this.organizationId;
215
- var queryParameters = {},
216
- baseHeaders = {};
217
-
218
- baseHeaders = this.setAuthHeaders(headers);
219
- baseHeaders["Accept"] = "application/json";
220
-
221
- if (organizationId) {
222
- customHeaders["OpenAI-Organization"] = organizationId;
223
- }
88
+ async createSpeech(parameters) {
89
+ const openai = new OpenAI({
90
+ apiKey: parameters.apiKey,
91
+ organization: parameters.organization,
92
+ });
224
93
 
225
- var headers = {
226
- ...baseHeaders,
227
- ...customHeaders,
228
- };
229
-
230
- // Only add query parameters if they are expected and exist
231
- if (expectedQueryParams) {
232
- expectedQueryParams.forEach((param) => {
233
- if (parameters[param] !== undefined) {
234
- queryParameters[param] = parameters.body[param];
235
- }
236
- });
237
- }
94
+ const audio = await openai.audio.speech.create({ ...parameters.payload });
95
+ const response = Buffer.from(await audio.arrayBuffer());
238
96
 
239
- // Merge any additional query parameters from the parameters object
240
- queryParameters = mergeQueryParams(parameters, queryParameters);
97
+ return response;
98
+ }
241
99
 
242
- // Axios request configuration
243
- const config = {
244
- method: "DELETE",
245
- url: domain + path,
246
- headers: headers,
247
- params: queryParameters,
248
- };
100
+ async createTranscription(parameters) {
101
+ const openai = new OpenAI({
102
+ apiKey: parameters.apiKey,
103
+ organization: parameters.organization,
104
+ });
249
105
 
250
- // Axios DELETE request
251
- axios(config)
252
- .then((response) => {
253
- resolve(response);
254
- })
255
- .catch((error) => {
256
- reject(error);
257
- });
106
+ parameters.payload.file = fs.createReadStream(parameters.payload.file);
107
+
108
+ const response = await openai.audio.transcriptions.create({
109
+ ...parameters.payload,
258
110
  });
259
- }
260
111
 
261
- createChatCompletion(parameters) {
262
- const response = this.postToEndpoint("/chat/completions", parameters);
263
112
  return response;
264
113
  }
265
- createImage(parameters) {
266
- return this.postToEndpoint("/images/generations", parameters);
267
- }
268
- createImageEdit(parameters) {
269
- const filename = parameters.body.filename;
270
- delete parameters.body.filename;
271
114
 
272
- return this.postToEndpoint(
273
- "/images/edits",
274
- parameters,
275
- null,
276
- "form-data",
277
- filename,
278
- );
279
- }
280
- createImageVariation(parameters) {
281
- const filename = parameters.body.filename;
282
- delete parameters.body.filename;
115
+ async createTranslation(parameters) {
116
+ const openai = new OpenAI({
117
+ apiKey: parameters.apiKey,
118
+ organization: parameters.organization,
119
+ });
283
120
 
284
- return this.postToEndpoint(
285
- "/images/variations",
286
- parameters,
287
- null,
288
- "form-data",
289
- filename,
290
- );
121
+ parameters.payload.file = fs.createReadStream(parameters.payload.file);
122
+ const response = await openai.audio.translations.create({
123
+ ...parameters.payload,
124
+ });
125
+
126
+ return response;
291
127
  }
292
- createEmbedding(parameters) {
293
- return this.postToEndpoint("/embeddings", parameters);
128
+
129
+ async listFiles(parameters) {
130
+ const openai = new OpenAI({
131
+ apiKey: parameters.apiKey,
132
+ organization: parameters.organization,
133
+ });
134
+
135
+ const list = await openai.files.list({
136
+ ...parameters.payload,
137
+ });
138
+
139
+ let files = [];
140
+ for await (const file of list) {
141
+ files.push(file);
142
+ }
143
+
144
+ return files;
294
145
  }
295
- createSpeech(parameters) {
296
- return this.postToEndpoint("/audio/speech", parameters);
146
+
147
+ async createFile(parameters) {
148
+ const openai = new OpenAI({
149
+ apiKey: parameters.apiKey,
150
+ organization: parameters.organization,
151
+ });
152
+
153
+ parameters.payload.file = fs.createReadStream(parameters.payload.file);
154
+ const response = await openai.files.create({
155
+ ...parameters.payload,
156
+ });
157
+
158
+ return response;
297
159
  }
298
- createTranscription(parameters) {
299
- const filename = parameters.body.filename;
300
- delete parameters.body.filename;
160
+ async deleteFile(parameters) {
161
+ const openai = new OpenAI({
162
+ apiKey: parameters.apiKey,
163
+ organization: parameters.organization,
164
+ });
301
165
 
302
- return this.postToEndpoint(
303
- "/audio/transcriptions",
304
- parameters,
305
- null,
306
- "form-data",
307
- filename,
308
- );
166
+ const response = await openai.files.del({
167
+ ...parameters.payload,
168
+ });
169
+
170
+ return response;
309
171
  }
310
- createTranslation(parameters) {
311
- const filename = parameters.body.filename;
312
- delete parameters.body.filename;
172
+ async retrieveFile(parameters) {
173
+ const openai = new OpenAI({
174
+ apiKey: parameters.apiKey,
175
+ organization: parameters.organization,
176
+ });
313
177
 
314
- return this.postToEndpoint(
315
- "/audio/translations",
316
- parameters,
317
- null,
318
- "form-data",
319
- filename,
320
- );
178
+ const file_id = parameters.payload.file_id;
179
+ delete parameters.payload.file_id;
180
+
181
+ const response = await openai.files.retrieve(file_id, {
182
+ ...parameters.payload,
183
+ });
184
+
185
+ return response;
321
186
  }
322
- listFiles(parameters) {
323
- const expectedQueryParameters = ["purpose"];
324
- return this.getFromEndpoint(
325
- "/files",
326
- parameters,
327
- expectedQueryParameters,
328
- );
187
+ async downloadFile(parameters) {
188
+ const openai = new OpenAI({
189
+ apiKey: parameters.apiKey,
190
+ organization: parameters.organization,
191
+ });
192
+
193
+ const file_id = parameters.payload.file_id;
194
+ delete parameters.payload.file_id;
195
+
196
+ const response = await openai.files.retrieveContent(file_id, {
197
+ ...parameters.payload,
198
+ });
199
+
200
+ return response;
329
201
  }
330
- createFile(parameters) {
331
- let filename;
202
+ async createFineTuningJob(parameters) {
203
+ const openai = new OpenAI({
204
+ apiKey: parameters.apiKey,
205
+ organization: parameters.organization,
206
+ });
332
207
 
333
- // reference the incoming filename
334
- filename = parameters.body.filename;
335
- delete parameters.body.filename;
208
+ const response = await openai.fineTuning.jobs.create({
209
+ ...parameters.payload,
210
+ });
336
211
 
337
- return this.postToEndpoint(
338
- "/files",
339
- parameters,
340
- null,
341
- "form-data",
342
- filename,
343
- );
212
+ return response;
344
213
  }
345
- deleteFile(parameters) {
346
- const file_id = parameters.body.file_id;
347
- delete parameters.body.file_id;
348
- return this.deleteFromEndpoint(`/files/${file_id}`, parameters);
349
- }
350
- retrieveFile(parameters) {
351
- const file_id = parameters.body.file_id;
352
- delete parameters.body.file_id;
353
- return this.getFromEndpoint(`/files/${file_id}`, parameters);
354
- }
355
- downloadFile(parameters) {
356
- const file_id = parameters.body.file_id;
357
- delete parameters.body.file_id;
358
- return this.getFromEndpoint(`/files/${file_id}/content`, parameters);
359
- }
360
- createFineTuningJob(parameters) {
361
- return this.postToEndpoint("/fine_tuning/jobs", parameters);
362
- }
363
- listPaginatedFineTuningJobs(parameters) {
364
- const expectedQueryParameters = ["after", "limit"];
365
- return this.getFromEndpoint(
366
- "/fine_tuning/jobs",
367
- parameters,
368
- expectedQueryParameters,
369
- );
214
+ async listPaginatedFineTuningJobs(parameters) {
215
+ const openai = new OpenAI({
216
+ apiKey: parameters.apiKey,
217
+ organization: parameters.organization,
218
+ });
219
+
220
+ const list = await openai.fineTuning.jobs.list({
221
+ ...parameters.payload,
222
+ });
223
+
224
+ let response = [];
225
+ for await (const fineTune of list) {
226
+ response.push(fineTune);
227
+ }
228
+
229
+ return response;
370
230
  }
371
- retrieveFineTuningJob(parameters) {
372
- const fine_tuning_job_id = parameters.body.fine_tuning_job_id;
373
- delete parameters.body.fine_tuning_job_id;
374
- return this.getFromEndpoint(
375
- `/fine_tuning/jobs/${fine_tuning_job_id}`,
376
- parameters,
231
+ async retrieveFineTuningJob(parameters) {
232
+ const openai = new OpenAI({
233
+ apiKey: parameters.apiKey,
234
+ organization: parameters.organization,
235
+ });
236
+
237
+ const response = await openai.fineTuning.jobs.retrieve(
238
+ parameters.payload.fine_tuning_job_id,
377
239
  );
240
+
241
+ return response;
378
242
  }
379
- listFineTuningEvents(parameters) {
380
- const expectedQueryParameters = ["after", "limit"];
381
- const fine_tuning_job_id = parameters.body.fine_tuning_job_id;
382
- delete parameters.body.fine_tuning_job_id;
243
+ async listFineTuningEvents(parameters) {
244
+ const openai = new OpenAI({
245
+ apiKey: parameters.apiKey,
246
+ organization: parameters.organization,
247
+ });
383
248
 
384
- return this.getFromEndpoint(
385
- `/fine_tuning/jobs/${fine_tuning_job_id}/events`,
386
- parameters,
387
- expectedQueryParameters,
249
+ let response = [];
250
+ const list = await openai.fineTuning.jobs.listEvents(
251
+ parameters.payload.fine_tuning_job_id,
388
252
  );
253
+ for await (const fineTuneEvent of list) {
254
+ response.push(fineTuneEvent);
255
+ }
256
+ return response;
389
257
  }
390
- cancelFineTuningJob(parameters) {
391
- const fine_tuning_job_id = parameters.body.fine_tuning_job_id;
392
- delete parameters.body.fine_tuning_job_id;
393
- return this.postToEndpoint(
394
- `/fine_tuning/jobs/${fine_tuning_job_id}/cancel`,
395
- parameters,
258
+ async cancelFineTuningJob(parameters) {
259
+ const openai = new OpenAI({
260
+ apiKey: parameters.apiKey,
261
+ organization: parameters.organization,
262
+ });
263
+
264
+ const response = await openai.fineTuning.jobs.cancel(
265
+ parameters.payload.fine_tuning_job_id,
396
266
  );
267
+
268
+ return response;
397
269
  }
398
- listModels(parameters) {
399
- return this.getFromEndpoint("/models", parameters);
400
- }
401
- retrieveModel(parameters) {
402
- const model = parameters.body.model;
403
- delete parameters.body.model;
404
- return this.getFromEndpoint(`/models/${model}`, parameters);
270
+ async listModels(parameters) {
271
+ const openai = new OpenAI({
272
+ apiKey: parameters.apiKey,
273
+ organization: parameters.organization,
274
+ });
275
+
276
+ const response = await openai.models.list();
277
+
278
+ return response.body;
405
279
  }
406
- deleteModel(parameters) {
407
- const model = parameters.body.model;
408
- delete parameters.body.model;
409
- return this.deleteFromEndpoint(`/models/${model}`, parameters);
280
+ async retrieveModel(parameters) {
281
+ const openai = new OpenAI({
282
+ apiKey: parameters.apiKey,
283
+ organization: parameters.organization,
284
+ });
285
+
286
+ const model = parameters.payload.model;
287
+ const response = await openai.models.retrieve(model);
288
+
289
+ return response;
410
290
  }
411
- createModeration(parameters) {
412
- return this.postToEndpoint("/moderations", parameters);
291
+ async deleteModel(parameters) {
292
+ const openai = new OpenAI({
293
+ apiKey: parameters.apiKey,
294
+ organization: parameters.organization,
295
+ });
296
+
297
+ const model = parameters.payload.model;
298
+ const response = await openai.models.del(model);
299
+
300
+ return response;
413
301
  }
414
- listAssistants(parameters) {
415
- const expectedQueryParameters = ["limit", "order", "after", "before"];
416
- const customHeaders = { "OpenAI-Beta": "assistants=v1" };
302
+ async createModeration(parameters) {
303
+ const openai = new OpenAI({
304
+ apiKey: parameters.apiKey,
305
+ organization: parameters.organization,
306
+ });
417
307
 
418
- return this.getFromEndpoint(
419
- "/assistants",
420
- parameters,
421
- expectedQueryParameters,
422
- customHeaders,
423
- );
308
+ const response = await openai.moderations.create(parameters.payload);
309
+ return response;
424
310
  }
425
- createAssistant(parameters) {
426
- var customHeaders = { "OpenAI-Beta": "assistants=v1" };
311
+ async listAssistants(parameters) {
312
+ const openai = new OpenAI({
313
+ apiKey: parameters.apiKey,
314
+ organization: parameters.organization,
315
+ });
427
316
 
428
- return this.postToEndpoint(
429
- "/assistants",
430
- parameters,
431
- null,
432
- null,
433
- null,
434
- customHeaders,
435
- );
317
+ const response = await openai.beta.assistants.list({
318
+ ...parameters.payload,
319
+ });
320
+
321
+ return response.body;
436
322
  }
437
- getAssistant(parameters) {
438
- const assistantId = parameters.body.assistant_id;
439
- const customHeaders = { "OpenAI-Beta": "assistants=v1" };
440
- delete parameters.body.assistant_id;
441
- return this.getFromEndpoint(
442
- `/assistants/${assistantId}`,
443
- parameters,
444
- null,
445
- customHeaders,
446
- );
323
+ async createAssistant(parameters) {
324
+ const openai = new OpenAI({
325
+ apiKey: parameters.apiKey,
326
+ organization: parameters.organization,
327
+ });
328
+
329
+ const response = await openai.beta.assistants.create({
330
+ ...parameters.payload,
331
+ });
332
+
333
+ return response;
447
334
  }
448
- modifyAssistant(parameters) {
449
- const assistant_id = parameters.body.assistant_id;
450
- const customHeaders = { "OpenAI-Beta": "assistants=v1" };
451
- delete parameters.body.assistant_id;
452
- return this.postToEndpoint(
453
- `/assistants/${assistant_id}`,
454
- parameters,
455
- null,
456
- null,
457
- null,
458
- customHeaders,
459
- );
335
+ async getAssistant(parameters) {
336
+ const openai = new OpenAI({
337
+ apiKey: parameters.apiKey,
338
+ organization: parameters.organization,
339
+ });
340
+
341
+ const id = parameters.payload.assistant_id;
342
+ const response = await openai.beta.assistants.retrieve(id);
343
+
344
+ return response;
460
345
  }
461
- deleteAssistant(parameters) {
462
- const assistant_id = parameters.body.assistant_id;
463
- const customHeaders = { "OpenAI-Beta": "assistants=v1" };
464
- delete parameters.body.assistant_id;
465
- return this.deleteFromEndpoint(
466
- `/assistants/${assistant_id}`,
467
- parameters,
468
- null,
469
- customHeaders,
470
- );
346
+ async modifyAssistant(parameters) {
347
+ const openai = new OpenAI({
348
+ apiKey: parameters.apiKey,
349
+ organization: parameters.organization,
350
+ });
351
+
352
+ const id = parameters.payload.assistant_id;
353
+ delete parameters.payload.assistant_id;
354
+
355
+ const response = await openai.beta.assistants.update(id, {
356
+ ...parameters.payload,
357
+ });
358
+
359
+ return response;
471
360
  }
472
- createThread(parameters) {
473
- const customHeaders = { "OpenAI-Beta": "assistants=v1" };
474
- return this.postToEndpoint(
475
- "/threads",
476
- parameters,
477
- null,
478
- null,
479
- null,
480
- customHeaders,
481
- );
361
+ async deleteAssistant(parameters) {
362
+ const openai = new OpenAI({
363
+ apiKey: parameters.apiKey,
364
+ organization: parameters.organization,
365
+ });
366
+
367
+ const id = parameters.payload.assistant_id;
368
+ const response = await openai.beta.assistants.del(id);
369
+
370
+ return response;
482
371
  }
483
- getThread(parameters) {
484
- const threadId = parameters.body.thread_id;
485
- const customHeaders = { "OpenAI-Beta": "assistants=v1" };
486
- delete parameters.body.thread_id;
487
- return this.getFromEndpoint(
488
- `/threads/${threadId}`,
489
- parameters,
490
- null,
491
- customHeaders,
492
- );
372
+ async createThread(parameters) {
373
+ const openai = new OpenAI({
374
+ apiKey: parameters.apiKey,
375
+ organization: parameters.organization,
376
+ });
377
+
378
+ const response = await openai.beta.threads.create({
379
+ ...parameters.payload,
380
+ });
381
+
382
+ return response;
493
383
  }
494
- modifyThread(parameters) {
495
- const threadId = parameters.body.thread_id;
496
- const customHeaders = { "OpenAI-Beta": "assistants=v1" };
497
- delete parameters.body.thread_id;
498
- return this.postToEndpoint(
499
- `/threads/${threadId}`,
500
- parameters,
501
- null,
502
- null,
503
- null,
504
- customHeaders,
505
- );
384
+ async getThread(parameters) {
385
+ const openai = new OpenAI({
386
+ apiKey: parameters.apiKey,
387
+ organization: parameters.organization,
388
+ });
389
+
390
+ const id = parameters.payload.thread_id;
391
+ const response = await openai.beta.threads.retrieve(id);
392
+
393
+ return response;
506
394
  }
507
- deleteThread(parameters) {
508
- const threadId = parameters.body.thread_id;
509
- const customHeaders = { "OpenAI-Beta": "assistants=v1" };
510
- delete parameters.body.thread_id;
511
- return this.deleteFromEndpoint(
512
- `/threads/${threadId}`,
513
- parameters,
514
- null,
515
- customHeaders,
516
- );
395
+ async modifyThread(parameters) {
396
+ const openai = new OpenAI({
397
+ apiKey: parameters.apiKey,
398
+ organization: parameters.organization,
399
+ });
400
+
401
+ const id = parameters.payload.thread_id;
402
+ delete parameters.payload.thread_id;
403
+
404
+ const response = await openai.beta.threads.update(id, {
405
+ ...parameters.payload,
406
+ });
407
+
408
+ return response;
517
409
  }
518
- listMessages(parameters) {
519
- const threadId = parameters.body.thread_id;
520
- const customHeaders = { "OpenAI-Beta": "assistants=v1" };
521
- const expectedQueryParameters = ["limit", "order", "after", "before"];
522
- delete parameters.body.thread_id;
523
- return this.getFromEndpoint(
524
- `/threads/${threadId}/messages`,
525
- parameters,
526
- expectedQueryParameters,
527
- customHeaders,
528
- );
410
+ async deleteThread(parameters) {
411
+ const openai = new OpenAI({
412
+ apiKey: parameters.apiKey,
413
+ organization: parameters.organization,
414
+ });
415
+
416
+ const id = parameters.payload.thread_id;
417
+ const response = await openai.beta.threads.del(id);
418
+
419
+ return response;
529
420
  }
530
- createMessage(parameters) {
531
- const threadId = parameters.body.thread_id;
532
- const customHeaders = { "OpenAI-Beta": "assistants=v1" };
533
- delete parameters.body.thread_id;
534
- return this.postToEndpoint(
535
- `/threads/${threadId}/messages`,
536
- parameters,
537
- null,
538
- null,
539
- null,
540
- customHeaders,
541
- );
421
+ async listMessages(parameters) {
422
+ const openai = new OpenAI({
423
+ apiKey: parameters.apiKey,
424
+ organization: parameters.organization,
425
+ });
426
+
427
+ const id = parameters.payload.thread_id;
428
+ const response = await openai.beta.threads.messages.list(id);
429
+
430
+ return response.body;
542
431
  }
543
- getMessage(parameters) {
544
- const threadId = parameters.body.thread_id;
545
- const messageId = parameters.body.message_id;
546
- const customHeaders = { "OpenAI-Beta": "assistants=v1" };
547
- delete parameters.body.thread_id;
548
- delete parameters.body.message_id;
549
- return this.getFromEndpoint(
550
- `/threads/${threadId}/messages/${messageId}`,
551
- parameters,
552
- null,
553
- customHeaders,
554
- );
432
+ async createMessage(parameters) {
433
+ const openai = new OpenAI({
434
+ apiKey: parameters.apiKey,
435
+ organization: parameters.organization,
436
+ });
437
+
438
+ const thread_id = parameters.payload.thread_id;
439
+ delete parameters.payload.thread_id;
440
+
441
+ const response = await openai.beta.threads.messages.create(thread_id, {
442
+ ...parameters.payload,
443
+ });
444
+
445
+ return response;
555
446
  }
556
- modifyMessage(parameters) {
557
- const threadId = parameters.body.thread_id;
558
- const messageId = parameters.body.message_id;
559
- const customHeaders = { "OpenAI-Beta": "assistants=v1" };
560
- delete parameters.body.thread_id;
561
- delete parameters.body.message_id;
562
- return this.postToEndpoint(
563
- `/threads/${threadId}/messages/${messageId}`,
564
- parameters,
565
- null,
566
- null,
567
- null,
568
- customHeaders,
447
+ async getMessage(parameters) {
448
+ const openai = new OpenAI({
449
+ apiKey: parameters.apiKey,
450
+ organization: parameters.organization,
451
+ });
452
+
453
+ const thread_id = parameters.payload.thread_id;
454
+ const message_id = parameters.payload.message_id;
455
+
456
+ const response = await openai.beta.threads.messages.retrieve(
457
+ thread_id,
458
+ message_id,
569
459
  );
460
+
461
+ return response;
570
462
  }
571
- createThreadAndRun(parameters) {
572
- const customHeaders = { "OpenAI-Beta": "assistants=v1" };
463
+ async modifyMessage(parameters) {
464
+ const openai = new OpenAI({
465
+ apiKey: parameters.apiKey,
466
+ organization: parameters.organization,
467
+ });
573
468
 
574
- return this.postToEndpoint(
575
- "/threads/runs",
576
- parameters,
577
- null,
578
- null,
579
- null,
580
- customHeaders,
469
+ const thread_id = parameters.payload.thread_id;
470
+ const message_id = parameters.payload.message_id;
471
+ delete parameters.payload.thread_id;
472
+ delete parameters.payload.message_id;
473
+
474
+ const response = await openai.beta.threads.messages.update(
475
+ thread_id,
476
+ message_id,
477
+ {
478
+ ...parameters.payload,
479
+ },
581
480
  );
481
+
482
+ return response;
582
483
  }
583
- listRuns(parameters) {
584
- const customHeaders = { "OpenAI-Beta": "assistants=v1" };
585
- const expectedQueryParameters = ["limit", "order", "after", "before"];
586
- const threadId = parameters.body.thread_id;
587
- delete parameters.body.thread_id;
588
- return this.getFromEndpoint(
589
- `/threads/${threadId}/runs`,
590
- parameters,
591
- expectedQueryParameters,
592
- customHeaders,
593
- );
484
+ async createThreadAndRun(parameters) {
485
+ const openai = new OpenAI({
486
+ apiKey: parameters.apiKey,
487
+ organization: parameters.organization,
488
+ });
489
+
490
+ const response = await openai.beta.threads.createAndRun({
491
+ ...parameters.payload,
492
+ });
493
+
494
+ return response;
594
495
  }
595
- createRun(parameters) {
596
- const customHeaders = { "OpenAI-Beta": "assistants=v1" };
597
- const threadId = parameters.body.thread_id;
598
- delete parameters.body.thread_id;
599
- return this.postToEndpoint(
600
- `/threads/${threadId}/runs`,
601
- parameters,
602
- null,
603
- null,
604
- null,
605
- customHeaders,
606
- );
496
+ async listRuns(parameters) {
497
+ const openai = new OpenAI({
498
+ apiKey: parameters.apiKey,
499
+ organization: parameters.organization,
500
+ });
501
+
502
+ const thred_id = parameters.payload.thread_id;
503
+ delete parameters.payload.thread_id;
504
+
505
+ const response = await openai.beta.threads.runs.list(thred_id, {
506
+ ...parameters.payload,
507
+ });
508
+
509
+ return response.body;
607
510
  }
608
- getRun(parameters) {
609
- const customHeaders = { "OpenAI-Beta": "assistants=v1" };
610
- const threadId = parameters.body.thread_id;
611
- const runId = parameters.body.run_id;
612
- delete parameters.body.thread_id;
613
- delete parameters.body.run_id;
614
- return this.getFromEndpoint(
615
- `/threads/${threadId}/runs/${runId}`,
616
- parameters,
617
- null,
618
- customHeaders,
619
- );
511
+ async createRun(parameters) {
512
+ const openai = new OpenAI({
513
+ apiKey: parameters.apiKey,
514
+ organization: parameters.organization,
515
+ });
516
+
517
+ const thread_id = parameters.payload.thread_id;
518
+ delete parameters.payload.thread_id;
519
+
520
+ const response = await openai.beta.threads.runs.create(thread_id, {
521
+ ...parameters.payload,
522
+ });
523
+
524
+ return response;
620
525
  }
621
- modifyRun(parameters) {
622
- const customHeaders = { "OpenAI-Beta": "assistants=v1" };
623
- const threadId = parameters.body.thread_id;
624
- const runId = parameters.body.run_id;
625
- delete parameters.body.thread_id;
626
- delete parameters.body.run_id;
627
- return this.postToEndpoint(
628
- `/threads/${threadId}/runs/${runId}`,
629
- parameters,
630
- null,
631
- null,
632
- null,
633
- customHeaders,
526
+ async getRun(parameters) {
527
+ const openai = new OpenAI({
528
+ apiKey: parameters.apiKey,
529
+ organization: parameters.organization,
530
+ });
531
+
532
+ const thread_id = parameters.payload.thread_id;
533
+ const run_id = parameters.payload.run_id;
534
+ delete parameters.payload.thread_id;
535
+ delete parameters.payload.run_id;
536
+
537
+ const response = await openai.beta.threads.runs.retrieve(
538
+ thread_id,
539
+ run_id,
634
540
  );
541
+
542
+ return response;
635
543
  }
636
- submitToolOuputsToRun(parameters) {
637
- const customHeaders = { "OpenAI-Beta": "assistants=v1" };
638
- const threadId = parameters.body.thread_id;
639
- const runId = parameters.body.run_id;
640
- delete parameters.body.thread_id;
641
- delete parameters.body.run_id;
642
- return this.postToEndpoint(
643
- `/threads/${threadId}/runs/${runId}/submit_tool_outputs`,
644
- parameters,
645
- null,
646
- null,
647
- null,
648
- customHeaders,
544
+ async modifyRun(parameters) {
545
+ const openai = new OpenAI({
546
+ apiKey: parameters.apiKey,
547
+ organization: parameters.organization,
548
+ });
549
+
550
+ const thread_id = parameters.payload.thread_id;
551
+ const run_id = parameters.payload.run_id;
552
+ delete parameters.payload.thread_id;
553
+ delete parameters.payload.run_id;
554
+
555
+ const response = await openai.beta.threads.runs.update(
556
+ thread_id,
557
+ run_id,
558
+ {
559
+ ...parameters.payload,
560
+ },
649
561
  );
562
+
563
+ return response;
650
564
  }
651
- cancelRun(parameters) {
652
- const customHeaders = { "OpenAI-Beta": "assistants=v1" };
653
- const threadId = parameters.body.thread_id;
654
- const runId = parameters.body.run_id;
655
- delete parameters.body.thread_id;
656
- delete parameters.body.run_id;
657
- return this.postToEndpoint(
658
- `/threads/${threadId}/runs/${runId}/cancel`,
659
- parameters,
660
- null,
661
- null,
662
- null,
663
- customHeaders,
565
+ async submitToolOuputsToRun(parameters) {
566
+ const openai = new OpenAI({
567
+ apiKey: parameters.apiKey,
568
+ organization: parameters.organization,
569
+ });
570
+
571
+ const thread_id = parameters.payload.thread_id;
572
+ const run_id = parameters.payload.run_id;
573
+ delete parameters.payload.thread_id;
574
+ delete parameters.payload.run_id;
575
+
576
+ const response = await openai.beta.threads.runs.submitToolOutputs(
577
+ thread_id,
578
+ run_id,
579
+ {
580
+ ...parameters.payload,
581
+ },
664
582
  );
583
+
584
+ return response;
665
585
  }
666
- listRunSteps(parameters) {
667
- const customHeaders = { "OpenAI-Beta": "assistants=v1" };
668
- const threadId = parameters.body.thread_id;
669
- const runId = parameters.body.run_id;
670
- const expectedQueryParameters = ["limit", "order", "after", "before"];
671
- delete parameters.body.thread_id;
672
- delete parameters.body.run_id;
673
- return this.getFromEndpoint(
674
- `/threads/${threadId}/runs/${runId}/steps`,
675
- parameters,
676
- expectedQueryParameters,
677
- customHeaders,
586
+ async cancelRun(parameters) {
587
+ const openai = new OpenAI({
588
+ apiKey: parameters.apiKey,
589
+ organization: parameters.organization,
590
+ });
591
+
592
+ const thread_id = parameters.payload.thread_id;
593
+ const run_id = parameters.payload.run_id;
594
+ delete parameters.payload.thread_id;
595
+ delete parameters.payload.run_id;
596
+
597
+ const response = await openai.beta.threads.runs.cancel(
598
+ thread_id,
599
+ run_id,
600
+ {
601
+ ...parameters.payload,
602
+ },
678
603
  );
604
+
605
+ return response;
679
606
  }
680
- getRunStep(parameters) {
681
- const customHeaders = { "OpenAI-Beta": "assistants=v1" };
682
- const threadId = parameters.body.thread_id;
683
- const runId = parameters.body.run_id;
684
- const stepId = parameters.body.step_id;
685
- delete parameters.body.thread_id;
686
- delete parameters.body.step_id;
687
- return this.getFromEndpoint(
688
- `/threads/${threadId}/runs/${runId}/steps/${stepId}`,
689
- parameters,
690
- null,
691
- customHeaders,
607
+ async listRunSteps(parameters) {
608
+ const openai = new OpenAI({
609
+ apiKey: parameters.apiKey,
610
+ organization: parameters.organization,
611
+ });
612
+
613
+ const thread_id = parameters.payload.thread_id;
614
+ const run_id = parameters.payload.run_id;
615
+ delete parameters.payload.thread_id;
616
+ delete parameters.payload.run_id;
617
+
618
+ const response = await openai.beta.threads.runs.steps.list(
619
+ thread_id,
620
+ run_id,
621
+ {
622
+ ...parameters.payload,
623
+ },
692
624
  );
625
+
626
+ return response.body;
693
627
  }
694
- listAssistantFiles(parameters) {
695
- const customHeaders = { "OpenAI-Beta": "assistants=v1" };
696
- const assistantId = parameters.body.assistant_id;
697
- const expectedQueryParameters = ["limit", "order", "after", "before"];
698
- delete parameters.body.assistant_id;
699
- return this.getFromEndpoint(
700
- `/assistants/${assistantId}/files`,
701
- parameters,
702
- expectedQueryParameters,
703
- customHeaders,
628
+ async getRunStep(parameters) {
629
+ const openai = new OpenAI({
630
+ apiKey: parameters.apiKey,
631
+ organization: parameters.organization,
632
+ });
633
+
634
+ const thread_id = parameters.payload.thread_id;
635
+ const run_id = parameters.payload.run_id;
636
+ const step_id = parameters.payload.step_id;
637
+
638
+ const response = await openai.beta.threads.runs.steps.retrieve(
639
+ thread_id,
640
+ run_id,
641
+ step_id,
704
642
  );
643
+
644
+ return response;
705
645
  }
706
- createAssistantFile(parameters) {
707
- const customHeaders = { "OpenAI-Beta": "assistants=v1" };
708
- const assistantId = parameters.body.assistant_id;
709
- delete parameters.body.assistant_id;
710
- return this.postToEndpoint(
711
- `/assistants/${assistantId}/files`,
712
- parameters,
713
- null,
714
- null,
715
- null,
716
- customHeaders,
717
- );
646
+ async listAssistantFiles(parameters) {
647
+ const openai = new OpenAI({
648
+ apiKey: parameters.apiKey,
649
+ organization: parameters.organization,
650
+ });
651
+
652
+ const assistant_id = parameters.payload.assistant_id;
653
+ delete parameters.payload.assistant_id;
654
+
655
+ const response = await openai.beta.assistants.files.list(assistant_id, {
656
+ ...parameters.payload,
657
+ });
658
+
659
+ return response.body;
718
660
  }
719
- getAssistantFile(parameters) {
720
- const customHeaders = { "OpenAI-Beta": "assistants=v1" };
721
- const assistantId = parameters.body.assistant_id;
722
- const fileId = parameters.body.file_id;
723
- delete parameters.body.assistant_id;
724
- delete parameters.body.file_id;
725
- return this.getFromEndpoint(
726
- `/assistants/${assistantId}/files/${fileId}`,
727
- parameters,
728
- null,
729
- customHeaders,
730
- );
661
+ async createAssistantFile(parameters) {
662
+ const openai = new OpenAI({
663
+ apiKey: parameters.apiKey,
664
+ organization: parameters.organization,
665
+ });
666
+
667
+ const assistant_id = parameters.payload.assistant_id;
668
+ delete parameters.payload.assistant_id;
669
+
670
+ const response = await openai.beta.assistants.files.create(assistant_id, {
671
+ ...parameters.payload,
672
+ });
673
+
674
+ return response;
731
675
  }
732
- deleteAssistantFile(parameters) {
733
- const customHeaders = { "OpenAI-Beta": "assistants=v1" };
734
- const assistantId = parameters.body.assistant_id;
735
- const fileId = parameters.body.file_id;
736
- delete parameters.body.assistant_id;
737
- delete parameters.body.file_id;
738
- return this.deleteFromEndpoint(
739
- `/assistants/${assistantId}/files/${fileId}`,
740
- parameters,
741
- null,
742
- customHeaders,
676
+ async getAssistantFile(parameters) {
677
+ const openai = new OpenAI({
678
+ apiKey: parameters.apiKey,
679
+ organization: parameters.organization,
680
+ });
681
+
682
+ const assistant_id = parameters.payload.assistant_id;
683
+ const file_id = parameters.payload.file_id;
684
+ delete parameters.payload.assistant_id;
685
+ delete parameters.payload.file_id;
686
+
687
+ const response = await openai.beta.assistants.files.retrieve(
688
+ assistant_id,
689
+ file_id,
690
+ {
691
+ ...parameters.payload,
692
+ },
743
693
  );
694
+
695
+ return response;
744
696
  }
745
- listMessageFiles(parameters) {
746
- const customHeaders = { "OpenAI-Beta": "assistants=v1" };
747
- const threadId = parameters.body.thread_id;
748
- const messageId = parameters.body.message_id;
749
- const expectedQueryParameters = ["limit", "order", "after", "before"];
750
- delete parameters.body.thread_id;
751
- delete parameters.body.message_id;
752
- return this.getFromEndpoint(
753
- `/threads/${threadId}/messages/${messageId}/files`,
754
- parameters,
755
- expectedQueryParameters,
756
- customHeaders,
697
+ async deleteAssistantFile(parameters) {
698
+ const openai = new OpenAI({
699
+ apiKey: parameters.apiKey,
700
+ organization: parameters.organization,
701
+ });
702
+
703
+ const assistant_id = parameters.payload.assistant_id;
704
+ const file_id = parameters.payload.file_id;
705
+ delete parameters.payload.assistant_id;
706
+ delete parameters.payload.file_id;
707
+
708
+ const response = await openai.beta.assistants.files.del(
709
+ assistant_id,
710
+ file_id,
711
+ {
712
+ ...parameters.payload,
713
+ },
757
714
  );
715
+
716
+ return response;
758
717
  }
759
- getMessageFile(parameters) {
760
- const customHeaders = { "OpenAI-Beta": "assistants=v1" };
761
- const threadId = parameters.body.thread_id;
762
- const messageId = parameters.body.message_id;
763
- const fileId = parameters.body.file_id;
764
- delete parameters.body.thread_id;
765
- delete parameters.body.message_id;
766
- delete parameters.body.file_id;
767
- return this.getFromEndpoint(
768
- `/threads/${threadId}/messages/${messageId}/files/${fileId}`,
769
- parameters,
770
- null,
771
- customHeaders,
718
+ async listMessageFiles(parameters) {
719
+ const openai = new OpenAI({
720
+ apiKey: parameters.apiKey,
721
+ organization: parameters.organization,
722
+ });
723
+
724
+ const thread_id = parameters.payload.thread_id;
725
+ const message_id = parameters.payload.message_id;
726
+ delete parameters.payload.thread_id;
727
+ delete parameters.payload.message_id;
728
+
729
+ const response = await openai.beta.threads.messages.files.list(
730
+ thread_id,
731
+ message_id,
732
+ {
733
+ ...parameters.payload,
734
+ },
772
735
  );
736
+
737
+ return response;
773
738
  }
774
- }
739
+ async getMessageFile(parameters) {
740
+ const openai = new OpenAI({
741
+ apiKey: parameters.apiKey,
742
+ organization: parameters.organization,
743
+ });
775
744
 
776
- function mergeQueryParams(parameters, queryParameters) {
777
- if (parameters.$queryParameters) {
778
- Object.keys(parameters.$queryParameters).forEach(
779
- function (parameterName) {
780
- var parameter = parameters.$queryParameters[parameterName];
781
- queryParameters[parameterName] = parameter;
745
+ const thread_id = parameters.payload.thread_id;
746
+ const message_id = parameters.payload.message_id;
747
+ const file_id = parameters.payload.file_id;
748
+
749
+ delete parameters.payload.thread_id;
750
+ delete parameters.payload.message_id;
751
+ delete parameters.payload.file_id;
752
+
753
+ const response = await openai.beta.threads.messages.files.retrieve(
754
+ thread_id,
755
+ message_id,
756
+ file_id,
757
+ {
758
+ ...parameters.payload,
782
759
  },
783
760
  );
761
+
762
+ return response;
784
763
  }
785
- return queryParameters;
786
764
  }
787
765
 
788
766
  return OpenaiApi;