@inductiv/node-red-openai-api 0.3.6 → 0.3.8
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 +96 -50
- package/locales/en-US/node.json +1 -0
- package/node.html +5 -0
- package/node.js +2 -0
- package/package.json +1 -1
package/lib.js
CHANGED
|
@@ -22,6 +22,11 @@ var OpenaiApi = (function () {
|
|
|
22
22
|
setApiBase(apiBase) {
|
|
23
23
|
this.domain = apiBase;
|
|
24
24
|
}
|
|
25
|
+
|
|
26
|
+
setOrganizationIdHeader(organizationId) {
|
|
27
|
+
this.organizationId = organizationId;
|
|
28
|
+
}
|
|
29
|
+
|
|
25
30
|
setAuthHeaders(headerParams) {
|
|
26
31
|
var headers = headerParams ? headerParams : {};
|
|
27
32
|
if (!this.apiKey.isQuery && this.apiKey.headerOrQueryName) {
|
|
@@ -30,18 +35,22 @@ var OpenaiApi = (function () {
|
|
|
30
35
|
return headers;
|
|
31
36
|
}
|
|
32
37
|
|
|
33
|
-
setNodeRef(node){
|
|
38
|
+
setNodeRef(node) {
|
|
34
39
|
this.node = node;
|
|
35
40
|
}
|
|
36
41
|
|
|
37
|
-
getFromEndpoint(path, parameters, expectedQueryParams, customHeaders) {
|
|
42
|
+
getFromEndpoint(path, parameters, expectedQueryParams, customHeaders = {}) {
|
|
38
43
|
return new Promise((resolve, reject) => {
|
|
39
44
|
var domain = this.domain;
|
|
40
|
-
var
|
|
41
|
-
|
|
45
|
+
var organizationId = this.organizationId;
|
|
46
|
+
var queryParameters = {};
|
|
47
|
+
var baseHeaders = {};
|
|
42
48
|
|
|
43
49
|
baseHeaders = this.setAuthHeaders(headers);
|
|
44
50
|
baseHeaders["Accept"] = "application/json";
|
|
51
|
+
if (organizationId) {
|
|
52
|
+
customHeaders["OpenAI-Organization"] = organizationId;
|
|
53
|
+
}
|
|
45
54
|
|
|
46
55
|
var headers = {
|
|
47
56
|
...baseHeaders,
|
|
@@ -78,26 +87,32 @@ var OpenaiApi = (function () {
|
|
|
78
87
|
});
|
|
79
88
|
});
|
|
80
89
|
}
|
|
90
|
+
|
|
81
91
|
postToEndpoint(
|
|
82
92
|
path,
|
|
83
93
|
parameters,
|
|
84
94
|
expectedQueryParams,
|
|
85
95
|
contentType,
|
|
86
96
|
filePath,
|
|
87
|
-
customHeaders,
|
|
97
|
+
customHeaders = {},
|
|
88
98
|
) {
|
|
89
99
|
return new Promise((resolve, reject) => {
|
|
90
100
|
const _path = require("path");
|
|
91
101
|
|
|
92
102
|
parameters = parameters || {};
|
|
93
103
|
var domain = this.domain;
|
|
104
|
+
var organizationId = this.organizationId;
|
|
94
105
|
var queryParameters = {},
|
|
95
106
|
baseHeaders = {},
|
|
96
107
|
data;
|
|
97
108
|
|
|
98
|
-
baseHeaders = this.setAuthHeaders(
|
|
109
|
+
baseHeaders = this.setAuthHeaders(baseHeaders);
|
|
99
110
|
baseHeaders["Accept"] = "application/json";
|
|
100
111
|
|
|
112
|
+
if (organizationId) {
|
|
113
|
+
customHeaders["OpenAI-Organization"] = organizationId;
|
|
114
|
+
}
|
|
115
|
+
|
|
101
116
|
var headers = {
|
|
102
117
|
...baseHeaders,
|
|
103
118
|
...customHeaders,
|
|
@@ -153,26 +168,29 @@ var OpenaiApi = (function () {
|
|
|
153
168
|
headers: headers,
|
|
154
169
|
params: queryParameters,
|
|
155
170
|
data: data,
|
|
156
|
-
responseType: data.stream === true ? "stream" : "json"
|
|
171
|
+
responseType: data.stream === true ? "stream" : "json",
|
|
157
172
|
};
|
|
158
173
|
|
|
159
174
|
axios(config)
|
|
160
175
|
.then((response) => {
|
|
161
176
|
if (config.responseType === "stream") {
|
|
162
177
|
// Handle the stream response
|
|
163
|
-
response.data
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
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
|
+
});
|
|
176
194
|
} else {
|
|
177
195
|
// Handle non-stream response (e.g., JSON)
|
|
178
196
|
resolve(response);
|
|
@@ -184,16 +202,26 @@ var OpenaiApi = (function () {
|
|
|
184
202
|
});
|
|
185
203
|
}
|
|
186
204
|
|
|
187
|
-
deleteFromEndpoint(
|
|
205
|
+
deleteFromEndpoint(
|
|
206
|
+
path,
|
|
207
|
+
parameters,
|
|
208
|
+
expectedQueryParams,
|
|
209
|
+
customHeaders = {},
|
|
210
|
+
) {
|
|
188
211
|
return new Promise((resolve, reject) => {
|
|
189
212
|
parameters = parameters || {};
|
|
190
213
|
var domain = this.domain;
|
|
214
|
+
var organizationId = this.organizationId;
|
|
191
215
|
var queryParameters = {},
|
|
192
216
|
baseHeaders = {};
|
|
193
217
|
|
|
194
218
|
baseHeaders = this.setAuthHeaders(headers);
|
|
195
219
|
baseHeaders["Accept"] = "application/json";
|
|
196
220
|
|
|
221
|
+
if (organizationId) {
|
|
222
|
+
customHeaders["OpenAI-Organization"] = organizationId;
|
|
223
|
+
}
|
|
224
|
+
|
|
197
225
|
var headers = {
|
|
198
226
|
...baseHeaders,
|
|
199
227
|
...customHeaders,
|
|
@@ -229,6 +257,7 @@ var OpenaiApi = (function () {
|
|
|
229
257
|
});
|
|
230
258
|
});
|
|
231
259
|
}
|
|
260
|
+
|
|
232
261
|
createChatCompletion(parameters) {
|
|
233
262
|
const response = this.postToEndpoint("/chat/completions", parameters);
|
|
234
263
|
return response;
|
|
@@ -315,14 +344,17 @@ var OpenaiApi = (function () {
|
|
|
315
344
|
}
|
|
316
345
|
deleteFile(parameters) {
|
|
317
346
|
const file_id = parameters.body.file_id;
|
|
347
|
+
delete parameters.body.file_id;
|
|
318
348
|
return this.deleteFromEndpoint(`/files/${file_id}`, parameters);
|
|
319
349
|
}
|
|
320
350
|
retrieveFile(parameters) {
|
|
321
351
|
const file_id = parameters.body.file_id;
|
|
352
|
+
delete parameters.body.file_id;
|
|
322
353
|
return this.getFromEndpoint(`/files/${file_id}`, parameters);
|
|
323
354
|
}
|
|
324
355
|
downloadFile(parameters) {
|
|
325
356
|
const file_id = parameters.body.file_id;
|
|
357
|
+
delete parameters.body.file_id;
|
|
326
358
|
return this.getFromEndpoint(`/files/${file_id}/content`, parameters);
|
|
327
359
|
}
|
|
328
360
|
createFineTuningJob(parameters) {
|
|
@@ -338,6 +370,7 @@ var OpenaiApi = (function () {
|
|
|
338
370
|
}
|
|
339
371
|
retrieveFineTuningJob(parameters) {
|
|
340
372
|
const fine_tuning_job_id = parameters.body.fine_tuning_job_id;
|
|
373
|
+
delete parameters.body.fine_tuning_job_id;
|
|
341
374
|
return this.getFromEndpoint(
|
|
342
375
|
`/fine_tuning/jobs/${fine_tuning_job_id}`,
|
|
343
376
|
parameters,
|
|
@@ -346,6 +379,7 @@ var OpenaiApi = (function () {
|
|
|
346
379
|
listFineTuningEvents(parameters) {
|
|
347
380
|
const expectedQueryParameters = ["after", "limit"];
|
|
348
381
|
const fine_tuning_job_id = parameters.body.fine_tuning_job_id;
|
|
382
|
+
delete parameters.body.fine_tuning_job_id;
|
|
349
383
|
|
|
350
384
|
return this.getFromEndpoint(
|
|
351
385
|
`/fine_tuning/jobs/${fine_tuning_job_id}/events`,
|
|
@@ -355,6 +389,7 @@ var OpenaiApi = (function () {
|
|
|
355
389
|
}
|
|
356
390
|
cancelFineTuningJob(parameters) {
|
|
357
391
|
const fine_tuning_job_id = parameters.body.fine_tuning_job_id;
|
|
392
|
+
delete parameters.body.fine_tuning_job_id;
|
|
358
393
|
return this.postToEndpoint(
|
|
359
394
|
`/fine_tuning/jobs/${fine_tuning_job_id}/cancel`,
|
|
360
395
|
parameters,
|
|
@@ -365,12 +400,12 @@ var OpenaiApi = (function () {
|
|
|
365
400
|
}
|
|
366
401
|
retrieveModel(parameters) {
|
|
367
402
|
const model = parameters.body.model;
|
|
368
|
-
|
|
403
|
+
delete parameters.body.model;
|
|
369
404
|
return this.getFromEndpoint(`/models/${model}`, parameters);
|
|
370
405
|
}
|
|
371
406
|
deleteModel(parameters) {
|
|
372
407
|
const model = parameters.body.model;
|
|
373
|
-
|
|
408
|
+
delete parameters.body.model;
|
|
374
409
|
return this.deleteFromEndpoint(`/models/${model}`, parameters);
|
|
375
410
|
}
|
|
376
411
|
createModeration(parameters) {
|
|
@@ -401,9 +436,8 @@ var OpenaiApi = (function () {
|
|
|
401
436
|
}
|
|
402
437
|
getAssistant(parameters) {
|
|
403
438
|
const assistantId = parameters.body.assistant_id;
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
439
|
+
const customHeaders = { "OpenAI-Beta": "assistants=v1" };
|
|
440
|
+
delete parameters.body.assistant_id;
|
|
407
441
|
return this.getFromEndpoint(
|
|
408
442
|
`/assistants/${assistantId}`,
|
|
409
443
|
parameters,
|
|
@@ -414,7 +448,7 @@ var OpenaiApi = (function () {
|
|
|
414
448
|
modifyAssistant(parameters) {
|
|
415
449
|
const assistant_id = parameters.body.assistant_id;
|
|
416
450
|
const customHeaders = { "OpenAI-Beta": "assistants=v1" };
|
|
417
|
-
|
|
451
|
+
delete parameters.body.assistant_id;
|
|
418
452
|
return this.postToEndpoint(
|
|
419
453
|
`/assistants/${assistant_id}`,
|
|
420
454
|
parameters,
|
|
@@ -427,7 +461,7 @@ var OpenaiApi = (function () {
|
|
|
427
461
|
deleteAssistant(parameters) {
|
|
428
462
|
const assistant_id = parameters.body.assistant_id;
|
|
429
463
|
const customHeaders = { "OpenAI-Beta": "assistants=v1" };
|
|
430
|
-
|
|
464
|
+
delete parameters.body.assistant_id;
|
|
431
465
|
return this.deleteFromEndpoint(
|
|
432
466
|
`/assistants/${assistant_id}`,
|
|
433
467
|
parameters,
|
|
@@ -449,7 +483,7 @@ var OpenaiApi = (function () {
|
|
|
449
483
|
getThread(parameters) {
|
|
450
484
|
const threadId = parameters.body.thread_id;
|
|
451
485
|
const customHeaders = { "OpenAI-Beta": "assistants=v1" };
|
|
452
|
-
|
|
486
|
+
delete parameters.body.thread_id;
|
|
453
487
|
return this.getFromEndpoint(
|
|
454
488
|
`/threads/${threadId}`,
|
|
455
489
|
parameters,
|
|
@@ -460,7 +494,7 @@ var OpenaiApi = (function () {
|
|
|
460
494
|
modifyThread(parameters) {
|
|
461
495
|
const threadId = parameters.body.thread_id;
|
|
462
496
|
const customHeaders = { "OpenAI-Beta": "assistants=v1" };
|
|
463
|
-
|
|
497
|
+
delete parameters.body.thread_id;
|
|
464
498
|
return this.postToEndpoint(
|
|
465
499
|
`/threads/${threadId}`,
|
|
466
500
|
parameters,
|
|
@@ -473,7 +507,7 @@ var OpenaiApi = (function () {
|
|
|
473
507
|
deleteThread(parameters) {
|
|
474
508
|
const threadId = parameters.body.thread_id;
|
|
475
509
|
const customHeaders = { "OpenAI-Beta": "assistants=v1" };
|
|
476
|
-
|
|
510
|
+
delete parameters.body.thread_id;
|
|
477
511
|
return this.deleteFromEndpoint(
|
|
478
512
|
`/threads/${threadId}`,
|
|
479
513
|
parameters,
|
|
@@ -484,9 +518,8 @@ var OpenaiApi = (function () {
|
|
|
484
518
|
listMessages(parameters) {
|
|
485
519
|
const threadId = parameters.body.thread_id;
|
|
486
520
|
const customHeaders = { "OpenAI-Beta": "assistants=v1" };
|
|
487
|
-
|
|
488
521
|
const expectedQueryParameters = ["limit", "order", "after", "before"];
|
|
489
|
-
|
|
522
|
+
delete parameters.body.thread_id;
|
|
490
523
|
return this.getFromEndpoint(
|
|
491
524
|
`/threads/${threadId}/messages`,
|
|
492
525
|
parameters,
|
|
@@ -497,7 +530,7 @@ var OpenaiApi = (function () {
|
|
|
497
530
|
createMessage(parameters) {
|
|
498
531
|
const threadId = parameters.body.thread_id;
|
|
499
532
|
const customHeaders = { "OpenAI-Beta": "assistants=v1" };
|
|
500
|
-
|
|
533
|
+
delete parameters.body.thread_id;
|
|
501
534
|
return this.postToEndpoint(
|
|
502
535
|
`/threads/${threadId}/messages`,
|
|
503
536
|
parameters,
|
|
@@ -511,7 +544,8 @@ var OpenaiApi = (function () {
|
|
|
511
544
|
const threadId = parameters.body.thread_id;
|
|
512
545
|
const messageId = parameters.body.message_id;
|
|
513
546
|
const customHeaders = { "OpenAI-Beta": "assistants=v1" };
|
|
514
|
-
|
|
547
|
+
delete parameters.body.thread_id;
|
|
548
|
+
delete parameters.body.message_id;
|
|
515
549
|
return this.getFromEndpoint(
|
|
516
550
|
`/threads/${threadId}/messages/${messageId}`,
|
|
517
551
|
parameters,
|
|
@@ -523,7 +557,8 @@ var OpenaiApi = (function () {
|
|
|
523
557
|
const threadId = parameters.body.thread_id;
|
|
524
558
|
const messageId = parameters.body.message_id;
|
|
525
559
|
const customHeaders = { "OpenAI-Beta": "assistants=v1" };
|
|
526
|
-
|
|
560
|
+
delete parameters.body.thread_id;
|
|
561
|
+
delete parameters.body.message_id;
|
|
527
562
|
return this.postToEndpoint(
|
|
528
563
|
`/threads/${threadId}/messages/${messageId}`,
|
|
529
564
|
parameters,
|
|
@@ -549,7 +584,7 @@ var OpenaiApi = (function () {
|
|
|
549
584
|
const customHeaders = { "OpenAI-Beta": "assistants=v1" };
|
|
550
585
|
const expectedQueryParameters = ["limit", "order", "after", "before"];
|
|
551
586
|
const threadId = parameters.body.thread_id;
|
|
552
|
-
|
|
587
|
+
delete parameters.body.thread_id;
|
|
553
588
|
return this.getFromEndpoint(
|
|
554
589
|
`/threads/${threadId}/runs`,
|
|
555
590
|
parameters,
|
|
@@ -560,7 +595,7 @@ var OpenaiApi = (function () {
|
|
|
560
595
|
createRun(parameters) {
|
|
561
596
|
const customHeaders = { "OpenAI-Beta": "assistants=v1" };
|
|
562
597
|
const threadId = parameters.body.thread_id;
|
|
563
|
-
|
|
598
|
+
delete parameters.body.thread_id;
|
|
564
599
|
return this.postToEndpoint(
|
|
565
600
|
`/threads/${threadId}/runs`,
|
|
566
601
|
parameters,
|
|
@@ -574,7 +609,8 @@ var OpenaiApi = (function () {
|
|
|
574
609
|
const customHeaders = { "OpenAI-Beta": "assistants=v1" };
|
|
575
610
|
const threadId = parameters.body.thread_id;
|
|
576
611
|
const runId = parameters.body.run_id;
|
|
577
|
-
|
|
612
|
+
delete parameters.body.thread_id;
|
|
613
|
+
delete parameters.body.run_id;
|
|
578
614
|
return this.getFromEndpoint(
|
|
579
615
|
`/threads/${threadId}/runs/${runId}`,
|
|
580
616
|
parameters,
|
|
@@ -586,7 +622,8 @@ var OpenaiApi = (function () {
|
|
|
586
622
|
const customHeaders = { "OpenAI-Beta": "assistants=v1" };
|
|
587
623
|
const threadId = parameters.body.thread_id;
|
|
588
624
|
const runId = parameters.body.run_id;
|
|
589
|
-
|
|
625
|
+
delete parameters.body.thread_id;
|
|
626
|
+
delete parameters.body.run_id;
|
|
590
627
|
return this.postToEndpoint(
|
|
591
628
|
`/threads/${threadId}/runs/${runId}`,
|
|
592
629
|
parameters,
|
|
@@ -600,7 +637,8 @@ var OpenaiApi = (function () {
|
|
|
600
637
|
const customHeaders = { "OpenAI-Beta": "assistants=v1" };
|
|
601
638
|
const threadId = parameters.body.thread_id;
|
|
602
639
|
const runId = parameters.body.run_id;
|
|
603
|
-
|
|
640
|
+
delete parameters.body.thread_id;
|
|
641
|
+
delete parameters.body.run_id;
|
|
604
642
|
return this.postToEndpoint(
|
|
605
643
|
`/threads/${threadId}/runs/${runId}/submit_tool_outputs`,
|
|
606
644
|
parameters,
|
|
@@ -614,7 +652,8 @@ var OpenaiApi = (function () {
|
|
|
614
652
|
const customHeaders = { "OpenAI-Beta": "assistants=v1" };
|
|
615
653
|
const threadId = parameters.body.thread_id;
|
|
616
654
|
const runId = parameters.body.run_id;
|
|
617
|
-
|
|
655
|
+
delete parameters.body.thread_id;
|
|
656
|
+
delete parameters.body.run_id;
|
|
618
657
|
return this.postToEndpoint(
|
|
619
658
|
`/threads/${threadId}/runs/${runId}/cancel`,
|
|
620
659
|
parameters,
|
|
@@ -629,7 +668,8 @@ var OpenaiApi = (function () {
|
|
|
629
668
|
const threadId = parameters.body.thread_id;
|
|
630
669
|
const runId = parameters.body.run_id;
|
|
631
670
|
const expectedQueryParameters = ["limit", "order", "after", "before"];
|
|
632
|
-
|
|
671
|
+
delete parameters.body.thread_id;
|
|
672
|
+
delete parameters.body.run_id;
|
|
633
673
|
return this.getFromEndpoint(
|
|
634
674
|
`/threads/${threadId}/runs/${runId}/steps`,
|
|
635
675
|
parameters,
|
|
@@ -642,7 +682,8 @@ var OpenaiApi = (function () {
|
|
|
642
682
|
const threadId = parameters.body.thread_id;
|
|
643
683
|
const runId = parameters.body.run_id;
|
|
644
684
|
const stepId = parameters.body.step_id;
|
|
645
|
-
|
|
685
|
+
delete parameters.body.thread_id;
|
|
686
|
+
delete parameters.body.step_id;
|
|
646
687
|
return this.getFromEndpoint(
|
|
647
688
|
`/threads/${threadId}/runs/${runId}/steps/${stepId}`,
|
|
648
689
|
parameters,
|
|
@@ -654,7 +695,7 @@ var OpenaiApi = (function () {
|
|
|
654
695
|
const customHeaders = { "OpenAI-Beta": "assistants=v1" };
|
|
655
696
|
const assistantId = parameters.body.assistant_id;
|
|
656
697
|
const expectedQueryParameters = ["limit", "order", "after", "before"];
|
|
657
|
-
|
|
698
|
+
delete parameters.body.assistant_id;
|
|
658
699
|
return this.getFromEndpoint(
|
|
659
700
|
`/assistants/${assistantId}/files`,
|
|
660
701
|
parameters,
|
|
@@ -665,7 +706,7 @@ var OpenaiApi = (function () {
|
|
|
665
706
|
createAssistantFile(parameters) {
|
|
666
707
|
const customHeaders = { "OpenAI-Beta": "assistants=v1" };
|
|
667
708
|
const assistantId = parameters.body.assistant_id;
|
|
668
|
-
|
|
709
|
+
delete parameters.body.assistant_id;
|
|
669
710
|
return this.postToEndpoint(
|
|
670
711
|
`/assistants/${assistantId}/files`,
|
|
671
712
|
parameters,
|
|
@@ -679,7 +720,8 @@ var OpenaiApi = (function () {
|
|
|
679
720
|
const customHeaders = { "OpenAI-Beta": "assistants=v1" };
|
|
680
721
|
const assistantId = parameters.body.assistant_id;
|
|
681
722
|
const fileId = parameters.body.file_id;
|
|
682
|
-
|
|
723
|
+
delete parameters.body.assistant_id;
|
|
724
|
+
delete parameters.body.file_id;
|
|
683
725
|
return this.getFromEndpoint(
|
|
684
726
|
`/assistants/${assistantId}/files/${fileId}`,
|
|
685
727
|
parameters,
|
|
@@ -691,7 +733,8 @@ var OpenaiApi = (function () {
|
|
|
691
733
|
const customHeaders = { "OpenAI-Beta": "assistants=v1" };
|
|
692
734
|
const assistantId = parameters.body.assistant_id;
|
|
693
735
|
const fileId = parameters.body.file_id;
|
|
694
|
-
|
|
736
|
+
delete parameters.body.assistant_id;
|
|
737
|
+
delete parameters.body.file_id;
|
|
695
738
|
return this.deleteFromEndpoint(
|
|
696
739
|
`/assistants/${assistantId}/files/${fileId}`,
|
|
697
740
|
parameters,
|
|
@@ -704,7 +747,8 @@ var OpenaiApi = (function () {
|
|
|
704
747
|
const threadId = parameters.body.thread_id;
|
|
705
748
|
const messageId = parameters.body.message_id;
|
|
706
749
|
const expectedQueryParameters = ["limit", "order", "after", "before"];
|
|
707
|
-
|
|
750
|
+
delete parameters.body.thread_id;
|
|
751
|
+
delete parameters.body.message_id;
|
|
708
752
|
return this.getFromEndpoint(
|
|
709
753
|
`/threads/${threadId}/messages/${messageId}/files`,
|
|
710
754
|
parameters,
|
|
@@ -717,7 +761,9 @@ var OpenaiApi = (function () {
|
|
|
717
761
|
const threadId = parameters.body.thread_id;
|
|
718
762
|
const messageId = parameters.body.message_id;
|
|
719
763
|
const fileId = parameters.body.file_id;
|
|
720
|
-
|
|
764
|
+
delete parameters.body.thread_id;
|
|
765
|
+
delete parameters.body.message_id;
|
|
766
|
+
delete parameters.body.file_id;
|
|
721
767
|
return this.getFromEndpoint(
|
|
722
768
|
`/threads/${threadId}/messages/${messageId}/files/${fileId}`,
|
|
723
769
|
parameters,
|
package/locales/en-US/node.json
CHANGED
package/node.html
CHANGED
|
@@ -715,6 +715,7 @@
|
|
|
715
715
|
defaults: {
|
|
716
716
|
apiBase: { value: "https://api.openai.com/v1", required: true },
|
|
717
717
|
secureApiKeyHeaderOrQueryName: { value: "Authorization" },
|
|
718
|
+
organizationId: { value: "" },
|
|
718
719
|
secureApiKeyIsQuery: { value: false },
|
|
719
720
|
name: { value: "" },
|
|
720
721
|
},
|
|
@@ -753,6 +754,10 @@
|
|
|
753
754
|
<label id="node-config-input-secureApiKeyValue-label" for="node-config-input-secureApiKeyValue"><i class="fa fa-lock"></i> <span data-i18n="OpenaiApi.label.apiKey"></span></label>
|
|
754
755
|
<input type="password" id="node-config-input-secureApiKeyValue" placeholder="">
|
|
755
756
|
</div>
|
|
757
|
+
<div class="form-row">
|
|
758
|
+
<label id="node-config-input-organizationId-label" for="node-config-input-organizationId"><i class="fa fa-list"></i> <span data-i18n="OpenaiApi.label.organizationId"></span></label>
|
|
759
|
+
<input type="text" id="node-config-input-organizationId" placeholder="OpenAI Organization Id">
|
|
760
|
+
</div>
|
|
756
761
|
<div class="form-row">
|
|
757
762
|
<label id="node-config-input-secureApiKeyIsQuery-label" for="node-config-input-secureApiKeyIsQuery"><i class="fa fa-dot-circle-o"></i> <span data-i18n="OpenaiApi.label.isQuery"></span></label>
|
|
758
763
|
<select id="node-config-input-secureApiKeyIsQuery">
|
package/node.js
CHANGED
|
@@ -15,6 +15,7 @@ module.exports = function (RED) {
|
|
|
15
15
|
let client = new lib.OpenaiApi();
|
|
16
16
|
if (!errorFlag && this.service) {
|
|
17
17
|
client.setApiBase(this.service.apiBase);
|
|
18
|
+
client.setOrganizationIdHeader(this.service.organizationId);
|
|
18
19
|
}
|
|
19
20
|
|
|
20
21
|
if (!errorFlag && this.service && this.service.credentials && this.service.credentials.secureApiKeyValue) {
|
|
@@ -99,6 +100,7 @@ module.exports = function (RED) {
|
|
|
99
100
|
this.apiBase = n.apiBase;
|
|
100
101
|
this.secureApiKeyHeaderOrQueryName = n.secureApiKeyHeaderOrQueryName;
|
|
101
102
|
this.secureApiKeyIsQuery = n.secureApiKeyIsQuery;
|
|
103
|
+
this.organizationId = n.organizationId;
|
|
102
104
|
}
|
|
103
105
|
}
|
|
104
106
|
|
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.8",
|
|
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": {
|