lwdgit commited on
Commit
f61b332
·
1 Parent(s): 85be53d

feat: 接入chatgpt

Browse files
.editorconfig ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # http://editorconfig.org
2
+ root = true
3
+
4
+ [*]
5
+ indent_style = space
6
+ indent_size = 2
7
+ end_of_line = lf
8
+ charset = utf-8
9
+ trim_trailing_whitespace = true
10
+ insert_final_newline = true
11
+
12
+ # Use 4 spaces for the Python files
13
+ [*.py]
14
+ indent_size = 4
15
+ max_line_length = 80
16
+
17
+ # The JSON files contain newlines inconsistently
18
+ [*.json]
19
+ insert_final_newline = ignore
20
+
21
+ # Minified JavaScript files shouldn't be changed
22
+ [**.min.js]
23
+ indent_style = ignore
24
+ insert_final_newline = ignore
25
+
26
+ # Makefiles always use tabs for indentation
27
+ [Makefile]
28
+ indent_style = tab
29
+
30
+ # Batch files use tabs for indentation
31
+ [*.bat]
32
+ indent_style = tab
33
+
34
+ [*.md]
35
+ trim_trailing_whitespace = false
36
+
package-lock.json CHANGED
@@ -16,6 +16,7 @@
16
  "dotenv": "^16.3.1",
17
  "eslint": "8.44.0",
18
  "eslint-config-next": "13.4.9",
 
19
  "gradio-chatbot": "^0.0.9",
20
  "next": "13.4.9",
21
  "postcss": "8.4.25",
@@ -563,6 +564,18 @@
563
  "url": "https://opencollective.com/typescript-eslint"
564
  }
565
  },
 
 
 
 
 
 
 
 
 
 
 
 
566
  "node_modules/acorn": {
567
  "version": "8.10.0",
568
  "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz",
@@ -677,6 +690,11 @@
677
  "url": "https://github.com/sponsors/ljharb"
678
  }
679
  },
 
 
 
 
 
680
  "node_modules/array-includes": {
681
  "version": "3.1.6",
682
  "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz",
@@ -834,6 +852,42 @@
834
  "node": ">=8"
835
  }
836
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
837
  "node_modules/bplist-parser": {
838
  "version": "0.2.0",
839
  "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz",
@@ -921,6 +975,14 @@
921
  "node": ">=10.16.0"
922
  }
923
  },
 
 
 
 
 
 
 
 
924
  "node_modules/call-bind": {
925
  "version": "1.0.2",
926
  "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
@@ -1054,6 +1116,38 @@
1054
  "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
1055
  "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
1056
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1057
  "node_modules/cross-spawn": {
1058
  "version": "7.0.3",
1059
  "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
@@ -1167,6 +1261,14 @@
1167
  "url": "https://github.com/sponsors/ljharb"
1168
  }
1169
  },
 
 
 
 
 
 
 
 
1170
  "node_modules/dequal": {
1171
  "version": "2.0.3",
1172
  "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz",
@@ -1175,6 +1277,15 @@
1175
  "node": ">=6"
1176
  }
1177
  },
 
 
 
 
 
 
 
 
 
1178
  "node_modules/didyoumean": {
1179
  "version": "1.2.2",
1180
  "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz",
@@ -1223,6 +1334,11 @@
1223
  "url": "https://github.com/motdotla/dotenv?sponsor=1"
1224
  }
1225
  },
 
 
 
 
 
1226
  "node_modules/electron-to-chromium": {
1227
  "version": "1.4.459",
1228
  "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.459.tgz",
@@ -1233,6 +1349,14 @@
1233
  "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
1234
  "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="
1235
  },
 
 
 
 
 
 
 
 
1236
  "node_modules/enhanced-resolve": {
1237
  "version": "5.15.0",
1238
  "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz",
@@ -1338,6 +1462,11 @@
1338
  "node": ">=6"
1339
  }
1340
  },
 
 
 
 
 
1341
  "node_modules/escape-string-regexp": {
1342
  "version": "4.0.0",
1343
  "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
@@ -1771,6 +1900,14 @@
1771
  "node": ">=0.10.0"
1772
  }
1773
  },
 
 
 
 
 
 
 
 
1774
  "node_modules/execa": {
1775
  "version": "7.1.1",
1776
  "resolved": "https://registry.npmjs.org/execa/-/execa-7.1.1.tgz",
@@ -1793,6 +1930,60 @@
1793
  "url": "https://github.com/sindresorhus/execa?sponsor=1"
1794
  }
1795
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1796
  "node_modules/fast-deep-equal": {
1797
  "version": "3.1.3",
1798
  "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
@@ -1864,6 +2055,36 @@
1864
  "node": ">=8"
1865
  }
1866
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1867
  "node_modules/find-up": {
1868
  "version": "5.0.0",
1869
  "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
@@ -1904,6 +2125,14 @@
1904
  "is-callable": "^1.1.3"
1905
  }
1906
  },
 
 
 
 
 
 
 
 
1907
  "node_modules/fraction.js": {
1908
  "version": "4.2.0",
1909
  "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz",
@@ -1916,6 +2145,14 @@
1916
  "url": "https://www.patreon.com/infusion"
1917
  }
1918
  },
 
 
 
 
 
 
 
 
1919
  "node_modules/fs.realpath": {
1920
  "version": "1.0.0",
1921
  "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
@@ -2108,6 +2345,31 @@
2108
  "url": "https://github.com/sponsors/ljharb"
2109
  }
2110
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2111
  "node_modules/graceful-fs": {
2112
  "version": "4.2.11",
2113
  "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
@@ -2212,6 +2474,21 @@
2212
  "url": "https://github.com/sponsors/ljharb"
2213
  }
2214
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2215
  "node_modules/https-proxy-agent": {
2216
  "version": "7.0.1",
2217
  "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.1.tgz",
@@ -2232,6 +2509,17 @@
2232
  "node": ">=14.18.0"
2233
  }
2234
  },
 
 
 
 
 
 
 
 
 
 
 
2235
  "node_modules/ignore": {
2236
  "version": "5.2.4",
2237
  "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz",
@@ -2290,6 +2578,14 @@
2290
  "node": ">= 0.4"
2291
  }
2292
  },
 
 
 
 
 
 
 
 
2293
  "node_modules/is-array-buffer": {
2294
  "version": "3.0.2",
2295
  "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz",
@@ -2729,6 +3025,19 @@
2729
  "node": ">=10"
2730
  }
2731
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
2732
  "node_modules/merge-stream": {
2733
  "version": "2.0.0",
2734
  "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
@@ -2742,6 +3051,14 @@
2742
  "node": ">= 8"
2743
  }
2744
  },
 
 
 
 
 
 
 
 
2745
  "node_modules/micromatch": {
2746
  "version": "4.0.5",
2747
  "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
@@ -2754,6 +3071,36 @@
2754
  "node": ">=8.6"
2755
  }
2756
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2757
  "node_modules/mimic-fn": {
2758
  "version": "4.0.0",
2759
  "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz",
@@ -2821,6 +3168,14 @@
2821
  "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
2822
  "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw=="
2823
  },
 
 
 
 
 
 
 
 
2824
  "node_modules/next": {
2825
  "version": "13.4.9",
2826
  "resolved": "https://registry.npmjs.org/next/-/next-13.4.9.tgz",
@@ -3046,6 +3401,17 @@
3046
  "url": "https://github.com/sponsors/ljharb"
3047
  }
3048
  },
 
 
 
 
 
 
 
 
 
 
 
3049
  "node_modules/once": {
3050
  "version": "1.4.0",
3051
  "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
@@ -3140,6 +3506,14 @@
3140
  "node": ">=6"
3141
  }
3142
  },
 
 
 
 
 
 
 
 
3143
  "node_modules/path-exists": {
3144
  "version": "4.0.0",
3145
  "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
@@ -3169,6 +3543,11 @@
3169
  "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
3170
  "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
3171
  },
 
 
 
 
 
3172
  "node_modules/path-type": {
3173
  "version": "4.0.0",
3174
  "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
@@ -3351,6 +3730,18 @@
3351
  "react-is": "^16.13.1"
3352
  }
3353
  },
 
 
 
 
 
 
 
 
 
 
 
 
3354
  "node_modules/punycode": {
3355
  "version": "2.3.0",
3356
  "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz",
@@ -3359,6 +3750,20 @@
3359
  "node": ">=6"
3360
  }
3361
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3362
  "node_modules/queue-microtask": {
3363
  "version": "1.2.3",
3364
  "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
@@ -3378,6 +3783,28 @@
3378
  }
3379
  ]
3380
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3381
  "node_modules/react": {
3382
  "version": "18.2.0",
3383
  "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz",
@@ -3619,6 +4046,25 @@
3619
  "queue-microtask": "^1.2.2"
3620
  }
3621
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3622
  "node_modules/safe-regex-test": {
3623
  "version": "1.0.0",
3624
  "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz",
@@ -3632,6 +4078,11 @@
3632
  "url": "https://github.com/sponsors/ljharb"
3633
  }
3634
  },
 
 
 
 
 
3635
  "node_modules/scheduler": {
3636
  "version": "0.23.0",
3637
  "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz",
@@ -3662,6 +4113,66 @@
3662
  "node": ">=10"
3663
  }
3664
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3665
  "node_modules/shebang-command": {
3666
  "version": "2.0.0",
3667
  "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
@@ -3715,6 +4226,14 @@
3715
  "node": ">=0.10.0"
3716
  }
3717
  },
 
 
 
 
 
 
 
 
3718
  "node_modules/streamsearch": {
3719
  "version": "1.1.0",
3720
  "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz",
@@ -4014,6 +4533,14 @@
4014
  "node": ">=8.0"
4015
  }
4016
  },
 
 
 
 
 
 
 
 
4017
  "node_modules/ts-interface-checker": {
4018
  "version": "0.1.13",
4019
  "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz",
@@ -4076,6 +4603,18 @@
4076
  "url": "https://github.com/sponsors/sindresorhus"
4077
  }
4078
  },
 
 
 
 
 
 
 
 
 
 
 
 
4079
  "node_modules/typed-array-byte-offset": {
4080
  "version": "1.0.0",
4081
  "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz",
@@ -4144,6 +4683,14 @@
4144
  "node": ">=14.0"
4145
  }
4146
  },
 
 
 
 
 
 
 
 
4147
  "node_modules/untildify": {
4148
  "version": "4.0.0",
4149
  "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz",
@@ -4194,6 +4741,22 @@
4194
  "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
4195
  "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
4196
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4197
  "node_modules/watchpack": {
4198
  "version": "2.4.0",
4199
  "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz",
 
16
  "dotenv": "^16.3.1",
17
  "eslint": "8.44.0",
18
  "eslint-config-next": "13.4.9",
19
+ "gpt-web": "^0.0.3",
20
  "gradio-chatbot": "^0.0.9",
21
  "next": "13.4.9",
22
  "postcss": "8.4.25",
 
564
  "url": "https://opencollective.com/typescript-eslint"
565
  }
566
  },
567
+ "node_modules/accepts": {
568
+ "version": "1.3.8",
569
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
570
+ "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
571
+ "dependencies": {
572
+ "mime-types": "~2.1.34",
573
+ "negotiator": "0.6.3"
574
+ },
575
+ "engines": {
576
+ "node": ">= 0.6"
577
+ }
578
+ },
579
  "node_modules/acorn": {
580
  "version": "8.10.0",
581
  "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz",
 
690
  "url": "https://github.com/sponsors/ljharb"
691
  }
692
  },
693
+ "node_modules/array-flatten": {
694
+ "version": "1.1.1",
695
+ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
696
+ "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
697
+ },
698
  "node_modules/array-includes": {
699
  "version": "3.1.6",
700
  "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz",
 
852
  "node": ">=8"
853
  }
854
  },
855
+ "node_modules/body-parser": {
856
+ "version": "1.20.1",
857
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz",
858
+ "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==",
859
+ "dependencies": {
860
+ "bytes": "3.1.2",
861
+ "content-type": "~1.0.4",
862
+ "debug": "2.6.9",
863
+ "depd": "2.0.0",
864
+ "destroy": "1.2.0",
865
+ "http-errors": "2.0.0",
866
+ "iconv-lite": "0.4.24",
867
+ "on-finished": "2.4.1",
868
+ "qs": "6.11.0",
869
+ "raw-body": "2.5.1",
870
+ "type-is": "~1.6.18",
871
+ "unpipe": "1.0.0"
872
+ },
873
+ "engines": {
874
+ "node": ">= 0.8",
875
+ "npm": "1.2.8000 || >= 1.4.16"
876
+ }
877
+ },
878
+ "node_modules/body-parser/node_modules/debug": {
879
+ "version": "2.6.9",
880
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
881
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
882
+ "dependencies": {
883
+ "ms": "2.0.0"
884
+ }
885
+ },
886
+ "node_modules/body-parser/node_modules/ms": {
887
+ "version": "2.0.0",
888
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
889
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
890
+ },
891
  "node_modules/bplist-parser": {
892
  "version": "0.2.0",
893
  "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz",
 
975
  "node": ">=10.16.0"
976
  }
977
  },
978
+ "node_modules/bytes": {
979
+ "version": "3.1.2",
980
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
981
+ "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
982
+ "engines": {
983
+ "node": ">= 0.8"
984
+ }
985
+ },
986
  "node_modules/call-bind": {
987
  "version": "1.0.2",
988
  "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
 
1116
  "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
1117
  "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
1118
  },
1119
+ "node_modules/content-disposition": {
1120
+ "version": "0.5.4",
1121
+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
1122
+ "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
1123
+ "dependencies": {
1124
+ "safe-buffer": "5.2.1"
1125
+ },
1126
+ "engines": {
1127
+ "node": ">= 0.6"
1128
+ }
1129
+ },
1130
+ "node_modules/content-type": {
1131
+ "version": "1.0.5",
1132
+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
1133
+ "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
1134
+ "engines": {
1135
+ "node": ">= 0.6"
1136
+ }
1137
+ },
1138
+ "node_modules/cookie": {
1139
+ "version": "0.5.0",
1140
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
1141
+ "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==",
1142
+ "engines": {
1143
+ "node": ">= 0.6"
1144
+ }
1145
+ },
1146
+ "node_modules/cookie-signature": {
1147
+ "version": "1.0.6",
1148
+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
1149
+ "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
1150
+ },
1151
  "node_modules/cross-spawn": {
1152
  "version": "7.0.3",
1153
  "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
 
1261
  "url": "https://github.com/sponsors/ljharb"
1262
  }
1263
  },
1264
+ "node_modules/depd": {
1265
+ "version": "2.0.0",
1266
+ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
1267
+ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
1268
+ "engines": {
1269
+ "node": ">= 0.8"
1270
+ }
1271
+ },
1272
  "node_modules/dequal": {
1273
  "version": "2.0.3",
1274
  "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz",
 
1277
  "node": ">=6"
1278
  }
1279
  },
1280
+ "node_modules/destroy": {
1281
+ "version": "1.2.0",
1282
+ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
1283
+ "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
1284
+ "engines": {
1285
+ "node": ">= 0.8",
1286
+ "npm": "1.2.8000 || >= 1.4.16"
1287
+ }
1288
+ },
1289
  "node_modules/didyoumean": {
1290
  "version": "1.2.2",
1291
  "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz",
 
1334
  "url": "https://github.com/motdotla/dotenv?sponsor=1"
1335
  }
1336
  },
1337
+ "node_modules/ee-first": {
1338
+ "version": "1.1.1",
1339
+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
1340
+ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
1341
+ },
1342
  "node_modules/electron-to-chromium": {
1343
  "version": "1.4.459",
1344
  "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.459.tgz",
 
1349
  "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
1350
  "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="
1351
  },
1352
+ "node_modules/encodeurl": {
1353
+ "version": "1.0.2",
1354
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
1355
+ "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
1356
+ "engines": {
1357
+ "node": ">= 0.8"
1358
+ }
1359
+ },
1360
  "node_modules/enhanced-resolve": {
1361
  "version": "5.15.0",
1362
  "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz",
 
1462
  "node": ">=6"
1463
  }
1464
  },
1465
+ "node_modules/escape-html": {
1466
+ "version": "1.0.3",
1467
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
1468
+ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
1469
+ },
1470
  "node_modules/escape-string-regexp": {
1471
  "version": "4.0.0",
1472
  "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
 
1900
  "node": ">=0.10.0"
1901
  }
1902
  },
1903
+ "node_modules/etag": {
1904
+ "version": "1.8.1",
1905
+ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
1906
+ "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
1907
+ "engines": {
1908
+ "node": ">= 0.6"
1909
+ }
1910
+ },
1911
  "node_modules/execa": {
1912
  "version": "7.1.1",
1913
  "resolved": "https://registry.npmjs.org/execa/-/execa-7.1.1.tgz",
 
1930
  "url": "https://github.com/sindresorhus/execa?sponsor=1"
1931
  }
1932
  },
1933
+ "node_modules/express": {
1934
+ "version": "4.18.2",
1935
+ "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz",
1936
+ "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==",
1937
+ "dependencies": {
1938
+ "accepts": "~1.3.8",
1939
+ "array-flatten": "1.1.1",
1940
+ "body-parser": "1.20.1",
1941
+ "content-disposition": "0.5.4",
1942
+ "content-type": "~1.0.4",
1943
+ "cookie": "0.5.0",
1944
+ "cookie-signature": "1.0.6",
1945
+ "debug": "2.6.9",
1946
+ "depd": "2.0.0",
1947
+ "encodeurl": "~1.0.2",
1948
+ "escape-html": "~1.0.3",
1949
+ "etag": "~1.8.1",
1950
+ "finalhandler": "1.2.0",
1951
+ "fresh": "0.5.2",
1952
+ "http-errors": "2.0.0",
1953
+ "merge-descriptors": "1.0.1",
1954
+ "methods": "~1.1.2",
1955
+ "on-finished": "2.4.1",
1956
+ "parseurl": "~1.3.3",
1957
+ "path-to-regexp": "0.1.7",
1958
+ "proxy-addr": "~2.0.7",
1959
+ "qs": "6.11.0",
1960
+ "range-parser": "~1.2.1",
1961
+ "safe-buffer": "5.2.1",
1962
+ "send": "0.18.0",
1963
+ "serve-static": "1.15.0",
1964
+ "setprototypeof": "1.2.0",
1965
+ "statuses": "2.0.1",
1966
+ "type-is": "~1.6.18",
1967
+ "utils-merge": "1.0.1",
1968
+ "vary": "~1.1.2"
1969
+ },
1970
+ "engines": {
1971
+ "node": ">= 0.10.0"
1972
+ }
1973
+ },
1974
+ "node_modules/express/node_modules/debug": {
1975
+ "version": "2.6.9",
1976
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
1977
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
1978
+ "dependencies": {
1979
+ "ms": "2.0.0"
1980
+ }
1981
+ },
1982
+ "node_modules/express/node_modules/ms": {
1983
+ "version": "2.0.0",
1984
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
1985
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
1986
+ },
1987
  "node_modules/fast-deep-equal": {
1988
  "version": "3.1.3",
1989
  "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
 
2055
  "node": ">=8"
2056
  }
2057
  },
2058
+ "node_modules/finalhandler": {
2059
+ "version": "1.2.0",
2060
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
2061
+ "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
2062
+ "dependencies": {
2063
+ "debug": "2.6.9",
2064
+ "encodeurl": "~1.0.2",
2065
+ "escape-html": "~1.0.3",
2066
+ "on-finished": "2.4.1",
2067
+ "parseurl": "~1.3.3",
2068
+ "statuses": "2.0.1",
2069
+ "unpipe": "~1.0.0"
2070
+ },
2071
+ "engines": {
2072
+ "node": ">= 0.8"
2073
+ }
2074
+ },
2075
+ "node_modules/finalhandler/node_modules/debug": {
2076
+ "version": "2.6.9",
2077
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
2078
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
2079
+ "dependencies": {
2080
+ "ms": "2.0.0"
2081
+ }
2082
+ },
2083
+ "node_modules/finalhandler/node_modules/ms": {
2084
+ "version": "2.0.0",
2085
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
2086
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
2087
+ },
2088
  "node_modules/find-up": {
2089
  "version": "5.0.0",
2090
  "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
 
2125
  "is-callable": "^1.1.3"
2126
  }
2127
  },
2128
+ "node_modules/forwarded": {
2129
+ "version": "0.2.0",
2130
+ "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
2131
+ "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
2132
+ "engines": {
2133
+ "node": ">= 0.6"
2134
+ }
2135
+ },
2136
  "node_modules/fraction.js": {
2137
  "version": "4.2.0",
2138
  "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz",
 
2145
  "url": "https://www.patreon.com/infusion"
2146
  }
2147
  },
2148
+ "node_modules/fresh": {
2149
+ "version": "0.5.2",
2150
+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
2151
+ "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
2152
+ "engines": {
2153
+ "node": ">= 0.6"
2154
+ }
2155
+ },
2156
  "node_modules/fs.realpath": {
2157
  "version": "1.0.0",
2158
  "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
 
2345
  "url": "https://github.com/sponsors/ljharb"
2346
  }
2347
  },
2348
+ "node_modules/gpt-web": {
2349
+ "version": "0.0.3",
2350
+ "resolved": "https://registry.npmjs.org/gpt-web/-/gpt-web-0.0.3.tgz",
2351
+ "integrity": "sha512-iJW+4Z0CKbAY+ouPAuIowUUiNK3qm/N4DlTnIx2QYK0+Th2mJuCQRm+Q8Tb57kTKs7aEHo5f/mHnQMDFEZ0qpg==",
2352
+ "dependencies": {
2353
+ "commander": "^11.0.0",
2354
+ "debug": "^4.3.4",
2355
+ "express": "^4.18.2",
2356
+ "undici": "^5.22.1"
2357
+ },
2358
+ "bin": {
2359
+ "gpt-web": "dist/bin/cli.js"
2360
+ },
2361
+ "engines": {
2362
+ "node": ">=18"
2363
+ }
2364
+ },
2365
+ "node_modules/gpt-web/node_modules/commander": {
2366
+ "version": "11.0.0",
2367
+ "resolved": "https://registry.npmjs.org/commander/-/commander-11.0.0.tgz",
2368
+ "integrity": "sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==",
2369
+ "engines": {
2370
+ "node": ">=16"
2371
+ }
2372
+ },
2373
  "node_modules/graceful-fs": {
2374
  "version": "4.2.11",
2375
  "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
 
2474
  "url": "https://github.com/sponsors/ljharb"
2475
  }
2476
  },
2477
+ "node_modules/http-errors": {
2478
+ "version": "2.0.0",
2479
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
2480
+ "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
2481
+ "dependencies": {
2482
+ "depd": "2.0.0",
2483
+ "inherits": "2.0.4",
2484
+ "setprototypeof": "1.2.0",
2485
+ "statuses": "2.0.1",
2486
+ "toidentifier": "1.0.1"
2487
+ },
2488
+ "engines": {
2489
+ "node": ">= 0.8"
2490
+ }
2491
+ },
2492
  "node_modules/https-proxy-agent": {
2493
  "version": "7.0.1",
2494
  "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.1.tgz",
 
2509
  "node": ">=14.18.0"
2510
  }
2511
  },
2512
+ "node_modules/iconv-lite": {
2513
+ "version": "0.4.24",
2514
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
2515
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
2516
+ "dependencies": {
2517
+ "safer-buffer": ">= 2.1.2 < 3"
2518
+ },
2519
+ "engines": {
2520
+ "node": ">=0.10.0"
2521
+ }
2522
+ },
2523
  "node_modules/ignore": {
2524
  "version": "5.2.4",
2525
  "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz",
 
2578
  "node": ">= 0.4"
2579
  }
2580
  },
2581
+ "node_modules/ipaddr.js": {
2582
+ "version": "1.9.1",
2583
+ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
2584
+ "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
2585
+ "engines": {
2586
+ "node": ">= 0.10"
2587
+ }
2588
+ },
2589
  "node_modules/is-array-buffer": {
2590
  "version": "3.0.2",
2591
  "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz",
 
3025
  "node": ">=10"
3026
  }
3027
  },
3028
+ "node_modules/media-typer": {
3029
+ "version": "0.3.0",
3030
+ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
3031
+ "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
3032
+ "engines": {
3033
+ "node": ">= 0.6"
3034
+ }
3035
+ },
3036
+ "node_modules/merge-descriptors": {
3037
+ "version": "1.0.1",
3038
+ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
3039
+ "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w=="
3040
+ },
3041
  "node_modules/merge-stream": {
3042
  "version": "2.0.0",
3043
  "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
 
3051
  "node": ">= 8"
3052
  }
3053
  },
3054
+ "node_modules/methods": {
3055
+ "version": "1.1.2",
3056
+ "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
3057
+ "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
3058
+ "engines": {
3059
+ "node": ">= 0.6"
3060
+ }
3061
+ },
3062
  "node_modules/micromatch": {
3063
  "version": "4.0.5",
3064
  "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
 
3071
  "node": ">=8.6"
3072
  }
3073
  },
3074
+ "node_modules/mime": {
3075
+ "version": "1.6.0",
3076
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
3077
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
3078
+ "bin": {
3079
+ "mime": "cli.js"
3080
+ },
3081
+ "engines": {
3082
+ "node": ">=4"
3083
+ }
3084
+ },
3085
+ "node_modules/mime-db": {
3086
+ "version": "1.52.0",
3087
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
3088
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
3089
+ "engines": {
3090
+ "node": ">= 0.6"
3091
+ }
3092
+ },
3093
+ "node_modules/mime-types": {
3094
+ "version": "2.1.35",
3095
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
3096
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
3097
+ "dependencies": {
3098
+ "mime-db": "1.52.0"
3099
+ },
3100
+ "engines": {
3101
+ "node": ">= 0.6"
3102
+ }
3103
+ },
3104
  "node_modules/mimic-fn": {
3105
  "version": "4.0.0",
3106
  "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz",
 
3168
  "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
3169
  "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw=="
3170
  },
3171
+ "node_modules/negotiator": {
3172
+ "version": "0.6.3",
3173
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
3174
+ "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
3175
+ "engines": {
3176
+ "node": ">= 0.6"
3177
+ }
3178
+ },
3179
  "node_modules/next": {
3180
  "version": "13.4.9",
3181
  "resolved": "https://registry.npmjs.org/next/-/next-13.4.9.tgz",
 
3401
  "url": "https://github.com/sponsors/ljharb"
3402
  }
3403
  },
3404
+ "node_modules/on-finished": {
3405
+ "version": "2.4.1",
3406
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
3407
+ "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
3408
+ "dependencies": {
3409
+ "ee-first": "1.1.1"
3410
+ },
3411
+ "engines": {
3412
+ "node": ">= 0.8"
3413
+ }
3414
+ },
3415
  "node_modules/once": {
3416
  "version": "1.4.0",
3417
  "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
 
3506
  "node": ">=6"
3507
  }
3508
  },
3509
+ "node_modules/parseurl": {
3510
+ "version": "1.3.3",
3511
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
3512
+ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
3513
+ "engines": {
3514
+ "node": ">= 0.8"
3515
+ }
3516
+ },
3517
  "node_modules/path-exists": {
3518
  "version": "4.0.0",
3519
  "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
 
3543
  "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
3544
  "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
3545
  },
3546
+ "node_modules/path-to-regexp": {
3547
+ "version": "0.1.7",
3548
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
3549
+ "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ=="
3550
+ },
3551
  "node_modules/path-type": {
3552
  "version": "4.0.0",
3553
  "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
 
3730
  "react-is": "^16.13.1"
3731
  }
3732
  },
3733
+ "node_modules/proxy-addr": {
3734
+ "version": "2.0.7",
3735
+ "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
3736
+ "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
3737
+ "dependencies": {
3738
+ "forwarded": "0.2.0",
3739
+ "ipaddr.js": "1.9.1"
3740
+ },
3741
+ "engines": {
3742
+ "node": ">= 0.10"
3743
+ }
3744
+ },
3745
  "node_modules/punycode": {
3746
  "version": "2.3.0",
3747
  "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz",
 
3750
  "node": ">=6"
3751
  }
3752
  },
3753
+ "node_modules/qs": {
3754
+ "version": "6.11.0",
3755
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
3756
+ "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
3757
+ "dependencies": {
3758
+ "side-channel": "^1.0.4"
3759
+ },
3760
+ "engines": {
3761
+ "node": ">=0.6"
3762
+ },
3763
+ "funding": {
3764
+ "url": "https://github.com/sponsors/ljharb"
3765
+ }
3766
+ },
3767
  "node_modules/queue-microtask": {
3768
  "version": "1.2.3",
3769
  "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
 
3783
  }
3784
  ]
3785
  },
3786
+ "node_modules/range-parser": {
3787
+ "version": "1.2.1",
3788
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
3789
+ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
3790
+ "engines": {
3791
+ "node": ">= 0.6"
3792
+ }
3793
+ },
3794
+ "node_modules/raw-body": {
3795
+ "version": "2.5.1",
3796
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz",
3797
+ "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==",
3798
+ "dependencies": {
3799
+ "bytes": "3.1.2",
3800
+ "http-errors": "2.0.0",
3801
+ "iconv-lite": "0.4.24",
3802
+ "unpipe": "1.0.0"
3803
+ },
3804
+ "engines": {
3805
+ "node": ">= 0.8"
3806
+ }
3807
+ },
3808
  "node_modules/react": {
3809
  "version": "18.2.0",
3810
  "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz",
 
4046
  "queue-microtask": "^1.2.2"
4047
  }
4048
  },
4049
+ "node_modules/safe-buffer": {
4050
+ "version": "5.2.1",
4051
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
4052
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
4053
+ "funding": [
4054
+ {
4055
+ "type": "github",
4056
+ "url": "https://github.com/sponsors/feross"
4057
+ },
4058
+ {
4059
+ "type": "patreon",
4060
+ "url": "https://www.patreon.com/feross"
4061
+ },
4062
+ {
4063
+ "type": "consulting",
4064
+ "url": "https://feross.org/support"
4065
+ }
4066
+ ]
4067
+ },
4068
  "node_modules/safe-regex-test": {
4069
  "version": "1.0.0",
4070
  "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz",
 
4078
  "url": "https://github.com/sponsors/ljharb"
4079
  }
4080
  },
4081
+ "node_modules/safer-buffer": {
4082
+ "version": "2.1.2",
4083
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
4084
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
4085
+ },
4086
  "node_modules/scheduler": {
4087
  "version": "0.23.0",
4088
  "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz",
 
4113
  "node": ">=10"
4114
  }
4115
  },
4116
+ "node_modules/send": {
4117
+ "version": "0.18.0",
4118
+ "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
4119
+ "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
4120
+ "dependencies": {
4121
+ "debug": "2.6.9",
4122
+ "depd": "2.0.0",
4123
+ "destroy": "1.2.0",
4124
+ "encodeurl": "~1.0.2",
4125
+ "escape-html": "~1.0.3",
4126
+ "etag": "~1.8.1",
4127
+ "fresh": "0.5.2",
4128
+ "http-errors": "2.0.0",
4129
+ "mime": "1.6.0",
4130
+ "ms": "2.1.3",
4131
+ "on-finished": "2.4.1",
4132
+ "range-parser": "~1.2.1",
4133
+ "statuses": "2.0.1"
4134
+ },
4135
+ "engines": {
4136
+ "node": ">= 0.8.0"
4137
+ }
4138
+ },
4139
+ "node_modules/send/node_modules/debug": {
4140
+ "version": "2.6.9",
4141
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
4142
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
4143
+ "dependencies": {
4144
+ "ms": "2.0.0"
4145
+ }
4146
+ },
4147
+ "node_modules/send/node_modules/debug/node_modules/ms": {
4148
+ "version": "2.0.0",
4149
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
4150
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
4151
+ },
4152
+ "node_modules/send/node_modules/ms": {
4153
+ "version": "2.1.3",
4154
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
4155
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
4156
+ },
4157
+ "node_modules/serve-static": {
4158
+ "version": "1.15.0",
4159
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
4160
+ "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
4161
+ "dependencies": {
4162
+ "encodeurl": "~1.0.2",
4163
+ "escape-html": "~1.0.3",
4164
+ "parseurl": "~1.3.3",
4165
+ "send": "0.18.0"
4166
+ },
4167
+ "engines": {
4168
+ "node": ">= 0.8.0"
4169
+ }
4170
+ },
4171
+ "node_modules/setprototypeof": {
4172
+ "version": "1.2.0",
4173
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
4174
+ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
4175
+ },
4176
  "node_modules/shebang-command": {
4177
  "version": "2.0.0",
4178
  "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
 
4226
  "node": ">=0.10.0"
4227
  }
4228
  },
4229
+ "node_modules/statuses": {
4230
+ "version": "2.0.1",
4231
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
4232
+ "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
4233
+ "engines": {
4234
+ "node": ">= 0.8"
4235
+ }
4236
+ },
4237
  "node_modules/streamsearch": {
4238
  "version": "1.1.0",
4239
  "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz",
 
4533
  "node": ">=8.0"
4534
  }
4535
  },
4536
+ "node_modules/toidentifier": {
4537
+ "version": "1.0.1",
4538
+ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
4539
+ "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
4540
+ "engines": {
4541
+ "node": ">=0.6"
4542
+ }
4543
+ },
4544
  "node_modules/ts-interface-checker": {
4545
  "version": "0.1.13",
4546
  "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz",
 
4603
  "url": "https://github.com/sponsors/sindresorhus"
4604
  }
4605
  },
4606
+ "node_modules/type-is": {
4607
+ "version": "1.6.18",
4608
+ "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
4609
+ "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
4610
+ "dependencies": {
4611
+ "media-typer": "0.3.0",
4612
+ "mime-types": "~2.1.24"
4613
+ },
4614
+ "engines": {
4615
+ "node": ">= 0.6"
4616
+ }
4617
+ },
4618
  "node_modules/typed-array-byte-offset": {
4619
  "version": "1.0.0",
4620
  "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz",
 
4683
  "node": ">=14.0"
4684
  }
4685
  },
4686
+ "node_modules/unpipe": {
4687
+ "version": "1.0.0",
4688
+ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
4689
+ "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
4690
+ "engines": {
4691
+ "node": ">= 0.8"
4692
+ }
4693
+ },
4694
  "node_modules/untildify": {
4695
  "version": "4.0.0",
4696
  "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz",
 
4741
  "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
4742
  "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
4743
  },
4744
+ "node_modules/utils-merge": {
4745
+ "version": "1.0.1",
4746
+ "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
4747
+ "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
4748
+ "engines": {
4749
+ "node": ">= 0.4.0"
4750
+ }
4751
+ },
4752
+ "node_modules/vary": {
4753
+ "version": "1.1.2",
4754
+ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
4755
+ "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
4756
+ "engines": {
4757
+ "node": ">= 0.8"
4758
+ }
4759
+ },
4760
  "node_modules/watchpack": {
4761
  "version": "2.4.0",
4762
  "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz",
package.json CHANGED
@@ -17,6 +17,7 @@
17
  "dotenv": "^16.3.1",
18
  "eslint": "8.44.0",
19
  "eslint-config-next": "13.4.9",
 
20
  "gradio-chatbot": "^0.0.9",
21
  "next": "13.4.9",
22
  "postcss": "8.4.25",
 
17
  "dotenv": "^16.3.1",
18
  "eslint": "8.44.0",
19
  "eslint-config-next": "13.4.9",
20
+ "gpt-web": "^0.0.3",
21
  "gradio-chatbot": "^0.0.9",
22
  "next": "13.4.9",
23
  "postcss": "8.4.25",
src/pages/api/chat-search.ts ADDED
@@ -0,0 +1,48 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { NextApiRequest, NextApiResponse } from 'next'
2
+ import ChatGPT from 'gpt-web';
3
+ import { search } from './search';
4
+
5
+ const chatbot = new ChatGPT(process.env.OPENAI_EMAIL!, process.env.OPENAI_PASSWORD!);
6
+ export default async function handler(req: NextApiRequest, res: NextApiResponse) {
7
+ const text = String(req.query.text);
8
+ const limit = String(req.query.limit || 3);
9
+ console.log('limit', limit);
10
+ res.setHeader('Content-Type', 'text/stream; charset=UTF-8');
11
+
12
+ if (!text.trim()) {
13
+ return res.end('text不能为空');
14
+ }
15
+
16
+ console.log('search', text);
17
+ const searchResults = await search(text, parseInt(limit, 10))
18
+ const knownledge: string[] = [];
19
+ if (searchResults) {
20
+ searchResults.forEach(data => {
21
+ const { title, text } = data.payload as any;
22
+ knownledge.push(`
23
+ Q: ${title}
24
+ A: ${text}
25
+ `.trim());
26
+ });
27
+ }
28
+
29
+ const prompt = [
30
+ "你是一个研发小助手,名字叫研发小助手。请学习下面的知识回答问题,并按照示例格式仿写。如果内容不相关就返回未查到相关信息:\n\n",
31
+ knownledge.join('\n'),
32
+ 'Q: ' + text + '\nA: '
33
+ ].join('\n');
34
+ console.log('prompt', prompt);
35
+
36
+ let lastLen = 0;
37
+ res.setHeader('Content-Type', 'text/stream; charset=UTF-8');
38
+
39
+ const response = await chatbot.chat(String(prompt), {
40
+ onMessage: (msg: string) => {
41
+ res.write(msg.slice(lastLen));
42
+ res.flushHeaders();
43
+ lastLen = msg.length;
44
+ },
45
+ });
46
+ res.end(response.slice(lastLen));
47
+ console.log('done');
48
+ }
src/pages/api/chat.ts CHANGED
@@ -1,5 +1,23 @@
1
  import { NextApiRequest, NextApiResponse } from 'next'
 
2
 
3
- export default function handler(req: NextApiRequest, res: NextApiResponse) {
4
- res.status(200).json({ name: 'hello' })
5
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  import { NextApiRequest, NextApiResponse } from 'next'
2
+ import ChatGPT from 'gpt-web';
3
 
4
+ const chatbot = new ChatGPT(process.env.OPENAI_EMAIL!, process.env.OPENAI_PASSWORD!);
5
+ export default async function handler(req: NextApiRequest, res: NextApiResponse) {
6
+ const text = String(req.query.text);
7
+ res.setHeader('Content-Type', 'text/stream; charset=UTF-8');
8
+
9
+ if (!text.trim()) {
10
+ return res.end('text不能为空');
11
+ }
12
+
13
+ let lastLen = 0;
14
+ const response = await chatbot.chat(text, {
15
+ onMessage: (msg: string) => {
16
+ res.write(msg.slice(lastLen));
17
+ res.flushHeaders();
18
+ lastLen = msg.length;
19
+ }
20
+ });
21
+ res.end(response.slice(lastLen));
22
+ console.log('done');
23
+ }
src/pages/api/search.ts CHANGED
@@ -3,35 +3,43 @@ import { client, generateHash } from 'gradio-chatbot'
3
  import { QdrantClient } from '@qdrant/js-client-rest';
4
 
5
  const qclient = new QdrantClient({
6
- url: process.env.QDRANT_URL,
7
- apiKey: process.env.QDRANT_API_KEY,
8
  });
9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10
  export default async function handler(req: NextApiRequest, res: NextApiResponse) {
11
- const { text, limit = '5' } = req.query;
12
- console.log('text', text);
13
- const bot = await client('justest-embeddings-api.hf.space', {
14
- session_hash: generateHash(),
15
- })
16
- const response = await bot.predict(0, [text]) as any;
17
- const [embeddings] = response.data || [];
18
- if (embeddings.length) {
19
- const searchResults = await qclient.search('mdn-docs', {
20
- vector: JSON.parse(embeddings),
21
- params: {
22
- hnsw_ef: 128,
23
- exact: true
24
- },
25
- limit: parseInt(limit as string, 10),
26
- });
27
- console.log(searchResults);
28
- return res.status(200).json({
29
- data: searchResults,
30
- success: true,
31
- });
32
- }
33
- res.status(404).json({
34
- message: 'not found',
35
- success: false,
36
  });
37
- }
 
 
 
 
 
 
3
  import { QdrantClient } from '@qdrant/js-client-rest';
4
 
5
  const qclient = new QdrantClient({
6
+ url: process.env.QDRANT_URL,
7
+ apiKey: process.env.QDRANT_API_KEY,
8
  });
9
 
10
+ export async function search(text: string, limit = 5, score_threshold = 0.78) {
11
+ const bot = await client('justest-embeddings-api.hf.space', {
12
+ session_hash: generateHash(),
13
+ });
14
+ const response = await bot.predict(0, [text]) as any;
15
+ const [embeddings] = response.data || [];
16
+ if (embeddings.length) {
17
+ console.log('start search embedding', text, limit, score_threshold);
18
+ const searchResults = await qclient.search('mdn-docs', {
19
+ vector: JSON.parse(embeddings),
20
+ params: {
21
+ hnsw_ef: 128,
22
+ exact: true
23
+ },
24
+ score_threshold,
25
+ limit,
26
+ });
27
+ return searchResults;
28
+ }
29
+ }
30
+
31
  export default async function handler(req: NextApiRequest, res: NextApiResponse) {
32
+ const text = String(req.query.text);
33
+ const limit = String(req.query.limit || 5);
34
+ const searchResults = await search(text, parseInt(limit, 10))
35
+ if (searchResults) {
36
+ return res.status(200).json({
37
+ data: searchResults,
38
+ success: true,
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
39
  });
40
+ }
41
+ res.status(404).json({
42
+ message: 'not found',
43
+ success: false,
44
+ });
45
+ }