@inductiv/node-red-openai-api 0.8.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib.js CHANGED
@@ -1,3 +1,5 @@
1
+ const { response } = require("express");
2
+
1
3
  let OpenaiApi = (function () {
2
4
  "use strict";
3
5
 
@@ -9,35 +11,213 @@ let OpenaiApi = (function () {
9
11
  this.clientParams = {
10
12
  apiKey: apiKey,
11
13
  baseURL: baseURL,
12
- organization: organization
13
- }
14
+ organization: organization,
15
+ };
14
16
  }
15
17
 
16
- async createChatCompletion(parameters) {
17
- let node = parameters._node;
18
- delete parameters._node;
18
+ // Begin Vector Store File functions
19
+ async createVectorStoreFile(parameters) {
20
+ const openai = new OpenAI(this.clientParams);
21
+ const { vector_store_id, ...params } = parameters.msg.payload;
22
+ const response = await openai.beta.vectorStores.files.create(
23
+ vector_store_id,
24
+ params,
25
+ );
26
+
27
+ return response;
28
+ }
29
+
30
+ async listVectorStoreFiles(parameters) {
31
+ /* Returns a list of vector store files. */
32
+
33
+ const openai = new OpenAI(this.clientParams);
34
+ const { vector_store_id, ...params } = parameters.msg.payload;
35
+ const list = await openai.beta.vectorStores.files.list(
36
+ vector_store_id,
37
+ params,
38
+ );
39
+
40
+ return [...list.data];
41
+ }
42
+
43
+ async retrieveVectorStoreFile(parameters) {
44
+ /* Retrieves a vector store file. */
45
+
46
+ const openai = new OpenAI(this.clientParams);
47
+ const { vector_store_id, file_id } = parameters.msg.payload;
48
+ const response = openai.beta.vectorStores.files.retrieve(
49
+ vector_store_id,
50
+ file_id,
51
+ );
52
+
53
+ return response;
54
+ }
55
+
56
+ async deleteVectorStoreFile(parameters) {
57
+ /* Removes a file from the vector store. */
58
+
59
+ const openai = new OpenAI(this.clientParams);
60
+ const { vector_store_id, file_id, ...params } = parameters.msg.payload;
61
+ const response = openai.beta.vectorStores.files.del(
62
+ vector_store_id,
63
+ file_id,
64
+ params,
65
+ );
66
+
67
+ return response;
68
+ }
69
+
70
+ // End Vector Store File functions
71
+
72
+ async createVectorStoreFileBatch(parameters) {
73
+ const openai = new OpenAI(this.clientParams);
74
+ const { vector_store_id, ...params } = parameters.msg.payload;
75
+ const response = await openai.beta.vectorStores.fileBatches.create(
76
+ vector_store_id,
77
+ params,
78
+ );
79
+
80
+ return response;
81
+ }
82
+
83
+ async retrieveVectorStoreFileBatch(parameters) {
84
+ const openai = new OpenAI(this.clientParams);
85
+ const { vector_store_id, batch_id, ...params } = parameters.msg.payload;
86
+ const response = await openai.beta.vectorStores.fileBatches.retrieve(
87
+ vector_store_id,
88
+ batch_id,
89
+ params,
90
+ );
91
+
92
+ return response;
93
+ }
94
+
95
+ async cancelVectorStoreFileBatch(parameters) {
96
+ const openai = new OpenAI(this.clientParams);
97
+ const { vector_store_id, batch_id, ...params } = parameters.msg.payload;
98
+ const response = await openai.beta.vectorStores.fileBatches.retrieve(
99
+ vector_store_id,
100
+ batch_id,
101
+ params,
102
+ );
103
+
104
+ return response;
105
+ }
106
+
107
+ async listVectorStoreBatchFiles(parameters) {
108
+ const openai = new OpenAI(this.clientParams);
109
+ const { vector_store_id, batch_id, ...params } = parameters.msg.payload;
110
+ const list = await openai.beta.vectorStores.fileBatches.listFiles(
111
+ vector_store_id,
112
+ batch_id,
113
+ params,
114
+ );
115
+ const batchFiles = [...list.data];
116
+
117
+ return batchFiles;
118
+ }
119
+
120
+ async createVectorStore(parameters) {
121
+ const openai = new OpenAI(this.clientParams);
122
+ const response = await openai.beta.vectorStores.create(
123
+ parameters.msg.payload,
124
+ );
125
+
126
+ return response;
127
+ }
128
+
129
+ async listVectorStores(parameters) {
130
+ const openai = new OpenAI(this.clientParams);
131
+ const list = await openai.beta.vectorStores.list(parameters.msg.payload);
132
+ const vectorStores = [...list.data];
19
133
 
134
+ return vectorStores;
135
+ }
136
+
137
+ async retrieveVectorStore(parameters) {
138
+ const openai = new OpenAI(this.clientParams);
139
+ const { vector_store_id, ...params } = parameters.msg.payload;
140
+ const response = await openai.beta.vectorStores.retrieve(
141
+ vector_store_id,
142
+ params,
143
+ );
144
+
145
+ return response;
146
+ }
147
+
148
+ async modifyVectorStore(parameters) {
149
+ const openai = new OpenAI(this.clientParams);
150
+ const { vector_store_id, ...params } = parameters.msg.payload;
151
+ const response = await openai.beta.vectorStores.update(
152
+ vector_store_id,
153
+ params,
154
+ );
155
+
156
+ return response;
157
+ }
158
+
159
+ async deleteVectorStore(parameters) {
160
+ const openai = new OpenAI(this.clientParams);
161
+ const { vector_store_id, ...params } = parameters.msg.payload;
162
+ const response = await openai.beta.vectorStores.del(
163
+ vector_store_id,
164
+ params,
165
+ );
166
+
167
+ return response;
168
+ }
169
+
170
+ async createBatch(parameters) {
171
+ const openai = new OpenAI(this.clientParams);
172
+ const response = await openai.batches.create(parameters.msg.payload);
173
+
174
+ return response;
175
+ }
176
+
177
+ async retrieveBatch(parameters) {
178
+ const openai = new OpenAI(this.clientParams);
179
+ const { batch_id, ...params } = parameters.msg.payload;
180
+ const response = await openai.batches.retrieve(batch_id, params);
181
+
182
+ return response;
183
+ }
184
+
185
+ async listBatch(parameters) {
186
+ const openai = new OpenAI(this.clientParams);
187
+ const list = await openai.batches.list(parameters.msg.payload);
188
+ const batches = [...list.data];
189
+
190
+ return batches;
191
+ }
192
+
193
+ async cancelBatch(parameters) {
194
+ const openai = new OpenAI(this.clientParams);
195
+ const { batch_id, ...params } = parameters.msg.payload;
196
+ const response = await openai.batches.cancel(batch_id, params);
197
+
198
+ return response;
199
+ }
200
+
201
+ async createChatCompletion(parameters) {
202
+ const { _node, ...params } = parameters;
20
203
  const openai = new OpenAI(this.clientParams);
21
- const response = await openai.chat.completions.create({
22
- ...parameters.msg.payload,
23
- });
204
+ const response = await openai.chat.completions.create(params.msg.payload);
24
205
 
25
- if (parameters.msg.payload.stream) {
26
- node.status({
206
+ if (params.msg.payload.stream) {
207
+ _node.status({
27
208
  fill: "green",
28
209
  shape: "dot",
29
210
  text: "OpenaiApi.status.streaming",
30
211
  });
31
212
  for await (const chunk of response) {
32
213
  if (typeof chunk === "object") {
33
-
34
- let {_msgid, ...newMsg} = parameters.msg;
214
+ let { _msgid, ...newMsg } = parameters.msg;
35
215
  newMsg.payload = chunk;
36
216
 
37
- node.send(newMsg);
217
+ _node.send(newMsg);
38
218
  }
39
219
  }
40
- node.status({});
220
+ _node.status({});
41
221
  } else {
42
222
  return response;
43
223
  }
@@ -45,61 +225,44 @@ let OpenaiApi = (function () {
45
225
 
46
226
  async createImage(parameters) {
47
227
  const openai = new OpenAI(this.clientParams);
48
- const response = await openai.images.generate({
49
- ...parameters.msg.payload,
50
- });
228
+ const response = await openai.images.generate(parameters.msg.payload);
51
229
 
52
- return response;
230
+ return response.data;
53
231
  }
54
232
 
55
233
  async createImageEdit(parameters) {
56
234
  const openai = new OpenAI(this.clientParams);
235
+ let { image, mask, ...params } = parameters.msg.payload;
57
236
 
58
- parameters.msg.payload.image = fs.createReadStream(
59
- parameters.msg.payload.image,
60
- );
61
- if (parameters.msg.payload.mask) {
62
- parameters.msg.payload.mask = fs.createReadStream(
63
- parameters.msg.payload.mask,
64
- );
237
+ params.image = fs.createReadStream(image);
238
+ if (mask) {
239
+ params.mask = fs.createReadStream(mask);
65
240
  }
241
+ const response = await openai.images.edit(params);
66
242
 
67
- const response = await openai.images.edit({
68
- ...parameters.msg.payload,
69
- });
70
-
71
- return response;
243
+ return response.data;
72
244
  }
73
245
 
74
246
  async createImageVariation(parameters) {
75
247
  const openai = new OpenAI(this.clientParams);
248
+ let { image, ...params } = parameters.msg.payload;
76
249
 
77
- parameters.msg.payload.image = fs.createReadStream(
78
- parameters.msg.payload.image,
79
- );
80
- const response = await openai.images.createVariation({
81
- ...parameters.msg.payload,
82
- });
250
+ params.image = fs.createReadStream(image);
251
+ const response = await openai.images.createVariation(params);
83
252
 
84
- return response;
253
+ return response.data;
85
254
  }
86
255
 
87
256
  async createEmbedding(parameters) {
88
257
  const openai = new OpenAI(this.clientParams);
258
+ const response = await openai.embeddings.create(parameters.msg.payload);
89
259
 
90
- const response = await openai.embeddings.create({
91
- ...parameters.msg.payload,
92
- });
93
-
94
- return response;
260
+ return response.data;
95
261
  }
96
262
 
97
263
  async createSpeech(parameters) {
98
264
  const openai = new OpenAI(this.clientParams);
99
-
100
- const audio = await openai.audio.speech.create({
101
- ...parameters.msg.payload,
102
- });
265
+ const audio = await openai.audio.speech.create(parameters.msg.payload);
103
266
  const response = Buffer.from(await audio.arrayBuffer());
104
267
 
105
268
  return response;
@@ -107,125 +270,90 @@ let OpenaiApi = (function () {
107
270
 
108
271
  async createTranscription(parameters) {
109
272
  const openai = new OpenAI(this.clientParams);
273
+ let { file, ...params } = parameters.msg.payload;
110
274
 
111
- parameters.msg.payload.file = fs.createReadStream(
112
- parameters.msg.payload.file,
113
- );
275
+ params.file = fs.createReadStream(file);
114
276
 
115
- const response = await openai.audio.transcriptions.create({
116
- ...parameters.msg.payload,
117
- });
277
+ const response = await openai.audio.transcriptions.create(params);
118
278
 
119
279
  return response;
120
280
  }
121
281
 
122
282
  async createTranslation(parameters) {
123
283
  const openai = new OpenAI(this.clientParams);
284
+ let { file, ...params } = parameters.msg.payload;
124
285
 
125
- parameters.msg.payload.file = fs.createReadStream(
126
- parameters.msg.payload.file,
127
- );
128
- const response = await openai.audio.translations.create({
129
- ...parameters.msg.payload,
130
- });
286
+ params.file = fs.createReadStream(file);
287
+
288
+ const response = await openai.audio.translations.create(params);
131
289
 
132
290
  return response;
133
291
  }
134
292
 
135
293
  async listFiles(parameters) {
136
294
  const openai = new OpenAI(this.clientParams);
295
+ const list = await openai.files.list(parameters.msg.payload);
137
296
 
138
- const list = await openai.files.list({
139
- ...parameters.msg.payload,
140
- });
141
-
142
- let files = [];
143
- for await (const file of list) {
144
- files.push(file);
145
- }
146
-
147
- return files;
297
+ return [...list.data];
148
298
  }
149
299
 
150
300
  async createFile(parameters) {
151
301
  const openai = new OpenAI(this.clientParams);
302
+ let { file, ...params } = parameters.msg.payload;
152
303
 
153
- parameters.msg.payload.file = fs.createReadStream(
154
- parameters.msg.payload.file,
155
- );
156
- const response = await openai.files.create({
157
- ...parameters.msg.payload,
158
- });
304
+ params.file = fs.createReadStream(file);
305
+
306
+ const response = await openai.files.create(params);
159
307
 
160
308
  return response;
161
309
  }
162
310
 
163
311
  async deleteFile(parameters) {
164
312
  const openai = new OpenAI(this.clientParams);
165
-
166
- const response = await openai.files.del({
167
- ...parameters.msg.payload,
168
- });
313
+ const { file_id, ...params } = parameters.msg.payload;
314
+ const response = await openai.files.del(file_id, params);
169
315
 
170
316
  return response;
171
317
  }
172
318
 
173
319
  async retrieveFile(parameters) {
174
320
  const openai = new OpenAI(this.clientParams);
175
-
176
- const file_id = parameters.msg.payload.file_id;
177
- delete parameters.msg.payload.file_id;
178
-
179
- const response = await openai.files.retrieve(file_id, {
180
- ...parameters.msg.payload,
181
- });
321
+ const { file_id, ...params } = parameters.msg.payload;
322
+ const response = await openai.files.retrieve(file_id, params);
182
323
 
183
324
  return response;
184
325
  }
185
326
 
186
327
  async downloadFile(parameters) {
187
328
  const openai = new OpenAI(this.clientParams);
188
-
189
- const file_id = parameters.msg.payload.file_id;
190
- delete parameters.msg.payload.file_id;
191
-
192
- const response = await openai.files.retrieveContent(file_id, {
193
- ...parameters.msg.payload,
194
- });
329
+ const { file_id, ...params } = parameters.msg.payload;
330
+ const response = await openai.files.content(file_id, params);
195
331
 
196
332
  return response;
197
333
  }
198
334
 
199
335
  async createFineTuningJob(parameters) {
200
336
  const openai = new OpenAI(this.clientParams);
201
-
202
- const response = await openai.fineTuning.jobs.create({
203
- ...parameters.msg.payload,
204
- });
337
+ const response = await openai.fineTuning.jobs.create(
338
+ parameters.msg.payload,
339
+ );
205
340
 
206
341
  return response;
207
342
  }
208
343
 
209
344
  async listPaginatedFineTuningJobs(parameters) {
210
345
  const openai = new OpenAI(this.clientParams);
346
+ const list = await openai.fineTuning.jobs.list(parameters.msg.payload);
211
347
 
212
- const list = await openai.fineTuning.jobs.list({
213
- ...parameters.msg.payload,
214
- });
215
-
216
- let response = [];
217
- for await (const fineTune of list) {
218
- response.push(fineTune);
219
- }
220
-
221
- return response;
348
+ return [...list.data];
222
349
  }
223
350
 
224
351
  async retrieveFineTuningJob(parameters) {
225
352
  const openai = new OpenAI(this.clientParams);
226
-
353
+ const { fine_tuning_job_id, ...params } = parameters.msg.payload;
227
354
  const response = await openai.fineTuning.jobs.retrieve(
228
- parameters.msg.payload.fine_tuning_job_id,
355
+ fine_tuning_job_id,
356
+ params,
229
357
  );
230
358
 
231
359
  return response;
@@ -233,22 +361,21 @@ let OpenaiApi = (function () {
233
361
 
234
362
  async listFineTuningEvents(parameters) {
235
363
  const openai = new OpenAI(this.clientParams);
236
-
237
- let response = [];
364
+ const { fine_tuning_job_id, ...params } = parameters.msg.payload;
238
365
  const list = await openai.fineTuning.jobs.listEvents(
239
- parameters.msg.payload.fine_tuning_job_id,
366
+ fine_tuning_job_id,
367
+ params,
240
368
  );
241
- for await (const fineTuneEvent of list) {
242
- response.push(fineTuneEvent);
243
- }
244
- return response;
369
+
370
+ return [...list.data];
245
371
  }
246
372
 
247
373
  async cancelFineTuningJob(parameters) {
248
374
  const openai = new OpenAI(this.clientParams);
249
-
375
+ const { fine_tuning_job_id, ...params } = parameters.msg.payload;
250
376
  const response = await openai.fineTuning.jobs.cancel(
251
- parameters.msg.payload.fine_tuning_job_id,
377
+ fine_tuning_job_id,
378
+ params,
252
379
  );
253
380
 
254
381
  return response;
@@ -256,9 +383,9 @@ let OpenaiApi = (function () {
256
383
 
257
384
  async listModels(parameters) {
258
385
  const openai = new OpenAI(this.clientParams);
259
- const response = await openai.models.list();
386
+ const list = await openai.models.list();
260
387
 
261
- return response.body;
388
+ return [...list.data];
262
389
  }
263
390
 
264
391
  async retrieveModel(parameters) {
@@ -285,115 +412,107 @@ let OpenaiApi = (function () {
285
412
 
286
413
  async listAssistants(parameters) {
287
414
  const openai = new OpenAI(this.clientParams);
288
- const response = await openai.beta.assistants.list({
289
- ...parameters.msg.payload,
290
- });
415
+ const list = await openai.beta.assistants.list(parameters.msg.payload);
291
416
 
292
- return response.body;
417
+ return [...list.data];
293
418
  }
294
419
 
295
420
  async createAssistant(parameters) {
296
421
  const openai = new OpenAI(this.clientParams);
297
- const response = await openai.beta.assistants.create({
298
- ...parameters.msg.payload,
299
- });
422
+ const response = await openai.beta.assistants.create(
423
+ parameters.msg.payload,
424
+ );
300
425
 
301
426
  return response;
302
427
  }
303
428
 
304
429
  async getAssistant(parameters) {
305
430
  const openai = new OpenAI(this.clientParams);
306
- const id = parameters.msg.payload.assistant_id;
307
- const response = await openai.beta.assistants.retrieve(id);
431
+ const { assistant_id, ...params } = parameters.msg.payload;
432
+ const response = await openai.beta.assistants.retrieve(
433
+ assistant_id,
434
+ params,
435
+ );
308
436
 
309
437
  return response;
310
438
  }
311
439
 
312
440
  async modifyAssistant(parameters) {
313
441
  const openai = new OpenAI(this.clientParams);
314
- const id = parameters.msg.payload.assistant_id;
315
- delete parameters.msg.payload.assistant_id;
316
-
317
- const response = await openai.beta.assistants.update(id, {
318
- ...parameters.msg.payload,
319
- });
442
+ const { assistant_id, ...params } = parameters.msg.payload;
443
+ const response = await openai.beta.assistants.update(
444
+ assistant_id,
445
+ params,
446
+ );
320
447
 
321
448
  return response;
322
449
  }
323
450
 
324
451
  async deleteAssistant(parameters) {
325
452
  const openai = new OpenAI(this.clientParams);
326
- const id = parameters.msg.payload.assistant_id;
327
- const response = await openai.beta.assistants.del(id);
453
+ const { assistant_id, ...params } = parameters.msg.payload;
454
+ const response = await openai.beta.assistants.del(assistant_id, params);
328
455
 
329
456
  return response;
330
457
  }
331
458
 
332
459
  async createThread(parameters) {
333
460
  const openai = new OpenAI(this.clientParams);
334
- const response = await openai.beta.threads.create({
335
- ...parameters.msg.payload,
336
- });
461
+ const response = await openai.beta.threads.create(parameters.msg.payload);
337
462
 
338
463
  return response;
339
464
  }
340
465
 
341
466
  async getThread(parameters) {
342
467
  const openai = new OpenAI(this.clientParams);
343
- const id = parameters.msg.payload.thread_id;
344
- const response = await openai.beta.threads.retrieve(id);
468
+ const { thread_id, ...params } = parameters.msg.payload;
469
+ const response = await openai.beta.threads.retrieve(thread_id, params);
345
470
 
346
471
  return response;
347
472
  }
348
473
 
349
474
  async modifyThread(parameters) {
350
475
  const openai = new OpenAI(this.clientParams);
351
- const id = parameters.msg.payload.thread_id;
352
- delete parameters.msg.payload.thread_id;
353
-
354
- const response = await openai.beta.threads.update(id, {
355
- ...parameters.msg.payload,
356
- });
476
+ const { thread_id, ...params } = parameters.msg.payload;
477
+ const response = await openai.beta.threads.update(thread_id, params);
357
478
 
358
479
  return response;
359
480
  }
360
481
 
361
482
  async deleteThread(parameters) {
362
483
  const openai = new OpenAI(this.clientParams);
363
- const id = parameters.msg.payload.thread_id;
364
- const response = await openai.beta.threads.del(id);
484
+ const { thread_id, ...params } = parameters.msg.payload;
485
+ const response = await openai.beta.threads.del(thread_id, params);
365
486
 
366
487
  return response;
367
488
  }
368
489
 
369
490
  async listMessages(parameters) {
370
491
  const openai = new OpenAI(this.clientParams);
371
- const id = parameters.msg.payload.thread_id;
372
- const response = await openai.beta.threads.messages.list(id);
492
+ const { thread_id, ...params } = parameters.msg.payload;
493
+ const list = await openai.beta.threads.messages.list(thread_id, params);
373
494
 
374
- return response.body;
495
+ return [...list.data];
375
496
  }
376
497
 
377
498
  async createMessage(parameters) {
378
499
  const openai = new OpenAI(this.clientParams);
379
- const thread_id = parameters.msg.payload.thread_id;
380
- delete parameters.msg.payload.thread_id;
381
-
382
- const response = await openai.beta.threads.messages.create(thread_id, {
383
- ...parameters.msg.payload,
384
- });
500
+ const { thread_id, ...params } = parameters.msg.payload;
501
+ const response = await openai.beta.threads.messages.create(
502
+ thread_id,
503
+ params,
504
+ );
385
505
 
386
506
  return response;
387
507
  }
388
508
 
389
509
  async getMessage(parameters) {
390
510
  const openai = new OpenAI(this.clientParams);
391
- const thread_id = parameters.msg.payload.thread_id;
392
- const message_id = parameters.msg.payload.message_id;
393
-
511
+ const { thread_id, message_id, ...params } = parameters.msg.payload;
394
512
  const response = await openai.beta.threads.messages.retrieve(
395
513
  thread_id,
396
514
  message_id,
515
+ params,
397
516
  );
398
517
 
399
518
  return response;
@@ -401,17 +520,11 @@ let OpenaiApi = (function () {
401
520
 
402
521
  async modifyMessage(parameters) {
403
522
  const openai = new OpenAI(this.clientParams);
404
- const thread_id = parameters.msg.payload.thread_id;
405
- const message_id = parameters.msg.payload.message_id;
406
- delete parameters.msg.payload.thread_id;
407
- delete parameters.msg.payload.message_id;
408
-
523
+ const { thread_id, message_id, ...params } = parameters.msg.payload;
409
524
  const response = await openai.beta.threads.messages.update(
410
525
  thread_id,
411
526
  message_id,
412
- {
413
- ...parameters.msg.payload,
414
- },
527
+ params,
415
528
  );
416
529
 
417
530
  return response;
@@ -419,47 +532,74 @@ let OpenaiApi = (function () {
419
532
 
420
533
  async createThreadAndRun(parameters) {
421
534
  const openai = new OpenAI(this.clientParams);
422
- const response = await openai.beta.threads.createAndRun({
423
- ...parameters.msg.payload,
424
- });
425
535
 
426
- return response;
536
+ const { _node, ...params } = parameters;
537
+ const response = await openai.beta.threads.createAndRun(
538
+ params.msg.payload,
539
+ );
540
+
541
+ if (params.msg.payload.stream) {
542
+ _node.status({
543
+ fill: "green",
544
+ shape: "dot",
545
+ text: "OpenaiApi.status.streaming",
546
+ });
547
+ for await (const chunk of response) {
548
+ if (typeof chunk === "object") {
549
+ let { _msgid, ...newMsg } = parameters.msg;
550
+ newMsg.payload = chunk.data;
551
+
552
+ _node.send(newMsg);
553
+ }
554
+ }
555
+ _node.status({});
556
+ } else {
557
+ return response;
558
+ }
427
559
  }
428
560
 
429
561
  async listRuns(parameters) {
430
562
  const openai = new OpenAI(this.clientParams);
431
- const thred_id = parameters.msg.payload.thread_id;
432
- delete parameters.msg.payload.thread_id;
563
+ const { thread_id, ...params } = parameters.msg.payload;
564
+ const list = await openai.beta.threads.runs.list(thread_id, params);
433
565
 
434
- const response = await openai.beta.threads.runs.list(thred_id, {
435
- ...parameters.msg.payload,
436
- });
437
-
438
- return response.body;
566
+ return [...list.data];
439
567
  }
440
568
 
441
569
  async createRun(parameters) {
442
570
  const openai = new OpenAI(this.clientParams);
443
- const thread_id = parameters.msg.payload.thread_id;
444
- delete parameters.msg.payload.thread_id;
445
571
 
446
- const response = await openai.beta.threads.runs.create(thread_id, {
447
- ...parameters.msg.payload,
448
- });
572
+ const { _node, ..._params } = parameters;
573
+ const { thread_id, ...params } = _params.msg.payload;
574
+ const response = await openai.beta.threads.runs.create(thread_id, params);
449
575
 
450
- return response;
576
+ if (params.stream) {
577
+ _node.status({
578
+ fill: "green",
579
+ shape: "dot",
580
+ text: "OpenaiApi.status.streaming",
581
+ });
582
+ for await (const chunk of response) {
583
+ if (typeof chunk === "object") {
584
+ let { _msgid, ...newMsg } = parameters.msg;
585
+ newMsg.payload = chunk.data;
586
+
587
+ _node.send(newMsg);
588
+ }
589
+ }
590
+ _node.status({});
591
+ } else {
592
+ return response;
593
+ }
451
594
  }
452
595
 
453
596
  async getRun(parameters) {
454
597
  const openai = new OpenAI(this.clientParams);
455
- const thread_id = parameters.msg.payload.thread_id;
456
- const run_id = parameters.msg.payload.run_id;
457
- delete parameters.msg.payload.thread_id;
458
- delete parameters.msg.payload.run_id;
459
-
598
+ const { thread_id, run_id, ...params } = parameters.msg.payload;
460
599
  const response = await openai.beta.threads.runs.retrieve(
461
600
  thread_id,
462
601
  run_id,
602
+ params,
463
603
  );
464
604
 
465
605
  return response;
@@ -467,53 +607,54 @@ let OpenaiApi = (function () {
467
607
 
468
608
  async modifyRun(parameters) {
469
609
  const openai = new OpenAI(this.clientParams);
470
- const thread_id = parameters.msg.payload.thread_id;
471
- const run_id = parameters.msg.payload.run_id;
472
- delete parameters.msg.payload.thread_id;
473
- delete parameters.msg.payload.run_id;
474
-
610
+ const { thread_id, run_id, ...params } = parameters.msg.payload;
475
611
  const response = await openai.beta.threads.runs.update(
476
612
  thread_id,
477
613
  run_id,
478
- {
479
- ...parameters.msg.payload,
480
- },
614
+ params,
481
615
  );
482
616
 
483
617
  return response;
484
618
  }
485
619
 
486
- async submitToolOuputsToRun(parameters) {
620
+ async submitToolOutputsToRun(parameters) {
487
621
  const openai = new OpenAI(this.clientParams);
488
- const thread_id = parameters.msg.payload.thread_id;
489
- const run_id = parameters.msg.payload.run_id;
490
- delete parameters.msg.payload.thread_id;
491
- delete parameters.msg.payload.run_id;
492
622
 
623
+ const {_node, ..._params} = parameters;
624
+ const { thread_id, run_id, ...params } = _params.msg.payload;
493
625
  const response = await openai.beta.threads.runs.submitToolOutputs(
494
626
  thread_id,
495
627
  run_id,
496
- {
497
- ...parameters.msg.payload,
498
- },
628
+ params,
499
629
  );
500
630
 
501
- return response;
631
+ if (params.stream) {
632
+ _node.status({
633
+ fill: "green",
634
+ shape: "dot",
635
+ text: "OpenaiApi.status.streaming",
636
+ });
637
+ for await (const chunk of response) {
638
+ if (typeof chunk === "object") {
639
+ let { _msgid, ...newMsg } = parameters.msg;
640
+ newMsg.payload = chunk.data;
641
+
642
+ _node.send(newMsg);
643
+ }
644
+ }
645
+ _node.status({});
646
+ } else {
647
+ return response;
648
+ }
502
649
  }
503
650
 
504
651
  async cancelRun(parameters) {
505
652
  const openai = new OpenAI(this.clientParams);
506
- const thread_id = parameters.msg.payload.thread_id;
507
- const run_id = parameters.msg.payload.run_id;
508
- delete parameters.msg.payload.thread_id;
509
- delete parameters.msg.payload.run_id;
510
-
653
+ const { thread_id, run_id, ...params } = parameters.msg.payload;
511
654
  const response = await openai.beta.threads.runs.cancel(
512
655
  thread_id,
513
656
  run_id,
514
- {
515
- ...parameters.msg.payload,
516
- },
657
+ params,
517
658
  );
518
659
 
519
660
  return response;
@@ -521,132 +662,20 @@ let OpenaiApi = (function () {
521
662
 
522
663
  async listRunSteps(parameters) {
523
664
  const openai = new OpenAI(this.clientParams);
524
- const thread_id = parameters.msg.payload.thread_id;
525
- const run_id = parameters.msg.payload.run_id;
526
- delete parameters.msg.payload.thread_id;
527
- delete parameters.msg.payload.run_id;
528
-
529
- const response = await openai.beta.threads.runs.steps.list(
530
- thread_id,
531
- run_id,
532
- {
533
- ...parameters.msg.payload,
534
- },
535
- );
665
+ const { thread_id, run_id, ...params } = parameters.msg.payload;
666
+ const list = await openai.beta.threads.runs.steps.list(run_id, params);
536
667
 
537
- return response.body;
668
+ return [...list.data];
538
669
  }
539
670
 
540
671
  async getRunStep(parameters) {
541
672
  const openai = new OpenAI(this.clientParams);
542
- const thread_id = parameters.msg.payload.thread_id;
543
- const run_id = parameters.msg.payload.run_id;
544
- const step_id = parameters.msg.payload.step_id;
545
-
673
+ const { thread_id, run_id, step_id, ...params } = parameters.msg.payload;
546
674
  const response = await openai.beta.threads.runs.steps.retrieve(
547
675
  thread_id,
548
676
  run_id,
549
677
  step_id,
550
- );
551
-
552
- return response;
553
- }
554
-
555
- async listAssistantFiles(parameters) {
556
- const openai = new OpenAI(this.clientParams);
557
- const assistant_id = parameters.msg.payload.assistant_id;
558
- delete parameters.msg.payload.assistant_id;
559
-
560
- const response = await openai.beta.assistants.files.list(assistant_id, {
561
- ...parameters.msg.payload,
562
- });
563
-
564
- return response.body;
565
- }
566
-
567
- async createAssistantFile(parameters) {
568
- const openai = new OpenAI(this.clientParams);
569
- const assistant_id = parameters.msg.payload.assistant_id;
570
- delete parameters.msg.payload.assistant_id;
571
-
572
- const response = await openai.beta.assistants.files.create(assistant_id, {
573
- ...parameters.msg.payload,
574
- });
575
-
576
- return response;
577
- }
578
-
579
- async getAssistantFile(parameters) {
580
- const openai = new OpenAI(this.clientParams);
581
- const assistant_id = parameters.msg.payload.assistant_id;
582
- const file_id = parameters.msg.payload.file_id;
583
- delete parameters.msg.payload.assistant_id;
584
- delete parameters.msg.payload.file_id;
585
-
586
- const response = await openai.beta.assistants.files.retrieve(
587
- assistant_id,
588
- file_id,
589
- {
590
- ...parameters.msg.payload,
591
- },
592
- );
593
-
594
- return response;
595
- }
596
-
597
- async deleteAssistantFile(parameters) {
598
- const openai = new OpenAI(this.clientParams);
599
- const assistant_id = parameters.msg.payload.assistant_id;
600
- const file_id = parameters.msg.payload.file_id;
601
- delete parameters.msg.payload.assistant_id;
602
- delete parameters.msg.payload.file_id;
603
-
604
- const response = await openai.beta.assistants.files.del(
605
- assistant_id,
606
- file_id,
607
- {
608
- ...parameters.msg.payload,
609
- },
610
- );
611
-
612
- return response;
613
- }
614
-
615
- async listMessageFiles(parameters) {
616
- const openai = new OpenAI(this.clientParams);
617
- const thread_id = parameters.msg.payload.thread_id;
618
- const message_id = parameters.msg.payload.message_id;
619
- delete parameters.msg.payload.thread_id;
620
- delete parameters.msg.payload.message_id;
621
-
622
- const response = await openai.beta.threads.messages.files.list(
623
- thread_id,
624
- message_id,
625
- {
626
- ...parameters.msg.payload,
627
- },
628
- );
629
-
630
- return response;
631
- }
632
-
633
- async getMessageFile(parameters) {
634
- const openai = new OpenAI(this.clientParams);
635
- const thread_id = parameters.msg.payload.thread_id;
636
- const message_id = parameters.msg.payload.message_id;
637
- const file_id = parameters.msg.payload.file_id;
638
-
639
- delete parameters.msg.payload.thread_id;
640
- delete parameters.msg.payload.message_id;
641
- delete parameters.msg.payload.file_id;
642
-
643
- const response = await openai.beta.threads.messages.files.retrieve(
644
- thread_id,
645
- message_id,
646
- file_id,
647
- {
648
- ...parameters.msg.payload,
649
- },
678
+ params,
650
679
  );
651
680
 
652
681
  return response;