@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.
Files changed (3) hide show
  1. package/lib.js +72 -31
  2. package/node.js +4 -0
  3. 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
- resolve(response);
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
- var customHeaders = { "OpenAI-Beta": "assistants=v1" };
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
@@ -27,6 +27,10 @@ module.exports = function (RED) {
27
27
  }
28
28
  }
29
29
 
30
+ if (!errorFlag){
31
+ client.setNodeRef(node);
32
+ }
33
+
30
34
  if (!errorFlag) {
31
35
  client.body = msg.payload;
32
36
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@inductiv/node-red-openai-api",
3
- "version": "0.3.5",
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
+ }