Adrien Denat julien-c HF staff commited on
Commit
c8d90f4
1 Parent(s): a388980

Migrate to new model + proxy from server (#5)

Browse files

* use fork of hf.js to support fully custom endpoints for testing purpose

* proxy textGenerationStream call to the backend to hide token from client

* migrate to patch-package instead of pnpm

* fix issue after merge conflict

* use env var instead of hardcoded value for endpoint

* fix messages not being split between assistant/user

* fix stream response sometimes not split by token

* remove PUBLIC_ from private env variables + rename ENDPOINT to MODEL_ENDPOINT

* only set hf token as private, model can stay public

* move HF_TOKEN to a dynamic env

* fix env var import typo

* remove @microsoft/fetch-event-source

* update parameters to be identical to Python demo

* small refactor to avoid typing issue

* cleanup while loop

Co-authored-by: Julien Chaumond <julien@huggingface.co>

* make comment clearer on what is happening on stream chunks split

* fix chunk spliting not being handled properly

* cleanup model tokens sometimes containing "<|endoftext|>" text

* refactor how we proxy from the server to simplify logic

* use latest version of hf.js

* use .env + .env.local instead of .env.example

* rewrite logic to trim "<|endoftext|>" artifact properly

* update to latest hf.js

* expose env var to Docker during build time for deployment

* remove patch-package

---------

Co-authored-by: Julien Chaumond <julien@huggingface.co>

.env ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ PUBLIC_MODEL_ENDPOINT=https://api-inference.huggingface.co/models/OpenAssistant/oasst-sft-1-pythia-12b
2
+ PUBLIC_MODEL_NAME=OpenAssistant/oasst-sft-1-pythia-12b
3
+ PUBLIC_MODEL_TAGLINE=This is the first iteration English supervised-fine-tuning (SFT) model of the <a class="underline" href="https://github.com/LAION-AI/Open-Assistant">Open-Assistant</a> project. It is based on a Pythia 12B that was fine-tuned on ~22k human demonstrations of assistant conversations collected through the <a class="underline" href="https://open-assistant.io/">https://open-assistant.io/</a> human feedback web app before March 7, 2023.
4
+ PUBLIC_DISABLE_INTRO_TILES=true
5
+ PUBLIC_USER_MESSAGE_TOKEN=<|prompter|>
6
+ PUBLIC_ASSISTANT_MESSAGE_TOKEN=<|assistant|>
7
+ PUBLIC_SEP_TOKEN=<|endoftext|>
.env.example DELETED
@@ -1,7 +0,0 @@
1
- PUBLIC_HF_TOKEN=
2
- PUBLIC_ENDPOINT=https://api-inference.huggingface.co/models/OpenAssistant/oasst-sft-1-pythia-12b
3
- PUBLIC_MODEL_NAME=OpenAssistant/llama_30b_oasst_latcyr_1000
4
- PUBLIC_DISABLE_INTRO_TILES=true
5
- PUBLIC_USER_MESSAGE_TOKEN=<|prompter|>
6
- PUBLIC_ASSISTANT_MESSAGE_TOKEN=<|assistant|>
7
- PUBLIC_SEP_TOKEN=<|endoftext|>
 
 
 
 
 
 
 
 
Dockerfile CHANGED
@@ -11,7 +11,8 @@ RUN npm i
11
 
12
  RUN chown -R 1000:1000 /app
13
 
14
- RUN npm run build
 
15
 
16
  ENV PORT 7860
17
 
 
11
 
12
  RUN chown -R 1000:1000 /app
13
 
14
+ RUN --mount=type=secret,id=PUBLIC_MODEL_ENDPOINT,mode=0444,required=true \
15
+ PUBLIC_MODEL_ENDPOINT=$(cat /run/secrets/PUBLIC_MODEL_ENDPOINT) npm run build
16
 
17
  ENV PORT 7860
18
 
package-lock.json CHANGED
@@ -8,7 +8,7 @@
8
  "name": "chat-ui",
9
  "version": "0.0.1",
10
  "dependencies": {
11
- "@microsoft/fetch-event-source": "^2.0.1",
12
  "autoprefixer": "^10.4.14",
13
  "postcss": "^8.4.21",
14
  "tailwind-scrollbar": "^3.0.0",
@@ -33,9 +33,9 @@
33
  }
34
  },
35
  "node_modules/@esbuild/android-arm": {
36
- "version": "0.16.17",
37
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.16.17.tgz",
38
- "integrity": "sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==",
39
  "cpu": [
40
  "arm"
41
  ],
@@ -49,9 +49,9 @@
49
  }
50
  },
51
  "node_modules/@esbuild/android-arm64": {
52
- "version": "0.16.17",
53
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.16.17.tgz",
54
- "integrity": "sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==",
55
  "cpu": [
56
  "arm64"
57
  ],
@@ -65,9 +65,9 @@
65
  }
66
  },
67
  "node_modules/@esbuild/android-x64": {
68
- "version": "0.16.17",
69
- "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.16.17.tgz",
70
- "integrity": "sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==",
71
  "cpu": [
72
  "x64"
73
  ],
@@ -81,9 +81,9 @@
81
  }
82
  },
83
  "node_modules/@esbuild/darwin-arm64": {
84
- "version": "0.16.17",
85
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.17.tgz",
86
- "integrity": "sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==",
87
  "cpu": [
88
  "arm64"
89
  ],
@@ -97,9 +97,9 @@
97
  }
98
  },
99
  "node_modules/@esbuild/darwin-x64": {
100
- "version": "0.16.17",
101
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.16.17.tgz",
102
- "integrity": "sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==",
103
  "cpu": [
104
  "x64"
105
  ],
@@ -113,9 +113,9 @@
113
  }
114
  },
115
  "node_modules/@esbuild/freebsd-arm64": {
116
- "version": "0.16.17",
117
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.17.tgz",
118
- "integrity": "sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==",
119
  "cpu": [
120
  "arm64"
121
  ],
@@ -129,9 +129,9 @@
129
  }
130
  },
131
  "node_modules/@esbuild/freebsd-x64": {
132
- "version": "0.16.17",
133
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.16.17.tgz",
134
- "integrity": "sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==",
135
  "cpu": [
136
  "x64"
137
  ],
@@ -145,9 +145,9 @@
145
  }
146
  },
147
  "node_modules/@esbuild/linux-arm": {
148
- "version": "0.16.17",
149
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.16.17.tgz",
150
- "integrity": "sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==",
151
  "cpu": [
152
  "arm"
153
  ],
@@ -161,9 +161,9 @@
161
  }
162
  },
163
  "node_modules/@esbuild/linux-arm64": {
164
- "version": "0.16.17",
165
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.16.17.tgz",
166
- "integrity": "sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==",
167
  "cpu": [
168
  "arm64"
169
  ],
@@ -177,9 +177,9 @@
177
  }
178
  },
179
  "node_modules/@esbuild/linux-ia32": {
180
- "version": "0.16.17",
181
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.16.17.tgz",
182
- "integrity": "sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==",
183
  "cpu": [
184
  "ia32"
185
  ],
@@ -193,9 +193,9 @@
193
  }
194
  },
195
  "node_modules/@esbuild/linux-loong64": {
196
- "version": "0.16.17",
197
- "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.17.tgz",
198
- "integrity": "sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==",
199
  "cpu": [
200
  "loong64"
201
  ],
@@ -209,9 +209,9 @@
209
  }
210
  },
211
  "node_modules/@esbuild/linux-mips64el": {
212
- "version": "0.16.17",
213
- "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.16.17.tgz",
214
- "integrity": "sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==",
215
  "cpu": [
216
  "mips64el"
217
  ],
@@ -225,9 +225,9 @@
225
  }
226
  },
227
  "node_modules/@esbuild/linux-ppc64": {
228
- "version": "0.16.17",
229
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.16.17.tgz",
230
- "integrity": "sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==",
231
  "cpu": [
232
  "ppc64"
233
  ],
@@ -241,9 +241,9 @@
241
  }
242
  },
243
  "node_modules/@esbuild/linux-riscv64": {
244
- "version": "0.16.17",
245
- "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.16.17.tgz",
246
- "integrity": "sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==",
247
  "cpu": [
248
  "riscv64"
249
  ],
@@ -257,9 +257,9 @@
257
  }
258
  },
259
  "node_modules/@esbuild/linux-s390x": {
260
- "version": "0.16.17",
261
- "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.16.17.tgz",
262
- "integrity": "sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==",
263
  "cpu": [
264
  "s390x"
265
  ],
@@ -273,9 +273,9 @@
273
  }
274
  },
275
  "node_modules/@esbuild/linux-x64": {
276
- "version": "0.16.17",
277
- "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.17.tgz",
278
- "integrity": "sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==",
279
  "cpu": [
280
  "x64"
281
  ],
@@ -289,9 +289,9 @@
289
  }
290
  },
291
  "node_modules/@esbuild/netbsd-x64": {
292
- "version": "0.16.17",
293
- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.16.17.tgz",
294
- "integrity": "sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==",
295
  "cpu": [
296
  "x64"
297
  ],
@@ -305,9 +305,9 @@
305
  }
306
  },
307
  "node_modules/@esbuild/openbsd-x64": {
308
- "version": "0.16.17",
309
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.16.17.tgz",
310
- "integrity": "sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==",
311
  "cpu": [
312
  "x64"
313
  ],
@@ -321,9 +321,9 @@
321
  }
322
  },
323
  "node_modules/@esbuild/sunos-x64": {
324
- "version": "0.16.17",
325
- "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.16.17.tgz",
326
- "integrity": "sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==",
327
  "cpu": [
328
  "x64"
329
  ],
@@ -337,9 +337,9 @@
337
  }
338
  },
339
  "node_modules/@esbuild/win32-arm64": {
340
- "version": "0.16.17",
341
- "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.16.17.tgz",
342
- "integrity": "sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==",
343
  "cpu": [
344
  "arm64"
345
  ],
@@ -353,9 +353,9 @@
353
  }
354
  },
355
  "node_modules/@esbuild/win32-ia32": {
356
- "version": "0.16.17",
357
- "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.16.17.tgz",
358
- "integrity": "sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==",
359
  "cpu": [
360
  "ia32"
361
  ],
@@ -369,9 +369,9 @@
369
  }
370
  },
371
  "node_modules/@esbuild/win32-x64": {
372
- "version": "0.16.17",
373
- "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.17.tgz",
374
- "integrity": "sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==",
375
  "cpu": [
376
  "x64"
377
  ],
@@ -384,15 +384,39 @@
384
  "node": ">=12"
385
  }
386
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
387
  "node_modules/@eslint/eslintrc": {
388
- "version": "1.4.1",
389
- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz",
390
- "integrity": "sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==",
391
  "dev": true,
392
  "dependencies": {
393
  "ajv": "^6.12.4",
394
  "debug": "^4.3.2",
395
- "espree": "^9.4.0",
396
  "globals": "^13.19.0",
397
  "ignore": "^5.2.0",
398
  "import-fresh": "^3.2.1",
@@ -407,6 +431,23 @@
407
  "url": "https://opencollective.com/eslint"
408
  }
409
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
410
  "node_modules/@humanwhocodes/config-array": {
411
  "version": "0.11.8",
412
  "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz",
@@ -483,11 +524,6 @@
483
  "@jridgewell/sourcemap-codec": "1.4.14"
484
  }
485
  },
486
- "node_modules/@microsoft/fetch-event-source": {
487
- "version": "2.0.1",
488
- "resolved": "https://registry.npmjs.org/@microsoft/fetch-event-source/-/fetch-event-source-2.0.1.tgz",
489
- "integrity": "sha512-W6CLUJ2eBMw3Rec70qrsEW0jOm/3twwJv21mrmj2yORiaVmVYGS4sSS5yUwvQc1ZlDLYGPnClVWmUUMagKNsfA=="
490
- },
491
  "node_modules/@nodelib/fs.scandir": {
492
  "version": "2.1.5",
493
  "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
@@ -1476,9 +1512,9 @@
1476
  "dev": true
1477
  },
1478
  "node_modules/esbuild": {
1479
- "version": "0.16.17",
1480
- "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.16.17.tgz",
1481
- "integrity": "sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==",
1482
  "dev": true,
1483
  "hasInstallScript": true,
1484
  "bin": {
@@ -1488,28 +1524,28 @@
1488
  "node": ">=12"
1489
  },
1490
  "optionalDependencies": {
1491
- "@esbuild/android-arm": "0.16.17",
1492
- "@esbuild/android-arm64": "0.16.17",
1493
- "@esbuild/android-x64": "0.16.17",
1494
- "@esbuild/darwin-arm64": "0.16.17",
1495
- "@esbuild/darwin-x64": "0.16.17",
1496
- "@esbuild/freebsd-arm64": "0.16.17",
1497
- "@esbuild/freebsd-x64": "0.16.17",
1498
- "@esbuild/linux-arm": "0.16.17",
1499
- "@esbuild/linux-arm64": "0.16.17",
1500
- "@esbuild/linux-ia32": "0.16.17",
1501
- "@esbuild/linux-loong64": "0.16.17",
1502
- "@esbuild/linux-mips64el": "0.16.17",
1503
- "@esbuild/linux-ppc64": "0.16.17",
1504
- "@esbuild/linux-riscv64": "0.16.17",
1505
- "@esbuild/linux-s390x": "0.16.17",
1506
- "@esbuild/linux-x64": "0.16.17",
1507
- "@esbuild/netbsd-x64": "0.16.17",
1508
- "@esbuild/openbsd-x64": "0.16.17",
1509
- "@esbuild/sunos-x64": "0.16.17",
1510
- "@esbuild/win32-arm64": "0.16.17",
1511
- "@esbuild/win32-ia32": "0.16.17",
1512
- "@esbuild/win32-x64": "0.16.17"
1513
  }
1514
  },
1515
  "node_modules/escalade": {
@@ -1533,12 +1569,15 @@
1533
  }
1534
  },
1535
  "node_modules/eslint": {
1536
- "version": "8.34.0",
1537
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.34.0.tgz",
1538
- "integrity": "sha512-1Z8iFsucw+7kSqXNZVslXS8Ioa4u2KM7GPwuKtkTFAqZ/cHMcEaR+1+Br0wLlot49cNxIiZk5wp8EAbPcYZxTg==",
1539
  "dev": true,
1540
  "dependencies": {
1541
- "@eslint/eslintrc": "^1.4.1",
 
 
 
1542
  "@humanwhocodes/config-array": "^0.11.8",
1543
  "@humanwhocodes/module-importer": "^1.0.1",
1544
  "@nodelib/fs.walk": "^1.2.8",
@@ -1549,10 +1588,9 @@
1549
  "doctrine": "^3.0.0",
1550
  "escape-string-regexp": "^4.0.0",
1551
  "eslint-scope": "^7.1.1",
1552
- "eslint-utils": "^3.0.0",
1553
- "eslint-visitor-keys": "^3.3.0",
1554
- "espree": "^9.4.0",
1555
- "esquery": "^1.4.0",
1556
  "esutils": "^2.0.2",
1557
  "fast-deep-equal": "^3.1.3",
1558
  "file-entry-cache": "^6.0.1",
@@ -1573,7 +1611,6 @@
1573
  "minimatch": "^3.1.2",
1574
  "natural-compare": "^1.4.0",
1575
  "optionator": "^0.9.1",
1576
- "regexpp": "^3.2.0",
1577
  "strip-ansi": "^6.0.1",
1578
  "strip-json-comments": "^3.1.0",
1579
  "text-table": "^0.2.0"
@@ -1651,12 +1688,15 @@
1651
  }
1652
  },
1653
  "node_modules/eslint-visitor-keys": {
1654
- "version": "3.3.0",
1655
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz",
1656
- "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==",
1657
  "dev": true,
1658
  "engines": {
1659
  "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
 
 
 
1660
  }
1661
  },
1662
  "node_modules/eslint/node_modules/eslint-scope": {
@@ -1688,14 +1728,14 @@
1688
  "dev": true
1689
  },
1690
  "node_modules/espree": {
1691
- "version": "9.4.1",
1692
- "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz",
1693
- "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==",
1694
  "dev": true,
1695
  "dependencies": {
1696
  "acorn": "^8.8.0",
1697
  "acorn-jsx": "^5.3.2",
1698
- "eslint-visitor-keys": "^3.3.0"
1699
  },
1700
  "engines": {
1701
  "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@@ -2879,9 +2919,9 @@
2879
  }
2880
  },
2881
  "node_modules/rollup": {
2882
- "version": "3.16.0",
2883
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.16.0.tgz",
2884
- "integrity": "sha512-9wE1H5N1SJqnROpQanBGJ7lrIitwlUYGj4Va4eyf3+vNhoIHLPLag2/CUGIiq3V9lHOBJB6zTsGsPvc50oeihg==",
2885
  "dev": true,
2886
  "bin": {
2887
  "rollup": "dist/bin/rollup"
@@ -3494,15 +3534,15 @@
3494
  "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
3495
  },
3496
  "node_modules/vite": {
3497
- "version": "4.1.2",
3498
- "resolved": "https://registry.npmjs.org/vite/-/vite-4.1.2.tgz",
3499
- "integrity": "sha512-MWDb9Rfy3DI8omDQySbMK93nQqStwbsQWejXRY2EBzEWKmLAXWb1mkI9Yw2IJrc+oCvPCI1Os5xSSIBYY6DEAw==",
3500
  "dev": true,
3501
  "dependencies": {
3502
- "esbuild": "^0.16.14",
3503
  "postcss": "^8.4.21",
3504
  "resolve": "^1.22.1",
3505
- "rollup": "^3.10.0"
3506
  },
3507
  "bin": {
3508
  "vite": "bin/vite.js"
 
8
  "name": "chat-ui",
9
  "version": "0.0.1",
10
  "dependencies": {
11
+ "@huggingface/inference": "^2.0.0-rc2",
12
  "autoprefixer": "^10.4.14",
13
  "postcss": "^8.4.21",
14
  "tailwind-scrollbar": "^3.0.0",
 
33
  }
34
  },
35
  "node_modules/@esbuild/android-arm": {
36
+ "version": "0.17.16",
37
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.16.tgz",
38
+ "integrity": "sha512-baLqRpLe4JnKrUXLJChoTN0iXZH7El/mu58GE3WIA6/H834k0XWvLRmGLG8y8arTRS9hJJibPnF0tiGhmWeZgw==",
39
  "cpu": [
40
  "arm"
41
  ],
 
49
  }
50
  },
51
  "node_modules/@esbuild/android-arm64": {
52
+ "version": "0.17.16",
53
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.16.tgz",
54
+ "integrity": "sha512-QX48qmsEZW+gcHgTmAj+x21mwTz8MlYQBnzF6861cNdQGvj2jzzFjqH0EBabrIa/WVZ2CHolwMoqxVryqKt8+Q==",
55
  "cpu": [
56
  "arm64"
57
  ],
 
65
  }
66
  },
67
  "node_modules/@esbuild/android-x64": {
68
+ "version": "0.17.16",
69
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.16.tgz",
70
+ "integrity": "sha512-G4wfHhrrz99XJgHnzFvB4UwwPxAWZaZBOFXh+JH1Duf1I4vIVfuYY9uVLpx4eiV2D/Jix8LJY+TAdZ3i40tDow==",
71
  "cpu": [
72
  "x64"
73
  ],
 
81
  }
82
  },
83
  "node_modules/@esbuild/darwin-arm64": {
84
+ "version": "0.17.16",
85
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.16.tgz",
86
+ "integrity": "sha512-/Ofw8UXZxuzTLsNFmz1+lmarQI6ztMZ9XktvXedTbt3SNWDn0+ODTwxExLYQ/Hod91EZB4vZPQJLoqLF0jvEzA==",
87
  "cpu": [
88
  "arm64"
89
  ],
 
97
  }
98
  },
99
  "node_modules/@esbuild/darwin-x64": {
100
+ "version": "0.17.16",
101
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.16.tgz",
102
+ "integrity": "sha512-SzBQtCV3Pdc9kyizh36Ol+dNVhkDyIrGb/JXZqFq8WL37LIyrXU0gUpADcNV311sCOhvY+f2ivMhb5Tuv8nMOQ==",
103
  "cpu": [
104
  "x64"
105
  ],
 
113
  }
114
  },
115
  "node_modules/@esbuild/freebsd-arm64": {
116
+ "version": "0.17.16",
117
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.16.tgz",
118
+ "integrity": "sha512-ZqftdfS1UlLiH1DnS2u3It7l4Bc3AskKeu+paJSfk7RNOMrOxmeFDhLTMQqMxycP1C3oj8vgkAT6xfAuq7ZPRA==",
119
  "cpu": [
120
  "arm64"
121
  ],
 
129
  }
130
  },
131
  "node_modules/@esbuild/freebsd-x64": {
132
+ "version": "0.17.16",
133
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.16.tgz",
134
+ "integrity": "sha512-rHV6zNWW1tjgsu0dKQTX9L0ByiJHHLvQKrWtnz8r0YYJI27FU3Xu48gpK2IBj1uCSYhJ+pEk6Y0Um7U3rIvV8g==",
135
  "cpu": [
136
  "x64"
137
  ],
 
145
  }
146
  },
147
  "node_modules/@esbuild/linux-arm": {
148
+ "version": "0.17.16",
149
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.16.tgz",
150
+ "integrity": "sha512-n4O8oVxbn7nl4+m+ISb0a68/lcJClIbaGAoXwqeubj/D1/oMMuaAXmJVfFlRjJLu/ZvHkxoiFJnmbfp4n8cdSw==",
151
  "cpu": [
152
  "arm"
153
  ],
 
161
  }
162
  },
163
  "node_modules/@esbuild/linux-arm64": {
164
+ "version": "0.17.16",
165
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.16.tgz",
166
+ "integrity": "sha512-8yoZhGkU6aHu38WpaM4HrRLTFc7/VVD9Q2SvPcmIQIipQt2I/GMTZNdEHXoypbbGao5kggLcxg0iBKjo0SQYKA==",
167
  "cpu": [
168
  "arm64"
169
  ],
 
177
  }
178
  },
179
  "node_modules/@esbuild/linux-ia32": {
180
+ "version": "0.17.16",
181
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.16.tgz",
182
+ "integrity": "sha512-9ZBjlkdaVYxPNO8a7OmzDbOH9FMQ1a58j7Xb21UfRU29KcEEU3VTHk+Cvrft/BNv0gpWJMiiZ/f4w0TqSP0gLA==",
183
  "cpu": [
184
  "ia32"
185
  ],
 
193
  }
194
  },
195
  "node_modules/@esbuild/linux-loong64": {
196
+ "version": "0.17.16",
197
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.16.tgz",
198
+ "integrity": "sha512-TIZTRojVBBzdgChY3UOG7BlPhqJz08AL7jdgeeu+kiObWMFzGnQD7BgBBkWRwOtKR1i2TNlO7YK6m4zxVjjPRQ==",
199
  "cpu": [
200
  "loong64"
201
  ],
 
209
  }
210
  },
211
  "node_modules/@esbuild/linux-mips64el": {
212
+ "version": "0.17.16",
213
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.16.tgz",
214
+ "integrity": "sha512-UPeRuFKCCJYpBbIdczKyHLAIU31GEm0dZl1eMrdYeXDH+SJZh/i+2cAmD3A1Wip9pIc5Sc6Kc5cFUrPXtR0XHA==",
215
  "cpu": [
216
  "mips64el"
217
  ],
 
225
  }
226
  },
227
  "node_modules/@esbuild/linux-ppc64": {
228
+ "version": "0.17.16",
229
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.16.tgz",
230
+ "integrity": "sha512-io6yShgIEgVUhExJejJ21xvO5QtrbiSeI7vYUnr7l+v/O9t6IowyhdiYnyivX2X5ysOVHAuyHW+Wyi7DNhdw6Q==",
231
  "cpu": [
232
  "ppc64"
233
  ],
 
241
  }
242
  },
243
  "node_modules/@esbuild/linux-riscv64": {
244
+ "version": "0.17.16",
245
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.16.tgz",
246
+ "integrity": "sha512-WhlGeAHNbSdG/I2gqX2RK2gfgSNwyJuCiFHMc8s3GNEMMHUI109+VMBfhVqRb0ZGzEeRiibi8dItR3ws3Lk+cA==",
247
  "cpu": [
248
  "riscv64"
249
  ],
 
257
  }
258
  },
259
  "node_modules/@esbuild/linux-s390x": {
260
+ "version": "0.17.16",
261
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.16.tgz",
262
+ "integrity": "sha512-gHRReYsJtViir63bXKoFaQ4pgTyah4ruiMRQ6im9YZuv+gp3UFJkNTY4sFA73YDynmXZA6hi45en4BGhNOJUsw==",
263
  "cpu": [
264
  "s390x"
265
  ],
 
273
  }
274
  },
275
  "node_modules/@esbuild/linux-x64": {
276
+ "version": "0.17.16",
277
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.16.tgz",
278
+ "integrity": "sha512-mfiiBkxEbUHvi+v0P+TS7UnA9TeGXR48aK4XHkTj0ZwOijxexgMF01UDFaBX7Q6CQsB0d+MFNv9IiXbIHTNd4g==",
279
  "cpu": [
280
  "x64"
281
  ],
 
289
  }
290
  },
291
  "node_modules/@esbuild/netbsd-x64": {
292
+ "version": "0.17.16",
293
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.16.tgz",
294
+ "integrity": "sha512-n8zK1YRDGLRZfVcswcDMDM0j2xKYLNXqei217a4GyBxHIuPMGrrVuJ+Ijfpr0Kufcm7C1k/qaIrGy6eG7wvgmA==",
295
  "cpu": [
296
  "x64"
297
  ],
 
305
  }
306
  },
307
  "node_modules/@esbuild/openbsd-x64": {
308
+ "version": "0.17.16",
309
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.16.tgz",
310
+ "integrity": "sha512-lEEfkfsUbo0xC47eSTBqsItXDSzwzwhKUSsVaVjVji07t8+6KA5INp2rN890dHZeueXJAI8q0tEIfbwVRYf6Ew==",
311
  "cpu": [
312
  "x64"
313
  ],
 
321
  }
322
  },
323
  "node_modules/@esbuild/sunos-x64": {
324
+ "version": "0.17.16",
325
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.16.tgz",
326
+ "integrity": "sha512-jlRjsuvG1fgGwnE8Afs7xYDnGz0dBgTNZfgCK6TlvPH3Z13/P5pi6I57vyLE8qZYLrGVtwcm9UbUx1/mZ8Ukag==",
327
  "cpu": [
328
  "x64"
329
  ],
 
337
  }
338
  },
339
  "node_modules/@esbuild/win32-arm64": {
340
+ "version": "0.17.16",
341
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.16.tgz",
342
+ "integrity": "sha512-TzoU2qwVe2boOHl/3KNBUv2PNUc38U0TNnzqOAcgPiD/EZxT2s736xfC2dYQbszAwo4MKzzwBV0iHjhfjxMimg==",
343
  "cpu": [
344
  "arm64"
345
  ],
 
353
  }
354
  },
355
  "node_modules/@esbuild/win32-ia32": {
356
+ "version": "0.17.16",
357
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.16.tgz",
358
+ "integrity": "sha512-B8b7W+oo2yb/3xmwk9Vc99hC9bNolvqjaTZYEfMQhzdpBsjTvZBlXQ/teUE55Ww6sg//wlcDjOaqldOKyigWdA==",
359
  "cpu": [
360
  "ia32"
361
  ],
 
369
  }
370
  },
371
  "node_modules/@esbuild/win32-x64": {
372
+ "version": "0.17.16",
373
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.16.tgz",
374
+ "integrity": "sha512-xJ7OH/nanouJO9pf03YsL9NAFQBHd8AqfrQd7Pf5laGyyTt/gToul6QYOA/i5i/q8y9iaM5DQFNTgpi995VkOg==",
375
  "cpu": [
376
  "x64"
377
  ],
 
384
  "node": ">=12"
385
  }
386
  },
387
+ "node_modules/@eslint-community/eslint-utils": {
388
+ "version": "4.4.0",
389
+ "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz",
390
+ "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==",
391
+ "dev": true,
392
+ "dependencies": {
393
+ "eslint-visitor-keys": "^3.3.0"
394
+ },
395
+ "engines": {
396
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
397
+ },
398
+ "peerDependencies": {
399
+ "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
400
+ }
401
+ },
402
+ "node_modules/@eslint-community/regexpp": {
403
+ "version": "4.5.0",
404
+ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.0.tgz",
405
+ "integrity": "sha512-vITaYzIcNmjn5tF5uxcZ/ft7/RXGrMUIS9HalWckEOF6ESiwXKoMzAQf2UW0aVd6rnOeExTJVd5hmWXucBKGXQ==",
406
+ "dev": true,
407
+ "engines": {
408
+ "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
409
+ }
410
+ },
411
  "node_modules/@eslint/eslintrc": {
412
+ "version": "2.0.2",
413
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.2.tgz",
414
+ "integrity": "sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ==",
415
  "dev": true,
416
  "dependencies": {
417
  "ajv": "^6.12.4",
418
  "debug": "^4.3.2",
419
+ "espree": "^9.5.1",
420
  "globals": "^13.19.0",
421
  "ignore": "^5.2.0",
422
  "import-fresh": "^3.2.1",
 
431
  "url": "https://opencollective.com/eslint"
432
  }
433
  },
434
+ "node_modules/@eslint/js": {
435
+ "version": "8.38.0",
436
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.38.0.tgz",
437
+ "integrity": "sha512-IoD2MfUnOV58ghIHCiil01PcohxjbYR/qCxsoC+xNgUwh1EY8jOOrYmu3d3a71+tJJ23uscEV4X2HJWMsPJu4g==",
438
+ "dev": true,
439
+ "engines": {
440
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
441
+ }
442
+ },
443
+ "node_modules/@huggingface/inference": {
444
+ "version": "2.0.0-rc2",
445
+ "resolved": "https://registry.npmjs.org/@huggingface/inference/-/inference-2.0.0-rc2.tgz",
446
+ "integrity": "sha512-jCU+zl1fmbmaWbTa3P2KC1GQMwjMc9ZLcR8Nq5UeFmDbmdz0GiBHsK7F1hTHRAPeF1K3X5L3V3OQUNZ6nzEu/w==",
447
+ "engines": {
448
+ "node": ">=18"
449
+ }
450
+ },
451
  "node_modules/@humanwhocodes/config-array": {
452
  "version": "0.11.8",
453
  "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz",
 
524
  "@jridgewell/sourcemap-codec": "1.4.14"
525
  }
526
  },
 
 
 
 
 
527
  "node_modules/@nodelib/fs.scandir": {
528
  "version": "2.1.5",
529
  "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
 
1512
  "dev": true
1513
  },
1514
  "node_modules/esbuild": {
1515
+ "version": "0.17.16",
1516
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.16.tgz",
1517
+ "integrity": "sha512-aeSuUKr9aFVY9Dc8ETVELGgkj4urg5isYx8pLf4wlGgB0vTFjxJQdHnNH6Shmx4vYYrOTLCHtRI5i1XZ9l2Zcg==",
1518
  "dev": true,
1519
  "hasInstallScript": true,
1520
  "bin": {
 
1524
  "node": ">=12"
1525
  },
1526
  "optionalDependencies": {
1527
+ "@esbuild/android-arm": "0.17.16",
1528
+ "@esbuild/android-arm64": "0.17.16",
1529
+ "@esbuild/android-x64": "0.17.16",
1530
+ "@esbuild/darwin-arm64": "0.17.16",
1531
+ "@esbuild/darwin-x64": "0.17.16",
1532
+ "@esbuild/freebsd-arm64": "0.17.16",
1533
+ "@esbuild/freebsd-x64": "0.17.16",
1534
+ "@esbuild/linux-arm": "0.17.16",
1535
+ "@esbuild/linux-arm64": "0.17.16",
1536
+ "@esbuild/linux-ia32": "0.17.16",
1537
+ "@esbuild/linux-loong64": "0.17.16",
1538
+ "@esbuild/linux-mips64el": "0.17.16",
1539
+ "@esbuild/linux-ppc64": "0.17.16",
1540
+ "@esbuild/linux-riscv64": "0.17.16",
1541
+ "@esbuild/linux-s390x": "0.17.16",
1542
+ "@esbuild/linux-x64": "0.17.16",
1543
+ "@esbuild/netbsd-x64": "0.17.16",
1544
+ "@esbuild/openbsd-x64": "0.17.16",
1545
+ "@esbuild/sunos-x64": "0.17.16",
1546
+ "@esbuild/win32-arm64": "0.17.16",
1547
+ "@esbuild/win32-ia32": "0.17.16",
1548
+ "@esbuild/win32-x64": "0.17.16"
1549
  }
1550
  },
1551
  "node_modules/escalade": {
 
1569
  }
1570
  },
1571
  "node_modules/eslint": {
1572
+ "version": "8.38.0",
1573
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.38.0.tgz",
1574
+ "integrity": "sha512-pIdsD2jwlUGf/U38Jv97t8lq6HpaU/G9NKbYmpWpZGw3LdTNhZLbJePqxOXGB5+JEKfOPU/XLxYxFh03nr1KTg==",
1575
  "dev": true,
1576
  "dependencies": {
1577
+ "@eslint-community/eslint-utils": "^4.2.0",
1578
+ "@eslint-community/regexpp": "^4.4.0",
1579
+ "@eslint/eslintrc": "^2.0.2",
1580
+ "@eslint/js": "8.38.0",
1581
  "@humanwhocodes/config-array": "^0.11.8",
1582
  "@humanwhocodes/module-importer": "^1.0.1",
1583
  "@nodelib/fs.walk": "^1.2.8",
 
1588
  "doctrine": "^3.0.0",
1589
  "escape-string-regexp": "^4.0.0",
1590
  "eslint-scope": "^7.1.1",
1591
+ "eslint-visitor-keys": "^3.4.0",
1592
+ "espree": "^9.5.1",
1593
+ "esquery": "^1.4.2",
 
1594
  "esutils": "^2.0.2",
1595
  "fast-deep-equal": "^3.1.3",
1596
  "file-entry-cache": "^6.0.1",
 
1611
  "minimatch": "^3.1.2",
1612
  "natural-compare": "^1.4.0",
1613
  "optionator": "^0.9.1",
 
1614
  "strip-ansi": "^6.0.1",
1615
  "strip-json-comments": "^3.1.0",
1616
  "text-table": "^0.2.0"
 
1688
  }
1689
  },
1690
  "node_modules/eslint-visitor-keys": {
1691
+ "version": "3.4.0",
1692
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz",
1693
+ "integrity": "sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==",
1694
  "dev": true,
1695
  "engines": {
1696
  "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
1697
+ },
1698
+ "funding": {
1699
+ "url": "https://opencollective.com/eslint"
1700
  }
1701
  },
1702
  "node_modules/eslint/node_modules/eslint-scope": {
 
1728
  "dev": true
1729
  },
1730
  "node_modules/espree": {
1731
+ "version": "9.5.1",
1732
+ "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.1.tgz",
1733
+ "integrity": "sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==",
1734
  "dev": true,
1735
  "dependencies": {
1736
  "acorn": "^8.8.0",
1737
  "acorn-jsx": "^5.3.2",
1738
+ "eslint-visitor-keys": "^3.4.0"
1739
  },
1740
  "engines": {
1741
  "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
 
2919
  }
2920
  },
2921
  "node_modules/rollup": {
2922
+ "version": "3.20.2",
2923
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.20.2.tgz",
2924
+ "integrity": "sha512-3zwkBQl7Ai7MFYQE0y1MeQ15+9jsi7XxfrqwTb/9EK8D9C9+//EBR4M+CuA1KODRaNbFez/lWxA5vhEGZp4MUg==",
2925
  "dev": true,
2926
  "bin": {
2927
  "rollup": "dist/bin/rollup"
 
3534
  "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
3535
  },
3536
  "node_modules/vite": {
3537
+ "version": "4.2.1",
3538
+ "resolved": "https://registry.npmjs.org/vite/-/vite-4.2.1.tgz",
3539
+ "integrity": "sha512-7MKhqdy0ISo4wnvwtqZkjke6XN4taqQ2TBaTccLIpOKv7Vp2h4Y+NpmWCnGDeSvvn45KxvWgGyb0MkHvY1vgbg==",
3540
  "dev": true,
3541
  "dependencies": {
3542
+ "esbuild": "^0.17.5",
3543
  "postcss": "^8.4.21",
3544
  "resolve": "^1.22.1",
3545
+ "rollup": "^3.18.0"
3546
  },
3547
  "bin": {
3548
  "vite": "bin/vite.js"
package.json CHANGED
@@ -30,7 +30,7 @@
30
  },
31
  "type": "module",
32
  "dependencies": {
33
- "@microsoft/fetch-event-source": "^2.0.1",
34
  "autoprefixer": "^10.4.14",
35
  "postcss": "^8.4.21",
36
  "tailwind-scrollbar": "^3.0.0",
 
30
  },
31
  "type": "module",
32
  "dependencies": {
33
+ "@huggingface/inference": "^2.0.0-rc2",
34
  "autoprefixer": "^10.4.14",
35
  "postcss": "^8.4.21",
36
  "tailwind-scrollbar": "^3.0.0",
src/routes/+page.svelte CHANGED
@@ -1,9 +1,8 @@
1
  <script lang="ts">
2
- import type { Message, StreamResponse } from '$lib/Types';
3
 
4
  import { afterUpdate } from 'svelte';
5
-
6
- import { fetchEventSource } from '@microsoft/fetch-event-source';
7
 
8
  import ChatMessage from '$lib/components/chat/ChatMessage.svelte';
9
  import ChatIntroduction from '$lib/components/chat/ChatIntroduction.svelte';
@@ -11,16 +10,18 @@
11
 
12
  import {
13
  PUBLIC_ASSISTANT_MESSAGE_TOKEN,
14
- PUBLIC_ENDPOINT,
15
- PUBLIC_HF_TOKEN,
16
  PUBLIC_SEP_TOKEN,
17
  PUBLIC_USER_MESSAGE_TOKEN
18
  } from '$env/static/public';
 
19
 
20
  const userToken = PUBLIC_USER_MESSAGE_TOKEN || '<|prompter|>';
21
  const assistantToken = PUBLIC_ASSISTANT_MESSAGE_TOKEN || '<|assistant|>';
22
  const sepToken = PUBLIC_SEP_TOKEN || '<|endoftext|>';
23
 
 
 
 
24
  let messages: Message[] = [];
25
  let message = '';
26
 
@@ -41,6 +42,53 @@
41
  }
42
  }
43
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
44
  function onWrite() {
45
  if (!message) return;
46
 
@@ -55,49 +103,7 @@
55
  )
56
  .join('') + assistantToken;
57
 
58
- console.log(inputs);
59
- fetchEventSource(PUBLIC_ENDPOINT, {
60
- method: 'POST',
61
- headers: {
62
- Accept: 'text/event-stream',
63
- 'Content-Type': 'application/json',
64
- 'user-agent': 'chat-ui/0.0.1',
65
- ...(PUBLIC_HF_TOKEN
66
- ? {
67
- authorization: `Bearer ${PUBLIC_HF_TOKEN}`
68
- }
69
- : {})
70
- },
71
- body: JSON.stringify({
72
- inputs: inputs,
73
- stream: true,
74
- parameters: {
75
- do_sample: false,
76
- max_new_tokens: 500,
77
- return_full_text: false,
78
- stop: [],
79
- truncate: 1000,
80
- typical_p: 0.2,
81
- watermark: false,
82
- details: true
83
- }
84
- }),
85
- async onopen(response) {
86
- if (response.ok && response.headers.get('content-type') === 'text/event-stream') {
87
- messages = [...messages, { from: 'bot', content: '' }];
88
- } else {
89
- console.error('error opening the SSE endpoint');
90
- }
91
- },
92
- onmessage(msg) {
93
- const data = JSON.parse(msg.data) as StreamResponse;
94
- // console.log(data);
95
- if (!data.token.special) {
96
- messages.at(-1)!.content += data.token.text;
97
- messages = messages;
98
- }
99
- }
100
- });
101
  }
102
  </script>
103
 
 
1
  <script lang="ts">
2
+ import type { Message } from '$lib/Types';
3
 
4
  import { afterUpdate } from 'svelte';
5
+ import { HfInference } from '@huggingface/inference';
 
6
 
7
  import ChatMessage from '$lib/components/chat/ChatMessage.svelte';
8
  import ChatIntroduction from '$lib/components/chat/ChatIntroduction.svelte';
 
10
 
11
  import {
12
  PUBLIC_ASSISTANT_MESSAGE_TOKEN,
 
 
13
  PUBLIC_SEP_TOKEN,
14
  PUBLIC_USER_MESSAGE_TOKEN
15
  } from '$env/static/public';
16
+ import { page } from '$app/stores';
17
 
18
  const userToken = PUBLIC_USER_MESSAGE_TOKEN || '<|prompter|>';
19
  const assistantToken = PUBLIC_ASSISTANT_MESSAGE_TOKEN || '<|assistant|>';
20
  const sepToken = PUBLIC_SEP_TOKEN || '<|endoftext|>';
21
 
22
+ const hf = new HfInference();
23
+ const model = hf.endpoint(`${$page.url.origin}/api/conversation`);
24
+
25
  let messages: Message[] = [];
26
  let message = '';
27
 
 
42
  }
43
  }
44
 
45
+ async function getTextGenerationStream(inputs: string) {
46
+ const response = model.textGenerationStream(
47
+ {
48
+ inputs,
49
+ parameters: {
50
+ // Taken from https://huggingface.co/spaces/huggingface/open-assistant-private-testing/blob/main/app.py#L54
51
+ // @ts-ignore
52
+ stop: ['<|endoftext|>'],
53
+ max_new_tokens: 1024,
54
+ truncate: 1024,
55
+ typical_p: 0.2
56
+ }
57
+ },
58
+ {
59
+ use_cache: false
60
+ }
61
+ );
62
+
63
+ // Regex to check if the text finishes by "<" but is not a piece of code like "`<img>`"
64
+ const endOfTextRegex = /(?<!`)<(?!`)/;
65
+
66
+ for await (const data of response) {
67
+ if (!data) break;
68
+
69
+ try {
70
+ if (!data.token.special) {
71
+ if (messages.at(-1)?.from !== 'bot') {
72
+ // First token has a space at the beginning, trim it
73
+ messages = [...messages, { from: 'bot', content: data.token.text.trimStart() }];
74
+ } else {
75
+ const isEndOfText = endOfTextRegex.test(data.token.text);
76
+
77
+ messages.at(-1)!.content += isEndOfText
78
+ ? data.token.text.replace('<', '')
79
+ : data.token.text;
80
+ messages = messages;
81
+
82
+ if (isEndOfText) break;
83
+ }
84
+ }
85
+ } catch (error) {
86
+ console.error(error);
87
+ break;
88
+ }
89
+ }
90
+ }
91
+
92
  function onWrite() {
93
  if (!message) return;
94
 
 
103
  )
104
  .join('') + assistantToken;
105
 
106
+ getTextGenerationStream(inputs);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
107
  }
108
  </script>
109
 
src/routes/api/conversation/+server.ts ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { env } from '$env/dynamic/private';
2
+ import { PUBLIC_MODEL_ENDPOINT } from '$env/static/public';
3
+
4
+ export async function POST({ request }) {
5
+ return await fetch(PUBLIC_MODEL_ENDPOINT, {
6
+ headers: {
7
+ ...request.headers,
8
+ 'Content-Type': 'application/json',
9
+ Authorization: `Basic ${env.HF_TOKEN}`
10
+ },
11
+ method: 'POST',
12
+ body: await request.text()
13
+ });
14
+ }