@lobehub/chat 1.53.10 → 1.53.12
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 +50 -0
- package/changelog/v1.json +18 -0
- package/locales/ar/modelProvider.json +2 -2
- package/locales/bg-BG/modelProvider.json +2 -2
- package/locales/de-DE/modelProvider.json +2 -2
- package/locales/en-US/modelProvider.json +2 -2
- package/locales/es-ES/modelProvider.json +2 -2
- package/locales/fa-IR/modelProvider.json +2 -2
- package/locales/fr-FR/modelProvider.json +2 -2
- package/locales/it-IT/modelProvider.json +2 -2
- package/locales/ja-JP/modelProvider.json +2 -2
- package/locales/ko-KR/modelProvider.json +2 -2
- package/locales/nl-NL/modelProvider.json +2 -2
- package/locales/pl-PL/modelProvider.json +2 -2
- package/locales/pt-BR/modelProvider.json +2 -2
- package/locales/ru-RU/modelProvider.json +2 -2
- package/locales/tr-TR/modelProvider.json +2 -2
- package/locales/vi-VN/modelProvider.json +2 -2
- package/locales/zh-CN/modelProvider.json +3 -3
- package/locales/zh-TW/modelProvider.json +2 -2
- package/package.json +1 -1
- package/src/app/[variants]/(main)/settings/provider/features/CreateNewProvider/index.tsx +8 -8
- package/src/config/aiModels/spark.ts +9 -0
- package/src/libs/agent-runtime/ai360/index.ts +37 -21
- package/src/libs/agent-runtime/anthropic/index.ts +17 -5
- package/src/libs/agent-runtime/baichuan/index.ts +11 -2
- package/src/libs/agent-runtime/cloudflare/index.ts +22 -7
- package/src/libs/agent-runtime/deepseek/index.ts +29 -13
- package/src/libs/agent-runtime/fireworksai/index.ts +30 -18
- package/src/libs/agent-runtime/giteeai/index.ts +46 -30
- package/src/libs/agent-runtime/github/index.test.ts +0 -49
- package/src/libs/agent-runtime/github/index.ts +18 -6
- package/src/libs/agent-runtime/google/index.ts +17 -7
- package/src/libs/agent-runtime/groq/index.ts +43 -27
- package/src/libs/agent-runtime/higress/index.ts +45 -25
- package/src/libs/agent-runtime/huggingface/index.ts +20 -9
- package/src/libs/agent-runtime/hunyuan/index.ts +34 -18
- package/src/libs/agent-runtime/internlm/index.ts +27 -12
- package/src/libs/agent-runtime/lmstudio/index.ts +34 -0
- package/src/libs/agent-runtime/mistral/index.ts +24 -14
- package/src/libs/agent-runtime/moonshot/index.ts +28 -13
- package/src/libs/agent-runtime/novita/index.ts +35 -18
- package/src/libs/agent-runtime/ollama/index.test.ts +20 -1
- package/src/libs/agent-runtime/ollama/index.ts +33 -5
- package/src/libs/agent-runtime/openai/__snapshots__/index.test.ts.snap +108 -0
- package/src/libs/agent-runtime/openai/index.ts +43 -27
- package/src/libs/agent-runtime/openrouter/__snapshots__/index.test.ts.snap +39 -11
- package/src/libs/agent-runtime/openrouter/index.ts +51 -33
- package/src/libs/agent-runtime/qwen/index.ts +45 -29
- package/src/libs/agent-runtime/sensenova/index.ts +24 -6
- package/src/libs/agent-runtime/siliconcloud/index.ts +50 -34
- package/src/libs/agent-runtime/stepfun/index.ts +42 -26
- package/src/libs/agent-runtime/tencentcloud/index.ts +44 -0
- package/src/libs/agent-runtime/togetherai/index.ts +19 -6
- package/src/libs/agent-runtime/xai/index.ts +28 -13
- package/src/libs/agent-runtime/zeroone/index.ts +29 -13
- package/src/libs/agent-runtime/zhipu/index.test.ts +0 -9
- package/src/libs/agent-runtime/zhipu/index.ts +18 -6
- package/src/locales/default/modelProvider.ts +1 -2
- package/src/server/manifest.ts +2 -2
- package/src/libs/agent-runtime/zhipu/authToken.test.ts +0 -18
- package/src/libs/agent-runtime/zhipu/authToken.ts +0 -22
package/CHANGELOG.md
CHANGED
@@ -2,6 +2,56 @@
|
|
2
2
|
|
3
3
|
# Changelog
|
4
4
|
|
5
|
+
### [Version 1.53.12](https://github.com/lobehub/lobe-chat/compare/v1.53.11...v1.53.12)
|
6
|
+
|
7
|
+
<sup>Released on **2025-02-14**</sup>
|
8
|
+
|
9
|
+
#### ♻ Code Refactoring
|
10
|
+
|
11
|
+
- **misc**: Improve model fetch behavior.
|
12
|
+
|
13
|
+
<br/>
|
14
|
+
|
15
|
+
<details>
|
16
|
+
<summary><kbd>Improvements and Fixes</kbd></summary>
|
17
|
+
|
18
|
+
#### Code refactoring
|
19
|
+
|
20
|
+
- **misc**: Improve model fetch behavior, closes [#6055](https://github.com/lobehub/lobe-chat/issues/6055) ([4c2aaf6](https://github.com/lobehub/lobe-chat/commit/4c2aaf6))
|
21
|
+
|
22
|
+
</details>
|
23
|
+
|
24
|
+
<div align="right">
|
25
|
+
|
26
|
+
[](#readme-top)
|
27
|
+
|
28
|
+
</div>
|
29
|
+
|
30
|
+
### [Version 1.53.11](https://github.com/lobehub/lobe-chat/compare/v1.53.10...v1.53.11)
|
31
|
+
|
32
|
+
<sup>Released on **2025-02-13**</sup>
|
33
|
+
|
34
|
+
#### 🐛 Bug Fixes
|
35
|
+
|
36
|
+
- **misc**: Fix provider form api key.
|
37
|
+
|
38
|
+
<br/>
|
39
|
+
|
40
|
+
<details>
|
41
|
+
<summary><kbd>Improvements and Fixes</kbd></summary>
|
42
|
+
|
43
|
+
#### What's fixed
|
44
|
+
|
45
|
+
- **misc**: Fix provider form api key, closes [#6115](https://github.com/lobehub/lobe-chat/issues/6115) ([d074238](https://github.com/lobehub/lobe-chat/commit/d074238))
|
46
|
+
|
47
|
+
</details>
|
48
|
+
|
49
|
+
<div align="right">
|
50
|
+
|
51
|
+
[](#readme-top)
|
52
|
+
|
53
|
+
</div>
|
54
|
+
|
5
55
|
### [Version 1.53.10](https://github.com/lobehub/lobe-chat/compare/v1.53.9...v1.53.10)
|
6
56
|
|
7
57
|
<sup>Released on **2025-02-13**</sup>
|
package/changelog/v1.json
CHANGED
@@ -1,4 +1,22 @@
|
|
1
1
|
[
|
2
|
+
{
|
3
|
+
"children": {
|
4
|
+
"improvements": [
|
5
|
+
"Improve model fetch behavior."
|
6
|
+
]
|
7
|
+
},
|
8
|
+
"date": "2025-02-14",
|
9
|
+
"version": "1.53.12"
|
10
|
+
},
|
11
|
+
{
|
12
|
+
"children": {
|
13
|
+
"fixes": [
|
14
|
+
"Fix provider form api key."
|
15
|
+
]
|
16
|
+
},
|
17
|
+
"date": "2025-02-13",
|
18
|
+
"version": "1.53.11"
|
19
|
+
},
|
2
20
|
{
|
3
21
|
"children": {
|
4
22
|
"fixes": [
|
@@ -66,7 +66,6 @@
|
|
66
66
|
"createNewAiProvider": {
|
67
67
|
"apiKey": {
|
68
68
|
"placeholder": "يرجى إدخال مفتاح API الخاص بك",
|
69
|
-
"required": "يرجى إدخال مفتاح API الخاص بك",
|
70
69
|
"title": "مفتاح API"
|
71
70
|
},
|
72
71
|
"basicTitle": "المعلومات الأساسية",
|
@@ -94,7 +93,8 @@
|
|
94
93
|
"title": "اسم المزود"
|
95
94
|
},
|
96
95
|
"proxyUrl": {
|
97
|
-
"placeholder": "يرجى إدخال عنوان الطلب الخاص
|
96
|
+
"placeholder": "يرجى إدخال عنوان الطلب الخاص بك",
|
97
|
+
"required": "يرجى إدخال عنوان الوكيل",
|
98
98
|
"title": "عنوان الوكيل"
|
99
99
|
},
|
100
100
|
"sdkType": {
|
@@ -66,7 +66,6 @@
|
|
66
66
|
"createNewAiProvider": {
|
67
67
|
"apiKey": {
|
68
68
|
"placeholder": "Моля, въведете вашия API ключ",
|
69
|
-
"required": "Моля, въведете вашия API ключ",
|
70
69
|
"title": "API ключ"
|
71
70
|
},
|
72
71
|
"basicTitle": "Основна информация",
|
@@ -94,7 +93,8 @@
|
|
94
93
|
"title": "Име на доставчика"
|
95
94
|
},
|
96
95
|
"proxyUrl": {
|
97
|
-
"placeholder": "Моля, въведете адреса на вашето
|
96
|
+
"placeholder": "Моля, въведете адреса на вашето запитване",
|
97
|
+
"required": "Моля, въведете адреса на проксито",
|
98
98
|
"title": "Адрес на прокси"
|
99
99
|
},
|
100
100
|
"sdkType": {
|
@@ -66,7 +66,6 @@
|
|
66
66
|
"createNewAiProvider": {
|
67
67
|
"apiKey": {
|
68
68
|
"placeholder": "Bitte geben Sie Ihren API-Schlüssel ein",
|
69
|
-
"required": "Bitte geben Sie Ihren API-Schlüssel ein",
|
70
69
|
"title": "API-Schlüssel"
|
71
70
|
},
|
72
71
|
"basicTitle": "Grundinformationen",
|
@@ -94,7 +93,8 @@
|
|
94
93
|
"title": "Name des Anbieters"
|
95
94
|
},
|
96
95
|
"proxyUrl": {
|
97
|
-
"placeholder": "Bitte geben Sie Ihre
|
96
|
+
"placeholder": "Bitte geben Sie Ihre Anforderungs-URL ein",
|
97
|
+
"required": "Bitte geben Sie die Proxy-Adresse ein",
|
98
98
|
"title": "Proxy-Adresse"
|
99
99
|
},
|
100
100
|
"sdkType": {
|
@@ -66,7 +66,6 @@
|
|
66
66
|
"createNewAiProvider": {
|
67
67
|
"apiKey": {
|
68
68
|
"placeholder": "Please enter your API Key",
|
69
|
-
"required": "Please enter your API Key",
|
70
69
|
"title": "API Key"
|
71
70
|
},
|
72
71
|
"basicTitle": "Basic Information",
|
@@ -94,7 +93,8 @@
|
|
94
93
|
"title": "Provider Name"
|
95
94
|
},
|
96
95
|
"proxyUrl": {
|
97
|
-
"placeholder": "Please enter your request URL
|
96
|
+
"placeholder": "Please enter your request URL",
|
97
|
+
"required": "Please enter the proxy address",
|
98
98
|
"title": "Proxy URL"
|
99
99
|
},
|
100
100
|
"sdkType": {
|
@@ -66,7 +66,6 @@
|
|
66
66
|
"createNewAiProvider": {
|
67
67
|
"apiKey": {
|
68
68
|
"placeholder": "Por favor, introduce tu API Key",
|
69
|
-
"required": "Por favor, introduce tu API Key",
|
70
69
|
"title": "API Key"
|
71
70
|
},
|
72
71
|
"basicTitle": "Información básica",
|
@@ -94,7 +93,8 @@
|
|
94
93
|
"title": "Nombre del proveedor"
|
95
94
|
},
|
96
95
|
"proxyUrl": {
|
97
|
-
"placeholder": "Por favor, introduce tu dirección de solicitud
|
96
|
+
"placeholder": "Por favor, introduce tu dirección de solicitud",
|
97
|
+
"required": "Por favor, introduce la dirección del proxy",
|
98
98
|
"title": "Dirección del proxy"
|
99
99
|
},
|
100
100
|
"sdkType": {
|
@@ -66,7 +66,6 @@
|
|
66
66
|
"createNewAiProvider": {
|
67
67
|
"apiKey": {
|
68
68
|
"placeholder": "لطفاً کلید API خود را وارد کنید",
|
69
|
-
"required": "لطفاً کلید API خود را وارد کنید",
|
70
69
|
"title": "کلید API"
|
71
70
|
},
|
72
71
|
"basicTitle": "اطلاعات پایه",
|
@@ -94,7 +93,8 @@
|
|
94
93
|
"title": "نام ارائهدهنده"
|
95
94
|
},
|
96
95
|
"proxyUrl": {
|
97
|
-
"placeholder": "لطفاً آدرس درخواست خود را وارد
|
96
|
+
"placeholder": "لطفاً آدرس درخواست خود را وارد کنید",
|
97
|
+
"required": "لطفاً آدرس پروکسی را وارد کنید",
|
98
98
|
"title": "آدرس پروکسی"
|
99
99
|
},
|
100
100
|
"sdkType": {
|
@@ -66,7 +66,6 @@
|
|
66
66
|
"createNewAiProvider": {
|
67
67
|
"apiKey": {
|
68
68
|
"placeholder": "Veuillez entrer votre clé API",
|
69
|
-
"required": "Veuillez entrer votre clé API",
|
70
69
|
"title": "Clé API"
|
71
70
|
},
|
72
71
|
"basicTitle": "Informations de base",
|
@@ -94,7 +93,8 @@
|
|
94
93
|
"title": "Nom du fournisseur"
|
95
94
|
},
|
96
95
|
"proxyUrl": {
|
97
|
-
"placeholder": "Veuillez
|
96
|
+
"placeholder": "Veuillez saisir votre adresse de requête",
|
97
|
+
"required": "Veuillez remplir l'adresse du proxy",
|
98
98
|
"title": "Adresse du proxy"
|
99
99
|
},
|
100
100
|
"sdkType": {
|
@@ -66,7 +66,6 @@
|
|
66
66
|
"createNewAiProvider": {
|
67
67
|
"apiKey": {
|
68
68
|
"placeholder": "Inserisci la tua API Key",
|
69
|
-
"required": "Inserisci la tua API Key",
|
70
69
|
"title": "API Key"
|
71
70
|
},
|
72
71
|
"basicTitle": "Informazioni di base",
|
@@ -94,7 +93,8 @@
|
|
94
93
|
"title": "Nome del fornitore"
|
95
94
|
},
|
96
95
|
"proxyUrl": {
|
97
|
-
"placeholder": "Inserisci il tuo
|
96
|
+
"placeholder": "Inserisci il tuo URL di richiesta",
|
97
|
+
"required": "Inserisci l'indirizzo del proxy",
|
98
98
|
"title": "Indirizzo proxy"
|
99
99
|
},
|
100
100
|
"sdkType": {
|
@@ -66,7 +66,6 @@
|
|
66
66
|
"createNewAiProvider": {
|
67
67
|
"apiKey": {
|
68
68
|
"placeholder": "あなたの API キーを入力してください",
|
69
|
-
"required": "あなたの API キーを入力してください",
|
70
69
|
"title": "API キー"
|
71
70
|
},
|
72
71
|
"basicTitle": "基本情報",
|
@@ -94,7 +93,8 @@
|
|
94
93
|
"title": "サービスプロバイダー名"
|
95
94
|
},
|
96
95
|
"proxyUrl": {
|
97
|
-
"placeholder": "
|
96
|
+
"placeholder": "リクエストURLを入力してください",
|
97
|
+
"required": "プロキシURLを入力してください",
|
98
98
|
"title": "プロキシアドレス"
|
99
99
|
},
|
100
100
|
"sdkType": {
|
@@ -66,7 +66,6 @@
|
|
66
66
|
"createNewAiProvider": {
|
67
67
|
"apiKey": {
|
68
68
|
"placeholder": "API 키를 입력하세요",
|
69
|
-
"required": "API 키를 입력하세요",
|
70
69
|
"title": "API 키"
|
71
70
|
},
|
72
71
|
"basicTitle": "기본 정보",
|
@@ -94,7 +93,8 @@
|
|
94
93
|
"title": "서비스 제공자 이름"
|
95
94
|
},
|
96
95
|
"proxyUrl": {
|
97
|
-
"placeholder": "요청 주소를
|
96
|
+
"placeholder": "요청 주소를 입력하세요",
|
97
|
+
"required": "프록시 주소를 입력하세요",
|
98
98
|
"title": "프록시 주소"
|
99
99
|
},
|
100
100
|
"sdkType": {
|
@@ -66,7 +66,6 @@
|
|
66
66
|
"createNewAiProvider": {
|
67
67
|
"apiKey": {
|
68
68
|
"placeholder": "Vul je API-sleutel in",
|
69
|
-
"required": "Vul je API-sleutel in",
|
70
69
|
"title": "API-sleutel"
|
71
70
|
},
|
72
71
|
"basicTitle": "Basisinformatie",
|
@@ -94,7 +93,8 @@
|
|
94
93
|
"title": "Naam van de provider"
|
95
94
|
},
|
96
95
|
"proxyUrl": {
|
97
|
-
"placeholder": "Vul je
|
96
|
+
"placeholder": "Vul je verzoekadres in",
|
97
|
+
"required": "Vul het proxyadres in",
|
98
98
|
"title": "Proxy-adres"
|
99
99
|
},
|
100
100
|
"sdkType": {
|
@@ -66,7 +66,6 @@
|
|
66
66
|
"createNewAiProvider": {
|
67
67
|
"apiKey": {
|
68
68
|
"placeholder": "Proszę wpisać swój klucz API",
|
69
|
-
"required": "Proszę wpisać swój klucz API",
|
70
69
|
"title": "Klucz API"
|
71
70
|
},
|
72
71
|
"basicTitle": "Podstawowe informacje",
|
@@ -94,7 +93,8 @@
|
|
94
93
|
"title": "Nazwa dostawcy"
|
95
94
|
},
|
96
95
|
"proxyUrl": {
|
97
|
-
"placeholder": "Proszę wpisać adres żądania
|
96
|
+
"placeholder": "Proszę wpisać adres żądania",
|
97
|
+
"required": "Proszę wpisać adres proxy",
|
98
98
|
"title": "Adres proxy"
|
99
99
|
},
|
100
100
|
"sdkType": {
|
@@ -66,7 +66,6 @@
|
|
66
66
|
"createNewAiProvider": {
|
67
67
|
"apiKey": {
|
68
68
|
"placeholder": "Por favor, insira sua API Key",
|
69
|
-
"required": "Por favor, insira sua API Key",
|
70
69
|
"title": "API Key"
|
71
70
|
},
|
72
71
|
"basicTitle": "Informações Básicas",
|
@@ -94,7 +93,8 @@
|
|
94
93
|
"title": "Nome do Provedor"
|
95
94
|
},
|
96
95
|
"proxyUrl": {
|
97
|
-
"placeholder": "Por favor, insira seu endereço de
|
96
|
+
"placeholder": "Por favor, insira o seu endereço de solicitação",
|
97
|
+
"required": "Por favor, insira o endereço do proxy",
|
98
98
|
"title": "Endereço do Proxy"
|
99
99
|
},
|
100
100
|
"sdkType": {
|
@@ -66,7 +66,6 @@
|
|
66
66
|
"createNewAiProvider": {
|
67
67
|
"apiKey": {
|
68
68
|
"placeholder": "Пожалуйста, введите ваш API Key",
|
69
|
-
"required": "Пожалуйста, введите ваш API Key",
|
70
69
|
"title": "API Key"
|
71
70
|
},
|
72
71
|
"basicTitle": "Основная информация",
|
@@ -94,7 +93,8 @@
|
|
94
93
|
"title": "Имя провайдера"
|
95
94
|
},
|
96
95
|
"proxyUrl": {
|
97
|
-
"placeholder": "Пожалуйста, введите ваш адрес
|
96
|
+
"placeholder": "Пожалуйста, введите ваш адрес запроса",
|
97
|
+
"required": "Пожалуйста, введите адрес прокси",
|
98
98
|
"title": "Адрес прокси"
|
99
99
|
},
|
100
100
|
"sdkType": {
|
@@ -66,7 +66,6 @@
|
|
66
66
|
"createNewAiProvider": {
|
67
67
|
"apiKey": {
|
68
68
|
"placeholder": "Lütfen API Anahtarınızı girin",
|
69
|
-
"required": "Lütfen API Anahtarınızı girin",
|
70
69
|
"title": "API Anahtarı"
|
71
70
|
},
|
72
71
|
"basicTitle": "Temel Bilgiler",
|
@@ -94,7 +93,8 @@
|
|
94
93
|
"title": "Hizmet Sağlayıcı Adı"
|
95
94
|
},
|
96
95
|
"proxyUrl": {
|
97
|
-
"placeholder": "Lütfen istek adresinizi girin
|
96
|
+
"placeholder": "Lütfen istek adresinizi girin",
|
97
|
+
"required": "Lütfen proxy adresini girin",
|
98
98
|
"title": "Proxy Adresi"
|
99
99
|
},
|
100
100
|
"sdkType": {
|
@@ -66,7 +66,6 @@
|
|
66
66
|
"createNewAiProvider": {
|
67
67
|
"apiKey": {
|
68
68
|
"placeholder": "Vui lòng nhập API Key của bạn",
|
69
|
-
"required": "Vui lòng nhập API Key của bạn",
|
70
69
|
"title": "API Key"
|
71
70
|
},
|
72
71
|
"basicTitle": "Thông tin cơ bản",
|
@@ -94,7 +93,8 @@
|
|
94
93
|
"title": "Tên nhà cung cấp"
|
95
94
|
},
|
96
95
|
"proxyUrl": {
|
97
|
-
"placeholder": "Vui lòng nhập địa chỉ yêu cầu của bạn
|
96
|
+
"placeholder": "Vui lòng nhập địa chỉ yêu cầu của bạn",
|
97
|
+
"required": "Vui lòng nhập địa chỉ proxy",
|
98
98
|
"title": "Địa chỉ proxy"
|
99
99
|
},
|
100
100
|
"sdkType": {
|
@@ -66,7 +66,6 @@
|
|
66
66
|
"createNewAiProvider": {
|
67
67
|
"apiKey": {
|
68
68
|
"placeholder": "请填写你的 API Key",
|
69
|
-
"required": "请填写你的 API Key",
|
70
69
|
"title": "API Key"
|
71
70
|
},
|
72
71
|
"basicTitle": "基本信息",
|
@@ -94,7 +93,8 @@
|
|
94
93
|
"title": "服务商名称"
|
95
94
|
},
|
96
95
|
"proxyUrl": {
|
97
|
-
"placeholder": "
|
96
|
+
"placeholder": "请填写你的请求地址",
|
97
|
+
"required": "请填写代理地址",
|
98
98
|
"title": "代理地址"
|
99
99
|
},
|
100
100
|
"sdkType": {
|
@@ -305,4 +305,4 @@
|
|
305
305
|
"zhipu": {
|
306
306
|
"title": "智谱"
|
307
307
|
}
|
308
|
-
}
|
308
|
+
}
|
@@ -66,7 +66,6 @@
|
|
66
66
|
"createNewAiProvider": {
|
67
67
|
"apiKey": {
|
68
68
|
"placeholder": "請填寫你的 API Key",
|
69
|
-
"required": "請填寫你的 API Key",
|
70
69
|
"title": "API Key"
|
71
70
|
},
|
72
71
|
"basicTitle": "基本資訊",
|
@@ -94,7 +93,8 @@
|
|
94
93
|
"title": "服務商名稱"
|
95
94
|
},
|
96
95
|
"proxyUrl": {
|
97
|
-
"placeholder": "
|
96
|
+
"placeholder": "請填寫你的請求地址",
|
97
|
+
"required": "請填寫代理地址",
|
98
98
|
"title": "代理地址"
|
99
99
|
},
|
100
100
|
"sdkType": {
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@lobehub/chat",
|
3
|
-
"version": "1.53.
|
3
|
+
"version": "1.53.12",
|
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",
|
@@ -91,6 +91,7 @@ const CreateNewProvider = memo<CreateNewProviderProps>(({ onClose, open }) => {
|
|
91
91
|
options={[
|
92
92
|
{ label: 'OpenAI', value: 'openai' },
|
93
93
|
{ label: 'Anthropic', value: 'anthropic' },
|
94
|
+
{ label: 'Ollama', value: 'ollama' },
|
94
95
|
]}
|
95
96
|
/>
|
96
97
|
),
|
@@ -98,6 +99,13 @@ const CreateNewProvider = memo<CreateNewProviderProps>(({ onClose, open }) => {
|
|
98
99
|
name: 'sdkType',
|
99
100
|
rules: [{ message: t('createNewAiProvider.sdkType.required'), required: true }],
|
100
101
|
},
|
102
|
+
{
|
103
|
+
children: <Input allowClear placeholder={'https://xxxx-proxy.com/v1'} variant={'filled'} />,
|
104
|
+
label: t('createNewAiProvider.proxyUrl.title'),
|
105
|
+
minWidth: 400,
|
106
|
+
name: [KeyVaultsConfigKey, LLMProviderBaseUrlKey],
|
107
|
+
rules: [{ message: t('createNewAiProvider.proxyUrl.required'), required: true }],
|
108
|
+
},
|
101
109
|
{
|
102
110
|
children: (
|
103
111
|
<Input.Password
|
@@ -109,14 +117,6 @@ const CreateNewProvider = memo<CreateNewProviderProps>(({ onClose, open }) => {
|
|
109
117
|
label: t('createNewAiProvider.apiKey.title'),
|
110
118
|
minWidth: 400,
|
111
119
|
name: [KeyVaultsConfigKey, LLMProviderApiTokenKey],
|
112
|
-
rules: [{ message: t('createNewAiProvider.apiKey.required'), required: true }],
|
113
|
-
},
|
114
|
-
{
|
115
|
-
children: <Input allowClear placeholder={'https://xxxx-proxy.com/v1'} variant={'filled'} />,
|
116
|
-
desc: t('createNewAiProvider.proxyUrl.placeholder'),
|
117
|
-
label: t('createNewAiProvider.proxyUrl.title'),
|
118
|
-
minWidth: 400,
|
119
|
-
name: [KeyVaultsConfigKey, LLMProviderBaseUrlKey],
|
120
120
|
},
|
121
121
|
];
|
122
122
|
|
@@ -32,6 +32,9 @@ const sparkChatModels: AIChatModelCard[] = [
|
|
32
32
|
type: 'chat',
|
33
33
|
},
|
34
34
|
{
|
35
|
+
abilities: {
|
36
|
+
functionCall: true,
|
37
|
+
},
|
35
38
|
contextWindowTokens: 8192,
|
36
39
|
description:
|
37
40
|
'Spark Max 为功能最为全面的版本,支持联网搜索及众多内置插件。其全面优化的核心能力以及系统角色设定和函数调用功能,使其在各种复杂应用场景中的表现极为优异和出色。',
|
@@ -42,6 +45,9 @@ const sparkChatModels: AIChatModelCard[] = [
|
|
42
45
|
type: 'chat',
|
43
46
|
},
|
44
47
|
{
|
48
|
+
abilities: {
|
49
|
+
functionCall: true,
|
50
|
+
},
|
45
51
|
contextWindowTokens: 32_768,
|
46
52
|
description:
|
47
53
|
'Spark Max 32K 配置了大上下文处理能力,更强的上下文理解和逻辑推理能力,支持32K tokens的文本输入,适用于长文档阅读、私有知识问答等场景',
|
@@ -52,6 +58,9 @@ const sparkChatModels: AIChatModelCard[] = [
|
|
52
58
|
type: 'chat',
|
53
59
|
},
|
54
60
|
{
|
61
|
+
abilities: {
|
62
|
+
functionCall: true,
|
63
|
+
},
|
55
64
|
contextWindowTokens: 8192,
|
56
65
|
description:
|
57
66
|
'Spark Ultra 是星火大模型系列中最为强大的版本,在升级联网搜索链路同时,提升对文本内容的理解和总结能力。它是用于提升办公生产力和准确响应需求的全方位解决方案,是引领行业的智能产品。',
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import { ModelProvider } from '../types';
|
2
2
|
import { LobeOpenAICompatibleFactory } from '../utils/openaiCompatibleFactory';
|
3
3
|
|
4
|
-
import {
|
4
|
+
import type { ChatModelCard } from '@/types/llm';
|
5
5
|
|
6
6
|
export interface Ai360ModelCard {
|
7
7
|
id: string;
|
@@ -22,28 +22,44 @@ export const LobeAi360AI = LobeOpenAICompatibleFactory({
|
|
22
22
|
debug: {
|
23
23
|
chatCompletion: () => process.env.DEBUG_AI360_CHAT_COMPLETION === '1',
|
24
24
|
},
|
25
|
-
models: {
|
26
|
-
|
27
|
-
const reasoningKeywords = [
|
28
|
-
'360gpt2-o1',
|
29
|
-
'360zhinao2-o1',
|
30
|
-
];
|
25
|
+
models: async ({ client }) => {
|
26
|
+
const { LOBE_DEFAULT_MODEL_LIST } = await import('@/config/aiModels');
|
31
27
|
|
32
|
-
|
28
|
+
const reasoningKeywords = [
|
29
|
+
'360gpt2-o1',
|
30
|
+
'360zhinao2-o1',
|
31
|
+
];
|
33
32
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
33
|
+
const modelsPage = await client.models.list() as any;
|
34
|
+
const modelList: Ai360ModelCard[] = modelsPage.data;
|
35
|
+
|
36
|
+
return modelList
|
37
|
+
.map((model) => {
|
38
|
+
const knownModel = LOBE_DEFAULT_MODEL_LIST.find((m) => model.id.toLowerCase() === m.id.toLowerCase());
|
39
|
+
|
40
|
+
return {
|
41
|
+
contextWindowTokens: model.total_tokens,
|
42
|
+
displayName: knownModel?.displayName ?? undefined,
|
43
|
+
enabled: knownModel?.enabled || false,
|
44
|
+
functionCall:
|
45
|
+
model.id === '360gpt-pro'
|
46
|
+
|| knownModel?.abilities?.functionCall
|
47
|
+
|| false,
|
48
|
+
id: model.id,
|
49
|
+
maxTokens:
|
50
|
+
typeof model.max_tokens === 'number'
|
51
|
+
? model.max_tokens
|
52
|
+
: undefined,
|
53
|
+
reasoning:
|
54
|
+
reasoningKeywords.some(keyword => model.id.toLowerCase().includes(keyword))
|
55
|
+
|| knownModel?.abilities?.reasoning
|
56
|
+
|| false,
|
57
|
+
vision:
|
58
|
+
knownModel?.abilities?.vision
|
59
|
+
|| false,
|
60
|
+
};
|
61
|
+
})
|
62
|
+
.filter(Boolean) as ChatModelCard[];
|
47
63
|
},
|
48
64
|
provider: ModelProvider.Ai360,
|
49
65
|
});
|
@@ -13,7 +13,6 @@ import { buildAnthropicMessages, buildAnthropicTools } from '../utils/anthropicH
|
|
13
13
|
import { StreamingResponse } from '../utils/response';
|
14
14
|
import { AnthropicStream } from '../utils/streams';
|
15
15
|
|
16
|
-
import { LOBE_DEFAULT_MODEL_LIST } from '@/config/aiModels';
|
17
16
|
import type { ChatModelCard } from '@/types/llm';
|
18
17
|
|
19
18
|
export interface AnthropicModelCard {
|
@@ -114,6 +113,8 @@ export class LobeAnthropicAI implements LobeRuntimeAI {
|
|
114
113
|
}
|
115
114
|
|
116
115
|
async models() {
|
116
|
+
const { LOBE_DEFAULT_MODEL_LIST } = await import('@/config/aiModels');
|
117
|
+
|
117
118
|
const url = `${this.baseURL}/v1/models`;
|
118
119
|
const response = await fetch(url, {
|
119
120
|
headers: {
|
@@ -128,13 +129,24 @@ export class LobeAnthropicAI implements LobeRuntimeAI {
|
|
128
129
|
|
129
130
|
return modelList
|
130
131
|
.map((model) => {
|
132
|
+
const knownModel = LOBE_DEFAULT_MODEL_LIST.find((m) => model.id.toLowerCase() === m.id.toLowerCase());
|
133
|
+
|
131
134
|
return {
|
132
|
-
contextWindowTokens:
|
135
|
+
contextWindowTokens: knownModel?.contextWindowTokens ?? undefined,
|
133
136
|
displayName: model.display_name,
|
134
|
-
enabled:
|
135
|
-
functionCall:
|
137
|
+
enabled: knownModel?.enabled || false,
|
138
|
+
functionCall:
|
139
|
+
model.id.toLowerCase().includes('claude-3')
|
140
|
+
|| knownModel?.abilities?.functionCall
|
141
|
+
|| false,
|
136
142
|
id: model.id,
|
137
|
-
|
143
|
+
reasoning:
|
144
|
+
knownModel?.abilities?.reasoning
|
145
|
+
|| false,
|
146
|
+
vision:
|
147
|
+
model.id.toLowerCase().includes('claude-3') && !model.id.toLowerCase().includes('claude-3-5-haiku')
|
148
|
+
|| knownModel?.abilities?.vision
|
149
|
+
|| false,
|
138
150
|
};
|
139
151
|
})
|
140
152
|
.filter(Boolean) as ChatModelCard[];
|
@@ -3,7 +3,6 @@ import OpenAI from 'openai';
|
|
3
3
|
import { ChatStreamPayload, ModelProvider } from '../types';
|
4
4
|
import { LobeOpenAICompatibleFactory } from '../utils/openaiCompatibleFactory';
|
5
5
|
|
6
|
-
import { LOBE_DEFAULT_MODEL_LIST } from '@/config/aiModels';
|
7
6
|
import type { ChatModelCard } from '@/types/llm';
|
8
7
|
|
9
8
|
export interface BaichuanModelCard {
|
@@ -32,18 +31,28 @@ export const LobeBaichuanAI = LobeOpenAICompatibleFactory({
|
|
32
31
|
chatCompletion: () => process.env.DEBUG_BAICHUAN_CHAT_COMPLETION === '1',
|
33
32
|
},
|
34
33
|
models: async ({ client }) => {
|
34
|
+
const { LOBE_DEFAULT_MODEL_LIST } = await import('@/config/aiModels');
|
35
|
+
|
35
36
|
const modelsPage = await client.models.list() as any;
|
36
37
|
const modelList: BaichuanModelCard[] = modelsPage.data;
|
37
38
|
|
38
39
|
return modelList
|
39
40
|
.map((model) => {
|
41
|
+
const knownModel = LOBE_DEFAULT_MODEL_LIST.find((m) => model.model.toLowerCase() === m.id.toLowerCase());
|
42
|
+
|
40
43
|
return {
|
41
44
|
contextWindowTokens: model.max_input_length,
|
42
45
|
displayName: model.model_show_name,
|
43
|
-
enabled:
|
46
|
+
enabled: knownModel?.enabled || false,
|
44
47
|
functionCall: model.function_call,
|
45
48
|
id: model.model,
|
46
49
|
maxTokens: model.max_tokens,
|
50
|
+
reasoning:
|
51
|
+
knownModel?.abilities?.reasoning
|
52
|
+
|| false,
|
53
|
+
vision:
|
54
|
+
knownModel?.abilities?.vision
|
55
|
+
|| false,
|
47
56
|
};
|
48
57
|
})
|
49
58
|
.filter(Boolean) as ChatModelCard[];
|