@inductiv/node-red-openai-api 0.3.5 → 0.3.7
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 +72 -31
- package/node.js +4 -0
- package/package.json +2 -2
package/lib.js
CHANGED
|
@@ -29,6 +29,11 @@ var OpenaiApi = (function () {
|
|
|
29
29
|
}
|
|
30
30
|
return headers;
|
|
31
31
|
}
|
|
32
|
+
|
|
33
|
+
setNodeRef(node){
|
|
34
|
+
this.node = node;
|
|
35
|
+
}
|
|
36
|
+
|
|
32
37
|
getFromEndpoint(path, parameters, expectedQueryParams, customHeaders) {
|
|
33
38
|
return new Promise((resolve, reject) => {
|
|
34
39
|
var domain = this.domain;
|
|
@@ -148,18 +153,37 @@ var OpenaiApi = (function () {
|
|
|
148
153
|
headers: headers,
|
|
149
154
|
params: queryParameters,
|
|
150
155
|
data: data,
|
|
156
|
+
responseType: data.stream === true ? "stream" : "json"
|
|
151
157
|
};
|
|
152
158
|
|
|
153
|
-
// Axios POST request
|
|
154
159
|
axios(config)
|
|
155
160
|
.then((response) => {
|
|
156
|
-
|
|
161
|
+
if (config.responseType === "stream") {
|
|
162
|
+
// Handle the stream response
|
|
163
|
+
response.data.on('data', (chunk) => {
|
|
164
|
+
// Convert chunk from Uint8Array to string
|
|
165
|
+
const chunkAsString = new TextDecoder().decode(chunk);
|
|
166
|
+
|
|
167
|
+
// Emit converted data chunks as Node-RED messages
|
|
168
|
+
this.node.send({ payload: chunkAsString });
|
|
169
|
+
}).on('end', () => {
|
|
170
|
+
// Handle the end of the stream
|
|
171
|
+
resolve({ payload: "Stream ended" });
|
|
172
|
+
}).on('error', (err) => {
|
|
173
|
+
// Handle any errors
|
|
174
|
+
reject(err);
|
|
175
|
+
});
|
|
176
|
+
} else {
|
|
177
|
+
// Handle non-stream response (e.g., JSON)
|
|
178
|
+
resolve(response);
|
|
179
|
+
}
|
|
157
180
|
})
|
|
158
181
|
.catch((error) => {
|
|
159
182
|
reject(error);
|
|
160
183
|
});
|
|
161
184
|
});
|
|
162
185
|
}
|
|
186
|
+
|
|
163
187
|
deleteFromEndpoint(path, parameters, expectedQueryParams, customHeaders) {
|
|
164
188
|
return new Promise((resolve, reject) => {
|
|
165
189
|
parameters = parameters || {};
|
|
@@ -291,14 +315,17 @@ var OpenaiApi = (function () {
|
|
|
291
315
|
}
|
|
292
316
|
deleteFile(parameters) {
|
|
293
317
|
const file_id = parameters.body.file_id;
|
|
318
|
+
delete parameters.body.file_id;
|
|
294
319
|
return this.deleteFromEndpoint(`/files/${file_id}`, parameters);
|
|
295
320
|
}
|
|
296
321
|
retrieveFile(parameters) {
|
|
297
322
|
const file_id = parameters.body.file_id;
|
|
323
|
+
delete parameters.body.file_id;
|
|
298
324
|
return this.getFromEndpoint(`/files/${file_id}`, parameters);
|
|
299
325
|
}
|
|
300
326
|
downloadFile(parameters) {
|
|
301
327
|
const file_id = parameters.body.file_id;
|
|
328
|
+
delete parameters.body.file_id;
|
|
302
329
|
return this.getFromEndpoint(`/files/${file_id}/content`, parameters);
|
|
303
330
|
}
|
|
304
331
|
createFineTuningJob(parameters) {
|
|
@@ -314,6 +341,7 @@ var OpenaiApi = (function () {
|
|
|
314
341
|
}
|
|
315
342
|
retrieveFineTuningJob(parameters) {
|
|
316
343
|
const fine_tuning_job_id = parameters.body.fine_tuning_job_id;
|
|
344
|
+
delete parameters.body.fine_tuning_job_id;
|
|
317
345
|
return this.getFromEndpoint(
|
|
318
346
|
`/fine_tuning/jobs/${fine_tuning_job_id}`,
|
|
319
347
|
parameters,
|
|
@@ -322,6 +350,7 @@ var OpenaiApi = (function () {
|
|
|
322
350
|
listFineTuningEvents(parameters) {
|
|
323
351
|
const expectedQueryParameters = ["after", "limit"];
|
|
324
352
|
const fine_tuning_job_id = parameters.body.fine_tuning_job_id;
|
|
353
|
+
delete parameters.body.fine_tuning_job_id;
|
|
325
354
|
|
|
326
355
|
return this.getFromEndpoint(
|
|
327
356
|
`/fine_tuning/jobs/${fine_tuning_job_id}/events`,
|
|
@@ -331,6 +360,7 @@ var OpenaiApi = (function () {
|
|
|
331
360
|
}
|
|
332
361
|
cancelFineTuningJob(parameters) {
|
|
333
362
|
const fine_tuning_job_id = parameters.body.fine_tuning_job_id;
|
|
363
|
+
delete parameters.body.fine_tuning_job_id;
|
|
334
364
|
return this.postToEndpoint(
|
|
335
365
|
`/fine_tuning/jobs/${fine_tuning_job_id}/cancel`,
|
|
336
366
|
parameters,
|
|
@@ -341,12 +371,12 @@ var OpenaiApi = (function () {
|
|
|
341
371
|
}
|
|
342
372
|
retrieveModel(parameters) {
|
|
343
373
|
const model = parameters.body.model;
|
|
344
|
-
|
|
374
|
+
delete parameters.body.model;
|
|
345
375
|
return this.getFromEndpoint(`/models/${model}`, parameters);
|
|
346
376
|
}
|
|
347
377
|
deleteModel(parameters) {
|
|
348
378
|
const model = parameters.body.model;
|
|
349
|
-
|
|
379
|
+
delete parameters.body.model;
|
|
350
380
|
return this.deleteFromEndpoint(`/models/${model}`, parameters);
|
|
351
381
|
}
|
|
352
382
|
createModeration(parameters) {
|
|
@@ -377,9 +407,8 @@ var OpenaiApi = (function () {
|
|
|
377
407
|
}
|
|
378
408
|
getAssistant(parameters) {
|
|
379
409
|
const assistantId = parameters.body.assistant_id;
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
410
|
+
const customHeaders = { "OpenAI-Beta": "assistants=v1" };
|
|
411
|
+
delete parameters.body.assistant_id;
|
|
383
412
|
return this.getFromEndpoint(
|
|
384
413
|
`/assistants/${assistantId}`,
|
|
385
414
|
parameters,
|
|
@@ -390,7 +419,7 @@ var OpenaiApi = (function () {
|
|
|
390
419
|
modifyAssistant(parameters) {
|
|
391
420
|
const assistant_id = parameters.body.assistant_id;
|
|
392
421
|
const customHeaders = { "OpenAI-Beta": "assistants=v1" };
|
|
393
|
-
|
|
422
|
+
delete parameters.body.assistant_id;
|
|
394
423
|
return this.postToEndpoint(
|
|
395
424
|
`/assistants/${assistant_id}`,
|
|
396
425
|
parameters,
|
|
@@ -403,7 +432,7 @@ var OpenaiApi = (function () {
|
|
|
403
432
|
deleteAssistant(parameters) {
|
|
404
433
|
const assistant_id = parameters.body.assistant_id;
|
|
405
434
|
const customHeaders = { "OpenAI-Beta": "assistants=v1" };
|
|
406
|
-
|
|
435
|
+
delete parameters.body.assistant_id;
|
|
407
436
|
return this.deleteFromEndpoint(
|
|
408
437
|
`/assistants/${assistant_id}`,
|
|
409
438
|
parameters,
|
|
@@ -425,7 +454,7 @@ var OpenaiApi = (function () {
|
|
|
425
454
|
getThread(parameters) {
|
|
426
455
|
const threadId = parameters.body.thread_id;
|
|
427
456
|
const customHeaders = { "OpenAI-Beta": "assistants=v1" };
|
|
428
|
-
|
|
457
|
+
delete parameters.body.thread_id;
|
|
429
458
|
return this.getFromEndpoint(
|
|
430
459
|
`/threads/${threadId}`,
|
|
431
460
|
parameters,
|
|
@@ -436,7 +465,7 @@ var OpenaiApi = (function () {
|
|
|
436
465
|
modifyThread(parameters) {
|
|
437
466
|
const threadId = parameters.body.thread_id;
|
|
438
467
|
const customHeaders = { "OpenAI-Beta": "assistants=v1" };
|
|
439
|
-
|
|
468
|
+
delete parameters.body.thread_id;
|
|
440
469
|
return this.postToEndpoint(
|
|
441
470
|
`/threads/${threadId}`,
|
|
442
471
|
parameters,
|
|
@@ -449,7 +478,7 @@ var OpenaiApi = (function () {
|
|
|
449
478
|
deleteThread(parameters) {
|
|
450
479
|
const threadId = parameters.body.thread_id;
|
|
451
480
|
const customHeaders = { "OpenAI-Beta": "assistants=v1" };
|
|
452
|
-
|
|
481
|
+
delete parameters.body.thread_id;
|
|
453
482
|
return this.deleteFromEndpoint(
|
|
454
483
|
`/threads/${threadId}`,
|
|
455
484
|
parameters,
|
|
@@ -460,9 +489,8 @@ var OpenaiApi = (function () {
|
|
|
460
489
|
listMessages(parameters) {
|
|
461
490
|
const threadId = parameters.body.thread_id;
|
|
462
491
|
const customHeaders = { "OpenAI-Beta": "assistants=v1" };
|
|
463
|
-
|
|
464
492
|
const expectedQueryParameters = ["limit", "order", "after", "before"];
|
|
465
|
-
|
|
493
|
+
delete parameters.body.thread_id;
|
|
466
494
|
return this.getFromEndpoint(
|
|
467
495
|
`/threads/${threadId}/messages`,
|
|
468
496
|
parameters,
|
|
@@ -473,7 +501,7 @@ var OpenaiApi = (function () {
|
|
|
473
501
|
createMessage(parameters) {
|
|
474
502
|
const threadId = parameters.body.thread_id;
|
|
475
503
|
const customHeaders = { "OpenAI-Beta": "assistants=v1" };
|
|
476
|
-
|
|
504
|
+
delete parameters.body.thread_id;
|
|
477
505
|
return this.postToEndpoint(
|
|
478
506
|
`/threads/${threadId}/messages`,
|
|
479
507
|
parameters,
|
|
@@ -487,7 +515,8 @@ var OpenaiApi = (function () {
|
|
|
487
515
|
const threadId = parameters.body.thread_id;
|
|
488
516
|
const messageId = parameters.body.message_id;
|
|
489
517
|
const customHeaders = { "OpenAI-Beta": "assistants=v1" };
|
|
490
|
-
|
|
518
|
+
delete parameters.body.thread_id;
|
|
519
|
+
delete parameters.body.message_id;
|
|
491
520
|
return this.getFromEndpoint(
|
|
492
521
|
`/threads/${threadId}/messages/${messageId}`,
|
|
493
522
|
parameters,
|
|
@@ -499,7 +528,8 @@ var OpenaiApi = (function () {
|
|
|
499
528
|
const threadId = parameters.body.thread_id;
|
|
500
529
|
const messageId = parameters.body.message_id;
|
|
501
530
|
const customHeaders = { "OpenAI-Beta": "assistants=v1" };
|
|
502
|
-
|
|
531
|
+
delete parameters.body.thread_id;
|
|
532
|
+
delete parameters.body.message_id;
|
|
503
533
|
return this.postToEndpoint(
|
|
504
534
|
`/threads/${threadId}/messages/${messageId}`,
|
|
505
535
|
parameters,
|
|
@@ -525,7 +555,7 @@ var OpenaiApi = (function () {
|
|
|
525
555
|
const customHeaders = { "OpenAI-Beta": "assistants=v1" };
|
|
526
556
|
const expectedQueryParameters = ["limit", "order", "after", "before"];
|
|
527
557
|
const threadId = parameters.body.thread_id;
|
|
528
|
-
|
|
558
|
+
delete parameters.body.thread_id;
|
|
529
559
|
return this.getFromEndpoint(
|
|
530
560
|
`/threads/${threadId}/runs`,
|
|
531
561
|
parameters,
|
|
@@ -536,7 +566,7 @@ var OpenaiApi = (function () {
|
|
|
536
566
|
createRun(parameters) {
|
|
537
567
|
const customHeaders = { "OpenAI-Beta": "assistants=v1" };
|
|
538
568
|
const threadId = parameters.body.thread_id;
|
|
539
|
-
|
|
569
|
+
delete parameters.body.thread_id;
|
|
540
570
|
return this.postToEndpoint(
|
|
541
571
|
`/threads/${threadId}/runs`,
|
|
542
572
|
parameters,
|
|
@@ -550,7 +580,8 @@ var OpenaiApi = (function () {
|
|
|
550
580
|
const customHeaders = { "OpenAI-Beta": "assistants=v1" };
|
|
551
581
|
const threadId = parameters.body.thread_id;
|
|
552
582
|
const runId = parameters.body.run_id;
|
|
553
|
-
|
|
583
|
+
delete parameters.body.thread_id;
|
|
584
|
+
delete parameters.body.run_id;
|
|
554
585
|
return this.getFromEndpoint(
|
|
555
586
|
`/threads/${threadId}/runs/${runId}`,
|
|
556
587
|
parameters,
|
|
@@ -562,7 +593,8 @@ var OpenaiApi = (function () {
|
|
|
562
593
|
const customHeaders = { "OpenAI-Beta": "assistants=v1" };
|
|
563
594
|
const threadId = parameters.body.thread_id;
|
|
564
595
|
const runId = parameters.body.run_id;
|
|
565
|
-
|
|
596
|
+
delete parameters.body.thread_id;
|
|
597
|
+
delete parameters.body.run_id;
|
|
566
598
|
return this.postToEndpoint(
|
|
567
599
|
`/threads/${threadId}/runs/${runId}`,
|
|
568
600
|
parameters,
|
|
@@ -576,7 +608,8 @@ var OpenaiApi = (function () {
|
|
|
576
608
|
const customHeaders = { "OpenAI-Beta": "assistants=v1" };
|
|
577
609
|
const threadId = parameters.body.thread_id;
|
|
578
610
|
const runId = parameters.body.run_id;
|
|
579
|
-
|
|
611
|
+
delete parameters.body.thread_id;
|
|
612
|
+
delete parameters.body.run_id;
|
|
580
613
|
return this.postToEndpoint(
|
|
581
614
|
`/threads/${threadId}/runs/${runId}/submit_tool_outputs`,
|
|
582
615
|
parameters,
|
|
@@ -590,7 +623,8 @@ var OpenaiApi = (function () {
|
|
|
590
623
|
const customHeaders = { "OpenAI-Beta": "assistants=v1" };
|
|
591
624
|
const threadId = parameters.body.thread_id;
|
|
592
625
|
const runId = parameters.body.run_id;
|
|
593
|
-
|
|
626
|
+
delete parameters.body.thread_id;
|
|
627
|
+
delete parameters.body.run_id;
|
|
594
628
|
return this.postToEndpoint(
|
|
595
629
|
`/threads/${threadId}/runs/${runId}/cancel`,
|
|
596
630
|
parameters,
|
|
@@ -605,7 +639,8 @@ var OpenaiApi = (function () {
|
|
|
605
639
|
const threadId = parameters.body.thread_id;
|
|
606
640
|
const runId = parameters.body.run_id;
|
|
607
641
|
const expectedQueryParameters = ["limit", "order", "after", "before"];
|
|
608
|
-
|
|
642
|
+
delete parameters.body.thread_id;
|
|
643
|
+
delete parameters.body.run_id;
|
|
609
644
|
return this.getFromEndpoint(
|
|
610
645
|
`/threads/${threadId}/runs/${runId}/steps`,
|
|
611
646
|
parameters,
|
|
@@ -618,7 +653,8 @@ var OpenaiApi = (function () {
|
|
|
618
653
|
const threadId = parameters.body.thread_id;
|
|
619
654
|
const runId = parameters.body.run_id;
|
|
620
655
|
const stepId = parameters.body.step_id;
|
|
621
|
-
|
|
656
|
+
delete parameters.body.thread_id;
|
|
657
|
+
delete parameters.body.step_id;
|
|
622
658
|
return this.getFromEndpoint(
|
|
623
659
|
`/threads/${threadId}/runs/${runId}/steps/${stepId}`,
|
|
624
660
|
parameters,
|
|
@@ -630,7 +666,7 @@ var OpenaiApi = (function () {
|
|
|
630
666
|
const customHeaders = { "OpenAI-Beta": "assistants=v1" };
|
|
631
667
|
const assistantId = parameters.body.assistant_id;
|
|
632
668
|
const expectedQueryParameters = ["limit", "order", "after", "before"];
|
|
633
|
-
|
|
669
|
+
delete parameters.body.assistant_id;
|
|
634
670
|
return this.getFromEndpoint(
|
|
635
671
|
`/assistants/${assistantId}/files`,
|
|
636
672
|
parameters,
|
|
@@ -641,7 +677,7 @@ var OpenaiApi = (function () {
|
|
|
641
677
|
createAssistantFile(parameters) {
|
|
642
678
|
const customHeaders = { "OpenAI-Beta": "assistants=v1" };
|
|
643
679
|
const assistantId = parameters.body.assistant_id;
|
|
644
|
-
|
|
680
|
+
delete parameters.body.assistant_id;
|
|
645
681
|
return this.postToEndpoint(
|
|
646
682
|
`/assistants/${assistantId}/files`,
|
|
647
683
|
parameters,
|
|
@@ -655,7 +691,8 @@ var OpenaiApi = (function () {
|
|
|
655
691
|
const customHeaders = { "OpenAI-Beta": "assistants=v1" };
|
|
656
692
|
const assistantId = parameters.body.assistant_id;
|
|
657
693
|
const fileId = parameters.body.file_id;
|
|
658
|
-
|
|
694
|
+
delete parameters.body.assistant_id;
|
|
695
|
+
delete parameters.body.file_id;
|
|
659
696
|
return this.getFromEndpoint(
|
|
660
697
|
`/assistants/${assistantId}/files/${fileId}`,
|
|
661
698
|
parameters,
|
|
@@ -667,7 +704,8 @@ var OpenaiApi = (function () {
|
|
|
667
704
|
const customHeaders = { "OpenAI-Beta": "assistants=v1" };
|
|
668
705
|
const assistantId = parameters.body.assistant_id;
|
|
669
706
|
const fileId = parameters.body.file_id;
|
|
670
|
-
|
|
707
|
+
delete parameters.body.assistant_id;
|
|
708
|
+
delete parameters.body.file_id;
|
|
671
709
|
return this.deleteFromEndpoint(
|
|
672
710
|
`/assistants/${assistantId}/files/${fileId}`,
|
|
673
711
|
parameters,
|
|
@@ -680,7 +718,8 @@ var OpenaiApi = (function () {
|
|
|
680
718
|
const threadId = parameters.body.thread_id;
|
|
681
719
|
const messageId = parameters.body.message_id;
|
|
682
720
|
const expectedQueryParameters = ["limit", "order", "after", "before"];
|
|
683
|
-
|
|
721
|
+
delete parameters.body.thread_id;
|
|
722
|
+
delete parameters.body.message_id;
|
|
684
723
|
return this.getFromEndpoint(
|
|
685
724
|
`/threads/${threadId}/messages/${messageId}/files`,
|
|
686
725
|
parameters,
|
|
@@ -693,7 +732,9 @@ var OpenaiApi = (function () {
|
|
|
693
732
|
const threadId = parameters.body.thread_id;
|
|
694
733
|
const messageId = parameters.body.message_id;
|
|
695
734
|
const fileId = parameters.body.file_id;
|
|
696
|
-
|
|
735
|
+
delete parameters.body.thread_id;
|
|
736
|
+
delete parameters.body.message_id;
|
|
737
|
+
delete parameters.body.file_id;
|
|
697
738
|
return this.getFromEndpoint(
|
|
698
739
|
`/threads/${threadId}/messages/${messageId}/files/${fileId}`,
|
|
699
740
|
parameters,
|
package/node.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@inductiv/node-red-openai-api",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.7",
|
|
4
4
|
"description": "Go beyond ChatGPT and DALL·E 3: this Node-RED node seamlessly integrates a range of OpenAI services, including Assistants, Threads, Vision, and Audio, enabling feature-rich enhancement of your AI workflows with any OpenAI REST API-compatible solution.",
|
|
5
5
|
"main": "node.js",
|
|
6
6
|
"engines": {
|
|
@@ -40,4 +40,4 @@
|
|
|
40
40
|
"type": "git",
|
|
41
41
|
"url": "git+https://github.com/allanbunch/node-red-openai-api.git"
|
|
42
42
|
}
|
|
43
|
-
}
|
|
43
|
+
}
|