@lobehub/chat 1.45.5 → 1.45.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +25 -0
- package/changelog/v1.json +9 -0
- package/locales/ar/modelProvider.json +1 -1
- package/locales/bg-BG/modelProvider.json +1 -1
- package/locales/de-DE/modelProvider.json +1 -1
- package/locales/en-US/modelProvider.json +1 -1
- package/locales/es-ES/modelProvider.json +1 -1
- package/locales/fa-IR/modelProvider.json +1 -1
- package/locales/fr-FR/modelProvider.json +1 -1
- package/locales/it-IT/modelProvider.json +1 -1
- package/locales/ja-JP/modelProvider.json +1 -1
- package/locales/ko-KR/modelProvider.json +1 -1
- package/locales/nl-NL/modelProvider.json +1 -1
- package/locales/pl-PL/modelProvider.json +1 -1
- package/locales/pt-BR/modelProvider.json +1 -1
- package/locales/ru-RU/modelProvider.json +1 -1
- package/locales/tr-TR/modelProvider.json +1 -1
- package/locales/vi-VN/modelProvider.json +1 -1
- package/locales/zh-CN/modelProvider.json +1 -1
- package/locales/zh-TW/modelProvider.json +1 -1
- package/package.json +3 -3
- package/src/app/(main)/chat/(workspace)/features/TelemetryNotification.tsx +1 -1
- package/src/app/(main)/files/(content)/@menu/features/KnowledgeBase/EmptyStatus.tsx +1 -1
- package/src/app/(main)/files/[id]/Header.tsx +1 -1
- package/src/app/(main)/settings/sync/features/WebRTC/SyncSwitch/index.tsx +7 -7
- package/src/components/BubblesLoading/index.tsx +3 -3
- package/src/config/aiModels/index.ts +38 -0
- package/src/config/modelProviders/index.ts +3 -0
- package/src/database/repositories/aiInfra/index.ts +3 -1
- package/src/features/Conversation/Messages/Assistant/FileChunks/index.tsx +1 -1
- package/src/features/Conversation/components/History/index.tsx +1 -1
- package/src/features/InitClientDB/PGliteIcon.tsx +1 -1
- package/src/libs/agent-runtime/utils/openaiCompatibleFactory/index.ts +1 -0
- package/src/locales/default/modelProvider.ts +1 -1
- package/src/migrations/FromV3ToV4/index.ts +1 -1
- package/src/server/globalConfig/{genServerLLMConfig.test.ts → _deprecated.test.ts} +2 -4
- package/src/server/globalConfig/{genServerLLMConfig.ts → _deprecated.ts} +1 -1
- package/src/server/globalConfig/genServerAiProviderConfig.ts +42 -0
- package/src/server/globalConfig/index.ts +23 -1
- package/src/server/routers/lambda/aiModel.ts +2 -2
- package/src/server/routers/lambda/aiProvider.ts +2 -2
- package/src/types/aiModel.ts +1 -0
- package/src/types/serverConfig.ts +1 -0
- package/src/types/user/settings/modelProvider.ts +2 -0
- package/src/utils/__snapshots__/parseModels.test.ts.snap +37 -5
- package/src/utils/_deprecated/__snapshots__/parseModels.test.ts.snap +112 -0
- package/src/utils/_deprecated/parseModels.test.ts +276 -0
- package/src/utils/_deprecated/parseModels.ts +161 -0
- package/src/utils/parseModels.test.ts +153 -46
- package/src/utils/parseModels.ts +34 -21
package/CHANGELOG.md
CHANGED
@@ -2,6 +2,31 @@
|
|
2
2
|
|
3
3
|
# Changelog
|
4
4
|
|
5
|
+
### [Version 1.45.6](https://github.com/lobehub/lobe-chat/compare/v1.45.5...v1.45.6)
|
6
|
+
|
7
|
+
<sup>Released on **2025-01-10**</sup>
|
8
|
+
|
9
|
+
#### 🐛 Bug Fixes
|
10
|
+
|
11
|
+
- **misc**: Fix `*_MODEL_LIST` env in new provider.
|
12
|
+
|
13
|
+
<br/>
|
14
|
+
|
15
|
+
<details>
|
16
|
+
<summary><kbd>Improvements and Fixes</kbd></summary>
|
17
|
+
|
18
|
+
#### What's fixed
|
19
|
+
|
20
|
+
- **misc**: Fix `*_MODEL_LIST` env in new provider, closes [#5350](https://github.com/lobehub/lobe-chat/issues/5350) ([2b1b2a2](https://github.com/lobehub/lobe-chat/commit/2b1b2a2))
|
21
|
+
|
22
|
+
</details>
|
23
|
+
|
24
|
+
<div align="right">
|
25
|
+
|
26
|
+
[](#readme-top)
|
27
|
+
|
28
|
+
</div>
|
29
|
+
|
5
30
|
### [Version 1.45.5](https://github.com/lobehub/lobe-chat/compare/v1.45.4...v1.45.5)
|
6
31
|
|
7
32
|
<sup>Released on **2025-01-09**</sup>
|
package/changelog/v1.json
CHANGED
@@ -151,7 +151,7 @@
|
|
151
151
|
"title": "جارٍ تنزيل النموذج {{model}} "
|
152
152
|
},
|
153
153
|
"endpoint": {
|
154
|
-
"desc": "
|
154
|
+
"desc": "يجب أن تحتوي على http(s)://، يمكن تركها فارغة إذا لم يتم تحديدها محليًا",
|
155
155
|
"title": "عنوان وكيل الواجهة"
|
156
156
|
},
|
157
157
|
"setup": {
|
@@ -151,7 +151,7 @@
|
|
151
151
|
"title": "Изтегляне на модел {{model}} "
|
152
152
|
},
|
153
153
|
"endpoint": {
|
154
|
-
"desc": "
|
154
|
+
"desc": "Трябва да съдържа http(s)://, местният адрес може да остане празен, ако не е зададен допълнително",
|
155
155
|
"title": "Адрес на прокси интерфейс"
|
156
156
|
},
|
157
157
|
"setup": {
|
@@ -151,7 +151,7 @@
|
|
151
151
|
"title": "Lade Modell {{model}} herunter"
|
152
152
|
},
|
153
153
|
"endpoint": {
|
154
|
-
"desc": "
|
154
|
+
"desc": "Muss http(s):// enthalten, kann leer gelassen werden, wenn lokal nicht zusätzlich angegeben.",
|
155
155
|
"title": "Schnittstellen-Proxy-Adresse"
|
156
156
|
},
|
157
157
|
"setup": {
|
@@ -151,7 +151,7 @@
|
|
151
151
|
"title": "Downloading model {{model}}"
|
152
152
|
},
|
153
153
|
"endpoint": {
|
154
|
-
"desc": "
|
154
|
+
"desc": "Must include http(s)://; can be left blank if not specified locally.",
|
155
155
|
"title": "Interface proxy address"
|
156
156
|
},
|
157
157
|
"setup": {
|
@@ -151,7 +151,7 @@
|
|
151
151
|
"title": "Descargando el modelo {{model}} "
|
152
152
|
},
|
153
153
|
"endpoint": {
|
154
|
-
"desc": "
|
154
|
+
"desc": "Debe incluir http(s)://, se puede dejar vacío si no se especifica localmente",
|
155
155
|
"title": "Dirección del proxy de la interfaz"
|
156
156
|
},
|
157
157
|
"setup": {
|
@@ -151,7 +151,7 @@
|
|
151
151
|
"title": "در حال دانلود مدل {{model}} "
|
152
152
|
},
|
153
153
|
"endpoint": {
|
154
|
-
"desc": "
|
154
|
+
"desc": "باید شامل http(s):// باشد، اگر محلی به طور اضافی مشخص نشده باشد میتوان خالی گذاشت",
|
155
155
|
"title": "آدرس سرویس Ollama"
|
156
156
|
},
|
157
157
|
"setup": {
|
@@ -151,7 +151,7 @@
|
|
151
151
|
"title": "Téléchargement du modèle {{model}} en cours"
|
152
152
|
},
|
153
153
|
"endpoint": {
|
154
|
-
"desc": "
|
154
|
+
"desc": "Doit inclure http(s)://, peut rester vide si non spécifié localement",
|
155
155
|
"title": "Adresse du proxy"
|
156
156
|
},
|
157
157
|
"setup": {
|
@@ -151,7 +151,7 @@
|
|
151
151
|
"title": "Download del modello in corso {{model}}"
|
152
152
|
},
|
153
153
|
"endpoint": {
|
154
|
-
"desc": "
|
154
|
+
"desc": "Deve includere http(s)://, può rimanere vuoto se non specificato localmente",
|
155
155
|
"title": "Indirizzo del proxy dell'interfaccia"
|
156
156
|
},
|
157
157
|
"setup": {
|
@@ -151,7 +151,7 @@
|
|
151
151
|
"title": "モデル{{model}}をダウンロード中"
|
152
152
|
},
|
153
153
|
"endpoint": {
|
154
|
-
"desc": "
|
154
|
+
"desc": "http(s)://を含める必要があります。ローカルで特に指定がない場合は空白のままで構いません",
|
155
155
|
"title": "プロキシインターフェースアドレス"
|
156
156
|
},
|
157
157
|
"setup": {
|
@@ -151,7 +151,7 @@
|
|
151
151
|
"title": "Model {{model}} wordt gedownload"
|
152
152
|
},
|
153
153
|
"endpoint": {
|
154
|
-
"desc": "
|
154
|
+
"desc": "Moet http(s):// bevatten, kan leeg gelaten worden als lokaal niet specifiek opgegeven",
|
155
155
|
"title": "Interface Proxyadres"
|
156
156
|
},
|
157
157
|
"setup": {
|
@@ -151,7 +151,7 @@
|
|
151
151
|
"title": "Pobieranie modelu {{model}}"
|
152
152
|
},
|
153
153
|
"endpoint": {
|
154
|
-
"desc": "
|
154
|
+
"desc": "Musi zawierać http(s)://, lokalnie, jeśli nie określono inaczej, można pozostawić puste",
|
155
155
|
"title": "Adres proxy API"
|
156
156
|
},
|
157
157
|
"setup": {
|
@@ -151,7 +151,7 @@
|
|
151
151
|
"title": "Baixando o modelo {{model}} "
|
152
152
|
},
|
153
153
|
"endpoint": {
|
154
|
-
"desc": "
|
154
|
+
"desc": "Deve incluir http(s)://, pode deixar em branco se não houver especificação local adicional",
|
155
155
|
"title": "Endereço do Proxy de Interface"
|
156
156
|
},
|
157
157
|
"setup": {
|
@@ -151,7 +151,7 @@
|
|
151
151
|
"title": "Загрузка модели {{model}} "
|
152
152
|
},
|
153
153
|
"endpoint": {
|
154
|
-
"desc": "
|
154
|
+
"desc": "Должен содержать http(s)://, если локально не указано иное, можно оставить пустым",
|
155
155
|
"title": "Адрес прокси-интерфейса"
|
156
156
|
},
|
157
157
|
"setup": {
|
@@ -151,7 +151,7 @@
|
|
151
151
|
"title": "正在下载模型 {{model}} "
|
152
152
|
},
|
153
153
|
"endpoint": {
|
154
|
-
"desc": "
|
154
|
+
"desc": "http(s):// içermelidir, yerel olarak belirtilmemişse boş bırakılabilir",
|
155
155
|
"title": "Arayüz Proxy Adresi"
|
156
156
|
},
|
157
157
|
"setup": {
|
@@ -151,7 +151,7 @@
|
|
151
151
|
"title": "Đang tải mô hình {{model}}"
|
152
152
|
},
|
153
153
|
"endpoint": {
|
154
|
-
"desc": "
|
154
|
+
"desc": "Phải bao gồm http(s)://, có thể để trống nếu không chỉ định thêm cho địa phương",
|
155
155
|
"title": "Địa chỉ proxy API"
|
156
156
|
},
|
157
157
|
"setup": {
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@lobehub/chat",
|
3
|
-
"version": "1.45.
|
3
|
+
"version": "1.45.6",
|
4
4
|
"description": "Lobe Chat - an open-source, high-performance chatbot framework that supports speech synthesis, multimodal, and extensible Function Call plugin system. Supports one-click free deployment of your private ChatGPT/LLM web application.",
|
5
5
|
"keywords": [
|
6
6
|
"framework",
|
@@ -129,7 +129,7 @@
|
|
129
129
|
"@lobehub/chat-plugins-gateway": "^1.9.0",
|
130
130
|
"@lobehub/icons": "^1.61.1",
|
131
131
|
"@lobehub/tts": "^1.28.0",
|
132
|
-
"@lobehub/ui": "^1.
|
132
|
+
"@lobehub/ui": "^1.164.2",
|
133
133
|
"@neondatabase/serverless": "^0.10.4",
|
134
134
|
"@next/third-parties": "^15.1.4",
|
135
135
|
"@react-spring/web": "^9.7.5",
|
@@ -244,7 +244,7 @@
|
|
244
244
|
"@edge-runtime/vm": "^5.0.0",
|
245
245
|
"@huggingface/tasks": "^0.13.13",
|
246
246
|
"@lobehub/i18n-cli": "^1.20.3",
|
247
|
-
"@lobehub/lint": "^1.25.
|
247
|
+
"@lobehub/lint": "^1.25.5",
|
248
248
|
"@lobehub/seo-cli": "^1.4.3",
|
249
249
|
"@next/bundle-analyzer": "^15.1.4",
|
250
250
|
"@next/eslint-plugin-next": "^15.1.4",
|
@@ -34,7 +34,7 @@ const LineIcon: IconType = forwardRef(({ size = 130, style, ...rest }, ref) => (
|
|
34
34
|
xmlns="http://www.w3.org/2000/svg"
|
35
35
|
{...rest}
|
36
36
|
>
|
37
|
-
<path d="M.5 63a.5.5 0 001 0h-1zM122 1l-2.887 5h5.774L122 1zM1.5 62.042a.5.5 0 10-1 0h1zm-1-1.917a.5.5 0 001 0h-1zm1-1.917a.5.5 0 00-1 0h1zm-1-1.916a.5.5 0 001 0h-1zm1-1.917a.5.5 0 00-1 0h1zm-1-1.917a.5.5 0 101 0h-1zm1-1.916a.5.5 0 10-1 0h1zm-1-1.917a.5.5 0 001 0h-1zm1-1.917a.5.5 0 00-1 0h1zm-1-1.916a.5.5 0 001 0h-1zm1-1.917a.5.5 0 00-1 0h1zm-1-1.917a.5.5 0 101 0h-1zm1.063-1.938a.5.5 0 10-.991-.13l.991.13zm-.418-2.274a.5.5 0 00.924.383l-.924-.383zm1.904-1.312a.5.5 0 10-.793-.609l.793.61zm.776-2.178a.5.5 0 00.61.793l-.61-.793zm2.304-.187a.5.5 0 00-.383-.924l.383.924zm1.761-1.497a.5.5 0 00.13.991l-.13-.991zm2.12.928a.5.5 0 100-1v1zm2.019-1a.5.5 0 000 1v-1zm2.02 1a.5.5 0 000-1v1zm2.018-1a.5.5 0 000 1v-1zm2.02 1a.5.5 0 100-1v1zm2.019-1a.5.5 0 100 1v-1zm2.019 1a.5.5 0 000-1v1zm2.02-1a.5.5 0 000 1v-1zm2.018 1a.5.5 0 000-1v1zm2.02-1a.5.5 0 000 1v-1zm2.019 1a.5.5 0 100-1v1zm2.02-1a.5.5 0 100 1v-1zm2.018 1a.5.5 0 000-1v1zm2.02-1a.5.5 0 000 1v-1zm2.019 1a.5.5 0 100-1v1zm2.02-1a.5.5 0 100 1v-1zm2.018 1a.5.5 0 000-1v1zm2.02-1a.5.5 0 000 1v-1zm2.019 1a.5.5 0 000-1v1zm2.019-1a.5.5 0 000 1v-1zm2.02 1a.5.5 0 100-1v1zm2.018-1a.5.5 0 100 1v-1zm2.02 1a.5.5 0 000-1v1zm2.019-1a.5.5 0 000 1v-1zm2.02 1a.5.5 0 100-1v1zm2.018-1a.5.5 0 100 1v-1zm2.02 1a.5.5 0 000-1v1zm2.019-1a.5.5 0 000 1v-1zm2.02 1a.5.5 0 000-1v1zm2.018-1a.5.5 0 000 1v-1zm2.02 1a.5.5 0 100-1v1zm2.019-1a.5.5 0 100 1v-1zm2.019 1a.5.5 0 000-1v1zm2.02-1a.5.5 0 000 1v-1zm2.019 1a.5.5 0 000-1v1zm2.019-1a.5.5 0 100 1v-1zm2.019 1a.5.5 0 100-1v1zm2.02-1a.5.5 0 100 1v-1zm2.018 1a.5.5 0 000-1v1zm2.02-1a.5.5 0 000 1v-1zm2.019 1a.5.5 0 000-1v1zm2.02-1a.5.5 0 100 1v-1zm2.018 1a.5.5 0 100-1v1zm2.02-1a.5.5 0 100 1v-1zm2.019 1a.5.5 0 000-1v1zm2.019-1a.5.5 0 000 1v-1zm2.019 1a.5.5 0 000-1v1zm2.019-1a.5.5 0 000 1v-1zm2.02 1a.5.5 0 000-1v1zm2.019-1a.5.5 0 000 1v-1zm2.019 1a.5.5 0 000-1v1zm2.019-1a.5.5 0 000 1v-1zm2.12.928a.501.501 0 00-.13-.991l.13.991zm1.761-1.497a.501.501 0 00.383.924l-.383-.924zm2.304-.187a.5.5 0 00-.609-.793l.609.793zm.776-2.178a.5.5 0 10.793.609l-.793-.61zm1.904-1.312a.5.5 0 10-.924-.383l.924.383zm-.418-2.274a.5.5 0 10.991.13l-.991-.13zm1.063-1.938a.5.5 0 00-1 0h1zm-1-1.917a.5.5 0 001 0h-1zm1-1.917a.5.5 0 00-1 0h1zm-1-1.916a.5.5 0 001 0h-1zm1-1.917a.5.5 0 00-1 0h1zm-1-1.917a.5.5 0 001 0h-1zm1-1.916a.5.5 0 00-1 0h1zm-1-1.917a.5.5 0 001 0h-1zm1-1.917a.5.5 0 00-1 0h1zm-1-1.916a.5.5 0 001 0h-1zm1-1.917a.5.5 0 00-1 0h1zm-1-1.917a.5.5 0 001 0h-1zM1.5 63v-.958h-1V63h1zm0-2.875v-1.917h-1v1.917h1zm0-3.833v-1.917h-1v1.917h1zm0-3.834v-1.916h-1v1.916h1zm0-3.833v-1.917h-1v1.917h1zm0-3.833v-1.917h-1v1.917h1zm0-3.834V40h-1v.958h1zm0-.958c0-.333.022-.66.063-.98l-.991-.13A8.574 8.574 0 00.5 40h1zm.569-2.87c.253-.61.584-1.18.98-1.696l-.793-.609a8.49 8.49 0 00-1.11 1.921l.923.383zm2.365-3.08a7.487 7.487 0 011.695-.981l-.383-.924a8.495 8.495 0 00-1.92 1.111l.608.793zm3.586-1.487c.32-.041.648-.063.98-.063v-1c-.376 0-.746.024-1.11.072l.13.991zM9 32.5h1.01v-1H9v1zm3.029 0h2.02v-1h-2.02v1zm4.038 0h2.02v-1h-2.02v1zm4.039 0h2.019v-1h-2.02v1zm4.038 0h2.02v-1h-2.02v1zm4.039 0h2.019v-1h-2.02v1zm4.038 0h2.02v-1h-2.02v1zm4.039 0h2.019v-1h-2.02v1zm4.038 0h2.02v-1h-2.02v1zm4.038 0h2.02v-1h-2.02v1zm4.039 0h2.02v-1h-2.02v1zm4.038 0h2.02v-1h-2.02v1zm4.039 0h2.02v-1h-2.02v1zm4.038 0h2.02v-1h-2.02v1zm4.039 0h2.02v-1h-2.02v1zm4.038 0h2.02v-1h-2.02v1zm4.039 0h2.019v-1h-2.02v1zm4.038 0h2.02v-1h-2.02v1zm4.039 0h2.019v-1h-2.02v1zm4.038 0h2.02v-1h-2.02v1zm4.039 0h2.019v-1h-2.02v1zm4.038 0h2.02v-1h-2.02v1zm4.039 0h2.019v-1h-2.02v1zm4.038 0h2.019v-1h-2.019v1zm4.038 0h2.02v-1h-2.02v1zm4.039 0h2.019v-1h-2.019v1zm4.038 0H114v-1h-1.01v1zm1.01 0c.376 0 .746-.024 1.11-.072l-.13-.991c-.32.041-.648.063-.98.063v1zm3.254-.645a8.506 8.506 0 001.921-1.111l-.609-.793a7.519 7.519 0 01-1.695.98l.383.924zm3.49-2.68a8.516 8.516 0 001.111-1.921l-.924-.383a7.527 7.527 0 01-.98 1.695l.793.609zm1.684-4.066c.048-.363.072-.733.072-1.109h-1c0 .332-.022.66-.063.98l.991.13zM122.5 24v-.958h-1V24h1zm0-2.875v-1.917h-1v1.917h1zm0-3.833v-1.917h-1v1.917h1zm0-3.834v-1.916h-1v1.916h1zm0-3.833V7.708h-1v1.917h1zm0-3.833V3.875h-1v1.917h1z"
|
37
|
+
<path d="M.5 63a.5.5 0 001 0h-1zM122 1l-2.887 5h5.774L122 1zM1.5 62.042a.5.5 0 10-1 0h1zm-1-1.917a.5.5 0 001 0h-1zm1-1.917a.5.5 0 00-1 0h1zm-1-1.916a.5.5 0 001 0h-1zm1-1.917a.5.5 0 00-1 0h1zm-1-1.917a.5.5 0 101 0h-1zm1-1.916a.5.5 0 10-1 0h1zm-1-1.917a.5.5 0 001 0h-1zm1-1.917a.5.5 0 00-1 0h1zm-1-1.916a.5.5 0 001 0h-1zm1-1.917a.5.5 0 00-1 0h1zm-1-1.917a.5.5 0 101 0h-1zm1.063-1.938a.5.5 0 10-.991-.13l.991.13zm-.418-2.274a.5.5 0 00.924.383l-.924-.383zm1.904-1.312a.5.5 0 10-.793-.609l.793.61zm.776-2.178a.5.5 0 00.61.793l-.61-.793zm2.304-.187a.5.5 0 00-.383-.924l.383.924zm1.761-1.497a.5.5 0 00.13.991l-.13-.991zm2.12.928a.5.5 0 100-1v1zm2.019-1a.5.5 0 000 1v-1zm2.02 1a.5.5 0 000-1v1zm2.018-1a.5.5 0 000 1v-1zm2.02 1a.5.5 0 100-1v1zm2.019-1a.5.5 0 100 1v-1zm2.019 1a.5.5 0 000-1v1zm2.02-1a.5.5 0 000 1v-1zm2.018 1a.5.5 0 000-1v1zm2.02-1a.5.5 0 000 1v-1zm2.019 1a.5.5 0 100-1v1zm2.02-1a.5.5 0 100 1v-1zm2.018 1a.5.5 0 000-1v1zm2.02-1a.5.5 0 000 1v-1zm2.019 1a.5.5 0 100-1v1zm2.02-1a.5.5 0 100 1v-1zm2.018 1a.5.5 0 000-1v1zm2.02-1a.5.5 0 000 1v-1zm2.019 1a.5.5 0 000-1v1zm2.019-1a.5.5 0 000 1v-1zm2.02 1a.5.5 0 100-1v1zm2.018-1a.5.5 0 100 1v-1zm2.02 1a.5.5 0 000-1v1zm2.019-1a.5.5 0 000 1v-1zm2.02 1a.5.5 0 100-1v1zm2.018-1a.5.5 0 100 1v-1zm2.02 1a.5.5 0 000-1v1zm2.019-1a.5.5 0 000 1v-1zm2.02 1a.5.5 0 000-1v1zm2.018-1a.5.5 0 000 1v-1zm2.02 1a.5.5 0 100-1v1zm2.019-1a.5.5 0 100 1v-1zm2.019 1a.5.5 0 000-1v1zm2.02-1a.5.5 0 000 1v-1zm2.019 1a.5.5 0 000-1v1zm2.019-1a.5.5 0 100 1v-1zm2.019 1a.5.5 0 100-1v1zm2.02-1a.5.5 0 100 1v-1zm2.018 1a.5.5 0 000-1v1zm2.02-1a.5.5 0 000 1v-1zm2.019 1a.5.5 0 000-1v1zm2.02-1a.5.5 0 100 1v-1zm2.018 1a.5.5 0 100-1v1zm2.02-1a.5.5 0 100 1v-1zm2.019 1a.5.5 0 000-1v1zm2.019-1a.5.5 0 000 1v-1zm2.019 1a.5.5 0 000-1v1zm2.019-1a.5.5 0 000 1v-1zm2.02 1a.5.5 0 000-1v1zm2.019-1a.5.5 0 000 1v-1zm2.019 1a.5.5 0 000-1v1zm2.019-1a.5.5 0 000 1v-1zm2.12.928a.501.501 0 00-.13-.991l.13.991zm1.761-1.497a.501.501 0 00.383.924l-.383-.924zm2.304-.187a.5.5 0 00-.609-.793l.609.793zm.776-2.178a.5.5 0 10.793.609l-.793-.61zm1.904-1.312a.5.5 0 10-.924-.383l.924.383zm-.418-2.274a.5.5 0 10.991.13l-.991-.13zm1.063-1.938a.5.5 0 00-1 0h1zm-1-1.917a.5.5 0 001 0h-1zm1-1.917a.5.5 0 00-1 0h1zm-1-1.916a.5.5 0 001 0h-1zm1-1.917a.5.5 0 00-1 0h1zm-1-1.917a.5.5 0 001 0h-1zm1-1.916a.5.5 0 00-1 0h1zm-1-1.917a.5.5 0 001 0h-1zm1-1.917a.5.5 0 00-1 0h1zm-1-1.916a.5.5 0 001 0h-1zm1-1.917a.5.5 0 00-1 0h1zm-1-1.917a.5.5 0 001 0h-1zM1.5 63v-.958h-1V63h1zm0-2.875v-1.917h-1v1.917h1zm0-3.833v-1.917h-1v1.917h1zm0-3.834v-1.916h-1v1.916h1zm0-3.833v-1.917h-1v1.917h1zm0-3.833v-1.917h-1v1.917h1zm0-3.834V40h-1v.958h1zm0-.958c0-.333.022-.66.063-.98l-.991-.13A8.574 8.574 0 00.5 40h1zm.569-2.87c.253-.61.584-1.18.98-1.696l-.793-.609a8.49 8.49 0 00-1.11 1.921l.923.383zm2.365-3.08a7.487 7.487 0 011.695-.981l-.383-.924a8.495 8.495 0 00-1.92 1.111l.608.793zm3.586-1.487c.32-.041.648-.063.98-.063v-1c-.376 0-.746.024-1.11.072l.13.991zM9 32.5h1.01v-1H9v1zm3.029 0h2.02v-1h-2.02v1zm4.038 0h2.02v-1h-2.02v1zm4.039 0h2.019v-1h-2.02v1zm4.038 0h2.02v-1h-2.02v1zm4.039 0h2.019v-1h-2.02v1zm4.038 0h2.02v-1h-2.02v1zm4.039 0h2.019v-1h-2.02v1zm4.038 0h2.02v-1h-2.02v1zm4.038 0h2.02v-1h-2.02v1zm4.039 0h2.02v-1h-2.02v1zm4.038 0h2.02v-1h-2.02v1zm4.039 0h2.02v-1h-2.02v1zm4.038 0h2.02v-1h-2.02v1zm4.039 0h2.02v-1h-2.02v1zm4.038 0h2.02v-1h-2.02v1zm4.039 0h2.019v-1h-2.02v1zm4.038 0h2.02v-1h-2.02v1zm4.039 0h2.019v-1h-2.02v1zm4.038 0h2.02v-1h-2.02v1zm4.039 0h2.019v-1h-2.02v1zm4.038 0h2.02v-1h-2.02v1zm4.039 0h2.019v-1h-2.02v1zm4.038 0h2.019v-1h-2.019v1zm4.038 0h2.02v-1h-2.02v1zm4.039 0h2.019v-1h-2.019v1zm4.038 0H114v-1h-1.01v1zm1.01 0c.376 0 .746-.024 1.11-.072l-.13-.991c-.32.041-.648.063-.98.063v1zm3.254-.645a8.506 8.506 0 001.921-1.111l-.609-.793a7.519 7.519 0 01-1.695.98l.383.924zm3.49-2.68a8.516 8.516 0 001.111-1.921l-.924-.383a7.527 7.527 0 01-.98 1.695l.793.609zm1.684-4.066c.048-.363.072-.733.072-1.109h-1c0 .332-.022.66-.063.98l.991.13zM122.5 24v-.958h-1V24h1zm0-2.875v-1.917h-1v1.917h1zm0-3.833v-1.917h-1v1.917h1zm0-3.834v-1.916h-1v1.916h1zm0-3.833V7.708h-1v1.917h1zm0-3.833V3.875h-1v1.917h1z" />
|
38
38
|
</svg>
|
39
39
|
));
|
40
40
|
|
@@ -19,15 +19,15 @@ const SyncSwitch = memo<SyncSwitchProps>(({ value, onChange }) => {
|
|
19
19
|
role="switch"
|
20
20
|
type="checkbox"
|
21
21
|
/>
|
22
|
-
<span className="switch__base-outer"
|
23
|
-
<span className="switch__base-inner"
|
22
|
+
<span className="switch__base-outer" />
|
23
|
+
<span className="switch__base-inner" />
|
24
24
|
<svg className="switch__base-neon" height="24px" viewBox="0 0 40 24" width="40px">
|
25
25
|
<defs>
|
26
26
|
<filter id="switch-glow">
|
27
|
-
<feGaussianBlur result="coloredBlur" stdDeviation="1"
|
27
|
+
<feGaussianBlur result="coloredBlur" stdDeviation="1" />
|
28
28
|
<feMerge>
|
29
|
-
<feMergeNode in="coloredBlur"
|
30
|
-
<feMergeNode in="SourceGraphic"
|
29
|
+
<feMergeNode in="coloredBlur" />
|
30
|
+
<feMergeNode in="SourceGraphic" />
|
31
31
|
</feMerge>
|
32
32
|
</filter>
|
33
33
|
<linearGradient id="switch-gradient1" x1="0" x2="1" y1="0" y2="0">
|
@@ -51,7 +51,7 @@ const SyncSwitch = memo<SyncSwitchProps>(({ value, onChange }) => {
|
|
51
51
|
strokeWidth="1"
|
52
52
|
/>
|
53
53
|
</svg>
|
54
|
-
<span className="switch__knob-shadow"
|
54
|
+
<span className="switch__knob-shadow" />
|
55
55
|
<span className="switch__knob-container">
|
56
56
|
<span className="switch__knob">
|
57
57
|
<svg className="switch__knob-neon" height="48px" viewBox="0 0 48 48" width="48px">
|
@@ -69,7 +69,7 @@ const SyncSwitch = memo<SyncSwitchProps>(({ value, onChange }) => {
|
|
69
69
|
</svg>
|
70
70
|
</span>
|
71
71
|
</span>
|
72
|
-
<span className="switch__led"
|
72
|
+
<span className="switch__led" />
|
73
73
|
<span className="switch__text">Power</span>
|
74
74
|
</label>
|
75
75
|
</div>
|
@@ -49,9 +49,9 @@ const BubblesLoadingIcon: IconType = forwardRef(
|
|
49
49
|
xmlns="http://www.w3.org/2000/svg"
|
50
50
|
{...rest}
|
51
51
|
>
|
52
|
-
<circle cx="7" cy="16" r="6"
|
53
|
-
<circle cx="30" cy="16" r="6"
|
54
|
-
<circle cx="53" cy="16" r="6"
|
52
|
+
<circle cx="7" cy="16" r="6" />
|
53
|
+
<circle cx="30" cy="16" r="6" />
|
54
|
+
<circle cx="53" cy="16" r="6" />
|
55
55
|
</svg>
|
56
56
|
);
|
57
57
|
},
|
@@ -96,3 +96,41 @@ export const LOBE_DEFAULT_MODEL_LIST = buildDefaultModelList({
|
|
96
96
|
zeroone,
|
97
97
|
zhipu,
|
98
98
|
});
|
99
|
+
|
100
|
+
export { default as ai21 } from './ai21';
|
101
|
+
export { default as ai360 } from './ai360';
|
102
|
+
export { default as anthropic } from './anthropic';
|
103
|
+
export { default as azure } from './azure';
|
104
|
+
export { default as baichuan } from './baichuan';
|
105
|
+
export { default as bedrock } from './bedrock';
|
106
|
+
export { default as cloudflare } from './cloudflare';
|
107
|
+
export { default as deepseek } from './deepseek';
|
108
|
+
export { default as fireworksai } from './fireworksai';
|
109
|
+
export { default as giteeai } from './giteeai';
|
110
|
+
export { default as github } from './github';
|
111
|
+
export { default as google } from './google';
|
112
|
+
export { default as groq } from './groq';
|
113
|
+
export { default as higress } from './higress';
|
114
|
+
export { default as huggingface } from './huggingface';
|
115
|
+
export { default as hunyuan } from './hunyuan';
|
116
|
+
export { default as internlm } from './internlm';
|
117
|
+
export { default as minimax } from './minimax';
|
118
|
+
export { default as mistral } from './mistral';
|
119
|
+
export { default as moonshot } from './moonshot';
|
120
|
+
export { default as novita } from './novita';
|
121
|
+
export { default as ollama } from './ollama';
|
122
|
+
export { default as openai } from './openai';
|
123
|
+
export { default as openrouter } from './openrouter';
|
124
|
+
export { default as perplexity } from './perplexity';
|
125
|
+
export { default as qwen } from './qwen';
|
126
|
+
export { default as sensenova } from './sensenova';
|
127
|
+
export { default as siliconcloud } from './siliconcloud';
|
128
|
+
export { default as spark } from './spark';
|
129
|
+
export { default as stepfun } from './stepfun';
|
130
|
+
export { default as taichu } from './taichu';
|
131
|
+
export { default as togetherai } from './togetherai';
|
132
|
+
export { default as upstage } from './upstage';
|
133
|
+
export { default as wenxin } from './wenxin';
|
134
|
+
export { default as xai } from './xai';
|
135
|
+
export { default as zeroone } from './zeroone';
|
136
|
+
export { default as zhipu } from './zhipu';
|
@@ -38,6 +38,9 @@ import XAIProvider from './xai';
|
|
38
38
|
import ZeroOneProvider from './zeroone';
|
39
39
|
import ZhiPuProvider from './zhipu';
|
40
40
|
|
41
|
+
/**
|
42
|
+
* @deprecated
|
43
|
+
*/
|
41
44
|
export const LOBE_DEFAULT_MODEL_LIST: ChatModelCard[] = [
|
42
45
|
OpenAIProvider.chatModels,
|
43
46
|
QwenProvider.chatModels,
|
@@ -120,7 +120,9 @@ export class AiInfraRepos {
|
|
120
120
|
): Promise<AiProviderModelListItem[] | undefined> => {
|
121
121
|
try {
|
122
122
|
const { default: providerModels } = await import(`@/config/aiModels/${providerId}`);
|
123
|
-
|
123
|
+
|
124
|
+
const presetList = this.providerConfigs[providerId]?.serverModelLists || providerModels;
|
125
|
+
return (presetList as AIChatModelCard[]).map<AiProviderModelListItem>((m) => ({
|
124
126
|
...m,
|
125
127
|
enabled: m.enabled || false,
|
126
128
|
source: AiModelSourceEnum.Builtin,
|
@@ -65,7 +65,7 @@ const FileChunks = memo<FileChunksProps>(({ data }) => {
|
|
65
65
|
{showDetail && (
|
66
66
|
<Flexbox gap={8} horizontal wrap={'wrap'}>
|
67
67
|
{data.map((item, index) => {
|
68
|
-
return <ChunkItem index={index} key={item.id} {...item}
|
68
|
+
return <ChunkItem index={index} key={item.id} {...item} />;
|
69
69
|
})}
|
70
70
|
</Flexbox>
|
71
71
|
)}
|
@@ -57,7 +57,7 @@ const History = memo(() => {
|
|
57
57
|
</Flexbox>
|
58
58
|
<Flexbox align={'flex-start'} gap={8} horizontal>
|
59
59
|
<Flexbox align={'center'} padding={8} width={20}>
|
60
|
-
<div className={styles.line}
|
60
|
+
<div className={styles.line} />
|
61
61
|
</Flexbox>
|
62
62
|
<Markdown className={styles.content} variant={'chat'}>
|
63
63
|
{content}
|
@@ -20,7 +20,7 @@ const PGliteIcon: IconType = forwardRef(({ size = '1em', style, ...rest }, ref)
|
|
20
20
|
<path
|
21
21
|
clip-rule="evenodd"
|
22
22
|
d="M941.581 335.737v460.806c0 15.926-12.913 28.836-28.832 28.818l-115.283-.137c-15.243-.018-27.706-11.88-28.703-26.877.011-.569.018-1.138.018-1.711l-.004-172.904c0-47.745-38.736-86.451-86.454-86.451-46.245 0-84.052-36.359-86.342-82.068V191.496l201.708.149c79.484.058 143.892 64.553 143.892 144.092zm-576-144.281v201.818c0 47.746 38.682 86.456 86.4 86.456h86.4v-5.796c0 66.816 54.13 120.98 120.902 120.98 28.617 0 51.815 23.213 51.815 51.848v149.644c0 .688.011 1.372.025 2.057-.943 15.065-13.453 26.992-28.746 26.992l-144.982-.007.986-201.586c.079-15.915-12.755-28.88-28.66-28.959-15.904-.079-28.861 12.763-28.94 28.678l-.986 201.741v.118l-172.174-.01V623.722c0-15.915-12.895-28.819-28.8-28.819-15.906 0-28.8 12.904-28.8 28.819v201.704l-143.642-.007c-15.905-.004-28.798-12.904-28.798-28.819V335.547c0-79.58 64.471-144.093 144.001-144.092l143.999.001zm446.544 173.693c0-23.874-19.343-43.228-43.2-43.228-23.861 0-43.2 19.354-43.2 43.228 0 23.875 19.339 43.226 43.2 43.226 23.857 0 43.2-19.351 43.2-43.226z"
|
23
|
-
|
23
|
+
/>
|
24
24
|
</svg>
|
25
25
|
);
|
26
26
|
});
|
@@ -279,6 +279,7 @@ export const LobeOpenAICompatibleFactory = <T extends Record<string, any> = any>
|
|
279
279
|
return models.transformModel(item);
|
280
280
|
}
|
281
281
|
|
282
|
+
// TODO: should refactor after remove v1 user/modelList code
|
282
283
|
const knownModel = LOBE_DEFAULT_MODEL_LIST.find((model) => model.id === item.id);
|
283
284
|
|
284
285
|
if (knownModel) {
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import type { Migration, MigrationData } from '@/migrations/VersionController';
|
2
|
-
import { transformToChatModelCards } from '@/utils/parseModels';
|
2
|
+
import { transformToChatModelCards } from '@/utils/_deprecated/parseModels';
|
3
3
|
|
4
4
|
import { V3ConfigState, V3LegacyConfig, V3OpenAIConfig, V3Settings } from './types/v3';
|
5
5
|
import { V4AzureOpenAIConfig, V4ConfigState, V4ProviderConfig, V4Settings } from './types/v4';
|
@@ -1,8 +1,6 @@
|
|
1
1
|
import { describe, expect, it, vi } from 'vitest';
|
2
2
|
|
3
|
-
import {
|
4
|
-
|
5
|
-
import { genServerLLMConfig } from './genServerLLMConfig';
|
3
|
+
import { genServerLLMConfig } from './_deprecated';
|
6
4
|
|
7
5
|
// Mock ModelProvider enum
|
8
6
|
vi.mock('@/libs/agent-runtime', () => ({
|
@@ -40,7 +38,7 @@ vi.mock('@/config/llm', () => ({
|
|
40
38
|
}));
|
41
39
|
|
42
40
|
// Mock parse models utils
|
43
|
-
vi.mock('@/utils/parseModels', () => ({
|
41
|
+
vi.mock('@/utils/_deprecated/parseModels', () => ({
|
44
42
|
extractEnabledModels: (modelString: string, withDeploymentName?: boolean) => {
|
45
43
|
// Returns different format if withDeploymentName is true
|
46
44
|
return withDeploymentName ? [`${modelString}_withDeployment`] : [modelString];
|
@@ -2,7 +2,7 @@ import { getLLMConfig } from '@/config/llm';
|
|
2
2
|
import * as ProviderCards from '@/config/modelProviders';
|
3
3
|
import { ModelProvider } from '@/libs/agent-runtime';
|
4
4
|
import { ModelProviderCard } from '@/types/llm';
|
5
|
-
import { extractEnabledModels, transformToChatModelCards } from '@/utils/parseModels';
|
5
|
+
import { extractEnabledModels, transformToChatModelCards } from '@/utils/_deprecated/parseModels';
|
6
6
|
|
7
7
|
export const genServerLLMConfig = (specificConfig: Record<any, any>) => {
|
8
8
|
const llmConfig = getLLMConfig() as Record<string, any>;
|
@@ -0,0 +1,42 @@
|
|
1
|
+
import * as AiModels from '@/config/aiModels';
|
2
|
+
import { getLLMConfig } from '@/config/llm';
|
3
|
+
import { ModelProvider } from '@/libs/agent-runtime';
|
4
|
+
import { AiFullModelCard } from '@/types/aiModel';
|
5
|
+
import { ProviderConfig } from '@/types/user/settings';
|
6
|
+
import { extractEnabledModels, transformToAiChatModelList } from '@/utils/parseModels';
|
7
|
+
|
8
|
+
export const genServerAiProvidersConfig = (specificConfig: Record<any, any>) => {
|
9
|
+
const llmConfig = getLLMConfig() as Record<string, any>;
|
10
|
+
|
11
|
+
return Object.values(ModelProvider).reduce(
|
12
|
+
(config, provider) => {
|
13
|
+
const providerUpperCase = provider.toUpperCase();
|
14
|
+
const providerCard = AiModels[provider] as AiFullModelCard[];
|
15
|
+
const providerConfig = specificConfig[provider as keyof typeof specificConfig] || {};
|
16
|
+
const providerModelList =
|
17
|
+
process.env[providerConfig.modelListKey ?? `${providerUpperCase}_MODEL_LIST`];
|
18
|
+
|
19
|
+
const defaultChatModels = providerCard.filter((c) => c.type === 'chat');
|
20
|
+
|
21
|
+
config[provider] = {
|
22
|
+
enabled: llmConfig[providerConfig.enabledKey || `ENABLED_${providerUpperCase}`],
|
23
|
+
enabledModels: extractEnabledModels(
|
24
|
+
providerModelList,
|
25
|
+
providerConfig.withDeploymentName || false,
|
26
|
+
),
|
27
|
+
serverModelLists: transformToAiChatModelList({
|
28
|
+
defaultChatModels: defaultChatModels || [],
|
29
|
+
modelString: providerModelList,
|
30
|
+
providerId: provider,
|
31
|
+
withDeploymentName: providerConfig.withDeploymentName || false,
|
32
|
+
}),
|
33
|
+
...(providerConfig.fetchOnClient !== undefined && {
|
34
|
+
fetchOnClient: providerConfig.fetchOnClient,
|
35
|
+
}),
|
36
|
+
};
|
37
|
+
|
38
|
+
return config;
|
39
|
+
},
|
40
|
+
{} as Record<string, ProviderConfig>,
|
41
|
+
);
|
42
|
+
};
|
@@ -6,19 +6,41 @@ import { enableNextAuth } from '@/const/auth';
|
|
6
6
|
import { parseSystemAgent } from '@/server/globalConfig/parseSystemAgent';
|
7
7
|
import { GlobalServerConfig } from '@/types/serverConfig';
|
8
8
|
|
9
|
-
import { genServerLLMConfig } from './
|
9
|
+
import { genServerLLMConfig } from './_deprecated';
|
10
|
+
import { genServerAiProvidersConfig } from './genServerAiProviderConfig';
|
10
11
|
import { parseAgentConfig } from './parseDefaultAgent';
|
11
12
|
|
12
13
|
export const getServerGlobalConfig = () => {
|
13
14
|
const { ACCESS_CODES, DEFAULT_AGENT_CONFIG } = getAppConfig();
|
14
15
|
|
15
16
|
const config: GlobalServerConfig = {
|
17
|
+
aiProvider: genServerAiProvidersConfig({
|
18
|
+
azure: {
|
19
|
+
enabledKey: 'ENABLED_AZURE_OPENAI',
|
20
|
+
withDeploymentName: true,
|
21
|
+
},
|
22
|
+
bedrock: {
|
23
|
+
enabledKey: 'ENABLED_AWS_BEDROCK',
|
24
|
+
modelListKey: 'AWS_BEDROCK_MODEL_LIST',
|
25
|
+
},
|
26
|
+
giteeai: {
|
27
|
+
enabledKey: 'ENABLED_GITEE_AI',
|
28
|
+
modelListKey: 'GITEE_AI_MODEL_LIST',
|
29
|
+
},
|
30
|
+
ollama: {
|
31
|
+
fetchOnClient: !process.env.OLLAMA_PROXY_URL,
|
32
|
+
},
|
33
|
+
}),
|
16
34
|
defaultAgent: {
|
17
35
|
config: parseAgentConfig(DEFAULT_AGENT_CONFIG),
|
18
36
|
},
|
19
37
|
enableUploadFileToServer: !!fileEnv.S3_SECRET_ACCESS_KEY,
|
20
38
|
enabledAccessCode: ACCESS_CODES?.length > 0,
|
39
|
+
|
21
40
|
enabledOAuthSSO: enableNextAuth,
|
41
|
+
/**
|
42
|
+
* @deprecated
|
43
|
+
*/
|
22
44
|
languageModel: genServerLLMConfig({
|
23
45
|
azure: {
|
24
46
|
enabledKey: 'ENABLED_AZURE_OPENAI',
|
@@ -19,14 +19,14 @@ const aiModelProcedure = authedProcedure.use(async (opts) => {
|
|
19
19
|
const { ctx } = opts;
|
20
20
|
|
21
21
|
const gateKeeper = await KeyVaultsGateKeeper.initWithEnvKey();
|
22
|
-
const {
|
22
|
+
const { aiProvider } = getServerGlobalConfig();
|
23
23
|
|
24
24
|
return opts.next({
|
25
25
|
ctx: {
|
26
26
|
aiInfraRepos: new AiInfraRepos(
|
27
27
|
serverDB,
|
28
28
|
ctx.userId,
|
29
|
-
|
29
|
+
aiProvider as Record<string, ProviderConfig>,
|
30
30
|
),
|
31
31
|
aiModelModel: new AiModelModel(serverDB, ctx.userId),
|
32
32
|
gateKeeper,
|