@lobehub/chat 1.23.0 → 1.24.0
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 +51 -0
- package/Dockerfile +19 -15
- package/Dockerfile.database +20 -16
- package/locales/ar/modelProvider.json +16 -0
- package/locales/ar/models.json +27 -0
- package/locales/ar/providers.json +1 -0
- package/locales/bg-BG/modelProvider.json +16 -0
- package/locales/bg-BG/models.json +27 -0
- package/locales/bg-BG/providers.json +1 -0
- package/locales/de-DE/modelProvider.json +16 -0
- package/locales/de-DE/models.json +27 -0
- package/locales/de-DE/providers.json +1 -0
- package/locales/en-US/modelProvider.json +16 -0
- package/locales/en-US/models.json +27 -0
- package/locales/en-US/providers.json +1 -0
- package/locales/es-ES/modelProvider.json +16 -0
- package/locales/es-ES/models.json +27 -0
- package/locales/es-ES/providers.json +1 -0
- package/locales/fr-FR/modelProvider.json +16 -0
- package/locales/fr-FR/models.json +27 -0
- package/locales/fr-FR/providers.json +1 -0
- package/locales/it-IT/modelProvider.json +16 -0
- package/locales/it-IT/models.json +27 -0
- package/locales/it-IT/providers.json +1 -0
- package/locales/ja-JP/modelProvider.json +16 -0
- package/locales/ja-JP/models.json +27 -0
- package/locales/ja-JP/providers.json +1 -0
- package/locales/ko-KR/modelProvider.json +16 -0
- package/locales/ko-KR/models.json +27 -0
- package/locales/ko-KR/providers.json +1 -0
- package/locales/nl-NL/modelProvider.json +16 -0
- package/locales/nl-NL/models.json +27 -0
- package/locales/nl-NL/providers.json +1 -0
- package/locales/pl-PL/modelProvider.json +16 -0
- package/locales/pl-PL/models.json +27 -0
- package/locales/pl-PL/providers.json +1 -0
- package/locales/pt-BR/modelProvider.json +16 -0
- package/locales/pt-BR/models.json +27 -0
- package/locales/pt-BR/providers.json +1 -0
- package/locales/ru-RU/modelProvider.json +16 -0
- package/locales/ru-RU/models.json +27 -0
- package/locales/ru-RU/providers.json +1 -0
- package/locales/tr-TR/modelProvider.json +16 -0
- package/locales/tr-TR/models.json +27 -0
- package/locales/tr-TR/providers.json +1 -0
- package/locales/vi-VN/modelProvider.json +16 -0
- package/locales/vi-VN/models.json +27 -0
- package/locales/vi-VN/providers.json +1 -0
- package/locales/zh-CN/modelProvider.json +16 -0
- package/locales/zh-CN/models.json +27 -0
- package/locales/zh-CN/providers.json +1 -0
- package/locales/zh-TW/modelProvider.json +16 -0
- package/locales/zh-TW/models.json +27 -0
- package/locales/zh-TW/providers.json +1 -0
- package/package.json +3 -3
- package/src/app/(main)/settings/llm/ProviderList/SenseNova/index.tsx +44 -0
- package/src/app/(main)/settings/llm/ProviderList/providers.tsx +4 -0
- package/src/config/llm.ts +38 -0
- package/src/config/modelProviders/index.ts +4 -0
- package/src/config/modelProviders/sensenova.ts +124 -0
- package/src/config/modelProviders/spark.ts +6 -6
- package/src/const/auth.ts +3 -0
- package/src/const/settings/llm.ts +5 -0
- package/src/features/Conversation/Error/APIKeyForm/SenseNova.tsx +49 -0
- package/src/features/Conversation/Error/APIKeyForm/index.tsx +3 -0
- package/src/libs/agent-runtime/AgentRuntime.ts +7 -0
- package/src/libs/agent-runtime/index.ts +1 -0
- package/src/libs/agent-runtime/sensenova/authToken.test.ts +18 -0
- package/src/libs/agent-runtime/sensenova/authToken.ts +27 -0
- package/src/libs/agent-runtime/sensenova/index.test.ts +321 -0
- package/src/libs/agent-runtime/sensenova/index.ts +98 -0
- package/src/libs/agent-runtime/types/type.ts +1 -0
- package/src/locales/default/modelProvider.ts +17 -0
- package/src/server/globalConfig/index.ts +158 -16
- package/src/server/modules/AgentRuntime/index.ts +10 -0
- package/src/services/_auth.ts +14 -0
- package/src/store/user/slices/modelList/selectors/keyVaults.ts +2 -0
- package/src/store/user/slices/modelList/selectors/modelConfig.ts +2 -0
- package/src/types/user/settings/keyVaults.ts +6 -0
@@ -119,6 +119,22 @@
|
|
119
119
|
"title": "下载指定的 Ollama 模型"
|
120
120
|
}
|
121
121
|
},
|
122
|
+
"sensenova": {
|
123
|
+
"sensenovaAccessKeyID": {
|
124
|
+
"desc": "填入 SenseNova Access Key ID",
|
125
|
+
"placeholder": "SenseNova Access Key ID",
|
126
|
+
"title": "Access Key ID"
|
127
|
+
},
|
128
|
+
"sensenovaAccessKeySecret": {
|
129
|
+
"desc": "填入 SenseNova Access Key Secret",
|
130
|
+
"placeholder": "SenseNova Access Key Secret",
|
131
|
+
"title": "Access Key Secret"
|
132
|
+
},
|
133
|
+
"unlock": {
|
134
|
+
"description": "输入你的 Access Key ID / Access Key Secret 即可开始会话。应用不会记录你的鉴权配置",
|
135
|
+
"title": "使用自定义 SenseNova 鉴权信息"
|
136
|
+
}
|
137
|
+
},
|
122
138
|
"wenxin": {
|
123
139
|
"accessKey": {
|
124
140
|
"desc": "填入百度千帆平台的 Access Key",
|
@@ -155,6 +155,33 @@
|
|
155
155
|
"Qwen/Qwen2.5-Math-72B-Instruct": {
|
156
156
|
"description": "Qwen2.5-Math 专注于数学领域的问题求解,为高难度题提供专业解答。"
|
157
157
|
},
|
158
|
+
"SenseChat": {
|
159
|
+
"description": "基础版本模型 (V4),4K上下文长度,通用能力强大"
|
160
|
+
},
|
161
|
+
"SenseChat-128K": {
|
162
|
+
"description": "基础版本模型 (V4),128K上下文长度,在长文本理解及生成等任务中表现出色"
|
163
|
+
},
|
164
|
+
"SenseChat-32K": {
|
165
|
+
"description": "基础版本模型 (V4),32K上下文长度,灵活应用于各类场景"
|
166
|
+
},
|
167
|
+
"SenseChat-5": {
|
168
|
+
"description": "最新版本模型 (V5.5),128K上下文长度,在数学推理、英文对话、指令跟随以及长文本理解等领域能力显著提升,比肩GPT-4o"
|
169
|
+
},
|
170
|
+
"SenseChat-5-Cantonese": {
|
171
|
+
"description": "32K上下文长度,在粤语的对话理解上超越了GPT-4,在知识、推理、数学及代码编写等多个领域均能与GPT-4 Turbo相媲美"
|
172
|
+
},
|
173
|
+
"SenseChat-Character": {
|
174
|
+
"description": "标准版模型,8K上下文长度,高响应速度"
|
175
|
+
},
|
176
|
+
"SenseChat-Character-Pro": {
|
177
|
+
"description": "高级版模型,32K上下文长度,能力全面提升,支持中/英文对话"
|
178
|
+
},
|
179
|
+
"SenseChat-Turbo": {
|
180
|
+
"description": "适用于快速问答、模型微调场景"
|
181
|
+
},
|
182
|
+
"SenseChat-Vision": {
|
183
|
+
"description": "最新版本模型 (V5.5),16K上下文长度,支持多图的输入,全面实现模型基础能力优化,在对象属性识别、空间关系、动作事件识别、场景理解、情感识别、逻辑常识推理和文本理解生成上都实现了较大提升。"
|
184
|
+
},
|
158
185
|
"THUDM/glm-4-9b-chat": {
|
159
186
|
"description": "GLM-4 9B 开放源码版本,为会话应用提供优化后的对话体验。"
|
160
187
|
},
|
@@ -119,6 +119,22 @@
|
|
119
119
|
"title": "下載指定的 Ollama 模型"
|
120
120
|
}
|
121
121
|
},
|
122
|
+
"sensenova": {
|
123
|
+
"sensenovaAccessKeyID": {
|
124
|
+
"desc": "填入 SenseNova Access Key ID",
|
125
|
+
"placeholder": "SenseNova Access Key ID",
|
126
|
+
"title": "Access Key ID"
|
127
|
+
},
|
128
|
+
"sensenovaAccessKeySecret": {
|
129
|
+
"desc": "填入 SenseNova Access Key Secret",
|
130
|
+
"placeholder": "SenseNova Access Key Secret",
|
131
|
+
"title": "Access Key Secret"
|
132
|
+
},
|
133
|
+
"unlock": {
|
134
|
+
"description": "輸入你的 Access Key ID / Access Key Secret 即可開始會話。應用不會記錄你的鑑權配置",
|
135
|
+
"title": "使用自訂的 SenseNova 鑑權資訊"
|
136
|
+
}
|
137
|
+
},
|
122
138
|
"wenxin": {
|
123
139
|
"accessKey": {
|
124
140
|
"desc": "填入百度千帆平台的 Access Key",
|
@@ -155,6 +155,33 @@
|
|
155
155
|
"Qwen/Qwen2.5-Math-72B-Instruct": {
|
156
156
|
"description": "Qwen2.5-Math專注於數學領域的問題求解,為高難度題提供專業解答。"
|
157
157
|
},
|
158
|
+
"SenseChat": {
|
159
|
+
"description": "基礎版本模型 (V4),4K上下文長度,通用能力強大"
|
160
|
+
},
|
161
|
+
"SenseChat-128K": {
|
162
|
+
"description": "基礎版本模型 (V4),128K上下文長度,在長文本理解及生成等任務中表現出色"
|
163
|
+
},
|
164
|
+
"SenseChat-32K": {
|
165
|
+
"description": "基礎版本模型 (V4),32K上下文長度,靈活應用於各類場景"
|
166
|
+
},
|
167
|
+
"SenseChat-5": {
|
168
|
+
"description": "最新版本模型 (V5.5),128K上下文長度,在數學推理、英文對話、指令跟隨以及長文本理解等領域能力顯著提升,比肩GPT-4o"
|
169
|
+
},
|
170
|
+
"SenseChat-5-Cantonese": {
|
171
|
+
"description": "32K上下文長度,在粵語的對話理解上超越了GPT-4,在知識、推理、數學及程式編寫等多個領域均能與GPT-4 Turbo相媲美"
|
172
|
+
},
|
173
|
+
"SenseChat-Character": {
|
174
|
+
"description": "標準版模型,8K上下文長度,高響應速度"
|
175
|
+
},
|
176
|
+
"SenseChat-Character-Pro": {
|
177
|
+
"description": "高級版模型,32K上下文長度,能力全面提升,支持中/英文對話"
|
178
|
+
},
|
179
|
+
"SenseChat-Turbo": {
|
180
|
+
"description": "適用於快速問答、模型微調場景"
|
181
|
+
},
|
182
|
+
"SenseChat-Vision": {
|
183
|
+
"description": "最新版本模型 (V5.5),16K上下文長度,支持多圖的輸入,全面實現模型基礎能力優化,在物件屬性識別、空間關係、動作事件識別、場景理解、情感識別、邏輯常識推理和文本理解生成上都實現了較大提升。"
|
184
|
+
},
|
158
185
|
"THUDM/glm-4-9b-chat": {
|
159
186
|
"description": "GLM-4 9B 開放源碼版本,為會話應用提供優化後的對話體驗。"
|
160
187
|
},
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@lobehub/chat",
|
3
|
-
"version": "1.
|
3
|
+
"version": "1.24.0",
|
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",
|
@@ -43,7 +43,7 @@
|
|
43
43
|
"docs:seo": "lobe-seo && npm run lint:mdx",
|
44
44
|
"i18n": "npm run workflow:i18n && lobe-i18n",
|
45
45
|
"lint": "npm run lint:ts && npm run lint:style && npm run type-check && npm run lint:circular",
|
46
|
-
"lint:circular": "dpdm src/**/*.ts --warning
|
46
|
+
"lint:circular": "dpdm src/**/*.ts --no-warning --no-tree --exit-code circular:1 --no-progress -T true --skip-dynamic-imports circular",
|
47
47
|
"lint:md": "remark . --quiet --frail --output",
|
48
48
|
"lint:mdx": "npm run workflow:mdx-with-lint && prettier -c --write \"{src,docs}/**/*.mdx\" && npm run workflow:mdx-with-lint",
|
49
49
|
"lint:style": "stylelint \"{src,tests}/**/*.{js,jsx,ts,tsx}\" --fix",
|
@@ -270,7 +270,7 @@
|
|
270
270
|
"commitlint": "^19.5.0",
|
271
271
|
"consola": "^3.2.3",
|
272
272
|
"dotenv": "^16.4.5",
|
273
|
-
"dpdm": "^
|
273
|
+
"dpdm-fast": "^1.0.4",
|
274
274
|
"drizzle-kit": "^0.26.0",
|
275
275
|
"eslint": "^8.57.1",
|
276
276
|
"eslint-plugin-mdx": "^2.3.4",
|
@@ -0,0 +1,44 @@
|
|
1
|
+
'use client';
|
2
|
+
|
3
|
+
import { Input } from 'antd';
|
4
|
+
import { useTranslation } from 'react-i18next';
|
5
|
+
|
6
|
+
import { SenseNovaProviderCard } from '@/config/modelProviders';
|
7
|
+
import { GlobalLLMProviderKey } from '@/types/user/settings';
|
8
|
+
|
9
|
+
import { KeyVaultsConfigKey } from '../../const';
|
10
|
+
import { ProviderItem } from '../../type';
|
11
|
+
|
12
|
+
const providerKey: GlobalLLMProviderKey = 'sensenova';
|
13
|
+
|
14
|
+
export const useSenseNovaProvider = (): ProviderItem => {
|
15
|
+
const { t } = useTranslation('modelProvider');
|
16
|
+
|
17
|
+
return {
|
18
|
+
...SenseNovaProviderCard,
|
19
|
+
apiKeyItems: [
|
20
|
+
{
|
21
|
+
children: (
|
22
|
+
<Input.Password
|
23
|
+
autoComplete={'new-password'}
|
24
|
+
placeholder={t(`${providerKey}.sensenovaAccessKeyID.placeholder`)}
|
25
|
+
/>
|
26
|
+
),
|
27
|
+
desc: t(`${providerKey}.sensenovaAccessKeyID.desc`),
|
28
|
+
label: t(`${providerKey}.sensenovaAccessKeyID.title`),
|
29
|
+
name: [KeyVaultsConfigKey, providerKey, 'sensenovaAccessKeyID'],
|
30
|
+
},
|
31
|
+
{
|
32
|
+
children: (
|
33
|
+
<Input.Password
|
34
|
+
autoComplete={'new-password'}
|
35
|
+
placeholder={t(`${providerKey}.sensenovaAccessKeySecret.placeholder`)}
|
36
|
+
/>
|
37
|
+
),
|
38
|
+
desc: t(`${providerKey}.sensenovaAccessKeySecret.desc`),
|
39
|
+
label: t(`${providerKey}.sensenovaAccessKeySecret.title`),
|
40
|
+
name: [KeyVaultsConfigKey, providerKey, 'sensenovaAccessKeySecret'],
|
41
|
+
},
|
42
|
+
],
|
43
|
+
};
|
44
|
+
};
|
@@ -35,6 +35,7 @@ import { useHuggingFaceProvider } from './HuggingFace';
|
|
35
35
|
import { useOllamaProvider } from './Ollama';
|
36
36
|
import { useOpenAIProvider } from './OpenAI';
|
37
37
|
import { useWenxinProvider } from './Wenxin';
|
38
|
+
import { useSenseNovaProvider } from './SenseNova';
|
38
39
|
|
39
40
|
export const useProviderList = (): ProviderItem[] => {
|
40
41
|
const AzureProvider = useAzureProvider();
|
@@ -44,6 +45,7 @@ export const useProviderList = (): ProviderItem[] => {
|
|
44
45
|
const GithubProvider = useGithubProvider();
|
45
46
|
const HuggingFaceProvider = useHuggingFaceProvider();
|
46
47
|
const WenxinProvider = useWenxinProvider();
|
48
|
+
const SenseNovaProvider = useSenseNovaProvider();
|
47
49
|
|
48
50
|
return useMemo(
|
49
51
|
() => [
|
@@ -71,6 +73,7 @@ export const useProviderList = (): ProviderItem[] => {
|
|
71
73
|
SparkProviderCard,
|
72
74
|
ZhiPuProviderCard,
|
73
75
|
ZeroOneProviderCard,
|
76
|
+
SenseNovaProvider,
|
74
77
|
StepfunProviderCard,
|
75
78
|
MoonshotProviderCard,
|
76
79
|
BaichuanProviderCard,
|
@@ -87,6 +90,7 @@ export const useProviderList = (): ProviderItem[] => {
|
|
87
90
|
GithubProvider,
|
88
91
|
WenxinProvider,
|
89
92
|
HuggingFaceProvider,
|
93
|
+
SenseNovaProvider,
|
90
94
|
],
|
91
95
|
);
|
92
96
|
};
|
package/src/config/llm.ts
CHANGED
@@ -24,6 +24,7 @@ export const getLLMConfig = () => {
|
|
24
24
|
|
25
25
|
ENABLED_DEEPSEEK: z.boolean(),
|
26
26
|
DEEPSEEK_API_KEY: z.string().optional(),
|
27
|
+
DEEPSEEK_MODEL_LIST: z.string().optional(),
|
27
28
|
|
28
29
|
ENABLED_GOOGLE: z.boolean(),
|
29
30
|
GOOGLE_API_KEY: z.string().optional(),
|
@@ -32,21 +33,26 @@ export const getLLMConfig = () => {
|
|
32
33
|
|
33
34
|
ENABLED_MOONSHOT: z.boolean(),
|
34
35
|
MOONSHOT_API_KEY: z.string().optional(),
|
36
|
+
MOONSHOT_MODEL_LIST: z.string().optional(),
|
35
37
|
MOONSHOT_PROXY_URL: z.string().optional(),
|
36
38
|
|
37
39
|
ENABLED_PERPLEXITY: z.boolean(),
|
38
40
|
PERPLEXITY_API_KEY: z.string().optional(),
|
41
|
+
PERPLEXITY_MODEL_LIST: z.string().optional(),
|
39
42
|
PERPLEXITY_PROXY_URL: z.string().optional(),
|
40
43
|
|
41
44
|
ENABLED_ANTHROPIC: z.boolean(),
|
42
45
|
ANTHROPIC_API_KEY: z.string().optional(),
|
46
|
+
ANTHROPIC_MODEL_LIST: z.string().optional(),
|
43
47
|
ANTHROPIC_PROXY_URL: z.string().optional(),
|
44
48
|
|
45
49
|
ENABLED_MINIMAX: z.boolean(),
|
50
|
+
MINIMAX_MODEL_LIST: z.string().optional(),
|
46
51
|
MINIMAX_API_KEY: z.string().optional(),
|
47
52
|
|
48
53
|
ENABLED_MISTRAL: z.boolean(),
|
49
54
|
MISTRAL_API_KEY: z.string().optional(),
|
55
|
+
MISTRAL_MODEL_LIST: z.string().optional(),
|
50
56
|
|
51
57
|
ENABLED_GROQ: z.boolean(),
|
52
58
|
GROQ_API_KEY: z.string().optional(),
|
@@ -83,6 +89,7 @@ export const getLLMConfig = () => {
|
|
83
89
|
ENABLED_WENXIN: z.boolean(),
|
84
90
|
WENXIN_ACCESS_KEY: z.string().optional(),
|
85
91
|
WENXIN_SECRET_KEY: z.string().optional(),
|
92
|
+
WENXIN_MODEL_LIST: z.string().optional(),
|
86
93
|
|
87
94
|
ENABLED_OLLAMA: z.boolean(),
|
88
95
|
OLLAMA_PROXY_URL: z.string().optional(),
|
@@ -94,6 +101,7 @@ export const getLLMConfig = () => {
|
|
94
101
|
|
95
102
|
ENABLED_STEPFUN: z.boolean(),
|
96
103
|
STEPFUN_API_KEY: z.string().optional(),
|
104
|
+
STEPFUN_MODEL_LIST: z.string().optional(),
|
97
105
|
|
98
106
|
ENABLED_NOVITA: z.boolean(),
|
99
107
|
NOVITA_API_KEY: z.string().optional(),
|
@@ -101,12 +109,15 @@ export const getLLMConfig = () => {
|
|
101
109
|
|
102
110
|
ENABLED_BAICHUAN: z.boolean(),
|
103
111
|
BAICHUAN_API_KEY: z.string().optional(),
|
112
|
+
BAICHUAN_MODEL_LIST: z.string().optional(),
|
104
113
|
|
105
114
|
ENABLED_TAICHU: z.boolean(),
|
106
115
|
TAICHU_API_KEY: z.string().optional(),
|
116
|
+
TAICHU_MODEL_LIST: z.string().optional(),
|
107
117
|
|
108
118
|
ENABLED_AI360: z.boolean(),
|
109
119
|
AI360_API_KEY: z.string().optional(),
|
120
|
+
AI360_MODEL_LIST: z.string().optional(),
|
110
121
|
|
111
122
|
ENABLED_SILICONCLOUD: z.boolean(),
|
112
123
|
SILICONCLOUD_API_KEY: z.string().optional(),
|
@@ -115,12 +126,15 @@ export const getLLMConfig = () => {
|
|
115
126
|
|
116
127
|
ENABLED_UPSTAGE: z.boolean(),
|
117
128
|
UPSTAGE_API_KEY: z.string().optional(),
|
129
|
+
UPSTAGE_MODEL_LIST: z.string().optional(),
|
118
130
|
|
119
131
|
ENABLED_SPARK: z.boolean(),
|
120
132
|
SPARK_API_KEY: z.string().optional(),
|
133
|
+
SPARK_MODEL_LIST: z.string().optional(),
|
121
134
|
|
122
135
|
ENABLED_AI21: z.boolean(),
|
123
136
|
AI21_API_KEY: z.string().optional(),
|
137
|
+
AI21_MODEL_LIST: z.string().optional(),
|
124
138
|
|
125
139
|
ENABLED_HUNYUAN: z.boolean(),
|
126
140
|
HUNYUAN_API_KEY: z.string().optional(),
|
@@ -130,6 +144,11 @@ export const getLLMConfig = () => {
|
|
130
144
|
HUGGINGFACE_API_KEY: z.string().optional(),
|
131
145
|
HUGGINGFACE_PROXY_URL: z.string().optional(),
|
132
146
|
HUGGINGFACE_MODEL_LIST: z.string().optional(),
|
147
|
+
|
148
|
+
ENABLED_SENSENOVA: z.boolean(),
|
149
|
+
SENSENOVA_ACCESS_KEY_ID: z.string().optional(),
|
150
|
+
SENSENOVA_ACCESS_KEY_SECRET: z.string().optional(),
|
151
|
+
SENSENOVA_MODEL_LIST: z.string().optional(),
|
133
152
|
},
|
134
153
|
runtimeEnv: {
|
135
154
|
API_KEY_SELECT_MODE: process.env.API_KEY_SELECT_MODE,
|
@@ -151,6 +170,7 @@ export const getLLMConfig = () => {
|
|
151
170
|
|
152
171
|
ENABLED_DEEPSEEK: !!process.env.DEEPSEEK_API_KEY,
|
153
172
|
DEEPSEEK_API_KEY: process.env.DEEPSEEK_API_KEY,
|
173
|
+
DEEPSEEK_MODEL_LIST: process.env.DEEPSEEK_MODEL_LIST,
|
154
174
|
|
155
175
|
ENABLED_GOOGLE: !!process.env.GOOGLE_API_KEY,
|
156
176
|
GOOGLE_API_KEY: process.env.GOOGLE_API_KEY,
|
@@ -159,17 +179,21 @@ export const getLLMConfig = () => {
|
|
159
179
|
|
160
180
|
ENABLED_PERPLEXITY: !!process.env.PERPLEXITY_API_KEY,
|
161
181
|
PERPLEXITY_API_KEY: process.env.PERPLEXITY_API_KEY,
|
182
|
+
PERPLEXITY_MODEL_LIST: process.env.PERPLEXITY_MODEL_LIST,
|
162
183
|
PERPLEXITY_PROXY_URL: process.env.PERPLEXITY_PROXY_URL,
|
163
184
|
|
164
185
|
ENABLED_ANTHROPIC: !!process.env.ANTHROPIC_API_KEY,
|
165
186
|
ANTHROPIC_API_KEY: process.env.ANTHROPIC_API_KEY,
|
187
|
+
ANTHROPIC_MODEL_LIST: process.env.ANTHROPIC_MODEL_LIST,
|
166
188
|
ANTHROPIC_PROXY_URL: process.env.ANTHROPIC_PROXY_URL,
|
167
189
|
|
168
190
|
ENABLED_MINIMAX: !!process.env.MINIMAX_API_KEY,
|
169
191
|
MINIMAX_API_KEY: process.env.MINIMAX_API_KEY,
|
192
|
+
MINIMAX_MODEL_LIST: process.env.MINIMAX_MODEL_LIST,
|
170
193
|
|
171
194
|
ENABLED_MISTRAL: !!process.env.MISTRAL_API_KEY,
|
172
195
|
MISTRAL_API_KEY: process.env.MISTRAL_API_KEY,
|
196
|
+
MISTRAL_MODEL_LIST: process.env.MISTRAL_MODEL_LIST,
|
173
197
|
|
174
198
|
ENABLED_OPENROUTER: !!process.env.OPENROUTER_API_KEY,
|
175
199
|
OPENROUTER_API_KEY: process.env.OPENROUTER_API_KEY,
|
@@ -185,6 +209,7 @@ export const getLLMConfig = () => {
|
|
185
209
|
|
186
210
|
ENABLED_MOONSHOT: !!process.env.MOONSHOT_API_KEY,
|
187
211
|
MOONSHOT_API_KEY: process.env.MOONSHOT_API_KEY,
|
212
|
+
MOONSHOT_MODEL_LIST: process.env.MOONSHOT_MODEL_LIST,
|
188
213
|
MOONSHOT_PROXY_URL: process.env.MOONSHOT_PROXY_URL,
|
189
214
|
|
190
215
|
ENABLED_GROQ: !!process.env.GROQ_API_KEY,
|
@@ -210,6 +235,7 @@ export const getLLMConfig = () => {
|
|
210
235
|
ENABLED_WENXIN: !!process.env.WENXIN_ACCESS_KEY && !!process.env.WENXIN_SECRET_KEY,
|
211
236
|
WENXIN_ACCESS_KEY: process.env.WENXIN_ACCESS_KEY,
|
212
237
|
WENXIN_SECRET_KEY: process.env.WENXIN_SECRET_KEY,
|
238
|
+
WENXIN_MODEL_LIST: process.env.WENXIN_MODEL_LIST,
|
213
239
|
|
214
240
|
ENABLED_OLLAMA: process.env.ENABLED_OLLAMA !== '0',
|
215
241
|
OLLAMA_PROXY_URL: process.env.OLLAMA_PROXY_URL || '',
|
@@ -221,6 +247,7 @@ export const getLLMConfig = () => {
|
|
221
247
|
|
222
248
|
ENABLED_STEPFUN: !!process.env.STEPFUN_API_KEY,
|
223
249
|
STEPFUN_API_KEY: process.env.STEPFUN_API_KEY,
|
250
|
+
STEPFUN_MODEL_LIST: process.env.STEPFUN_MODEL_LIST,
|
224
251
|
|
225
252
|
ENABLED_NOVITA: !!process.env.NOVITA_API_KEY,
|
226
253
|
NOVITA_API_KEY: process.env.NOVITA_API_KEY,
|
@@ -228,12 +255,15 @@ export const getLLMConfig = () => {
|
|
228
255
|
|
229
256
|
ENABLED_BAICHUAN: !!process.env.BAICHUAN_API_KEY,
|
230
257
|
BAICHUAN_API_KEY: process.env.BAICHUAN_API_KEY,
|
258
|
+
BAICHUAN_MODEL_LIST: process.env.BAICHUAN_MODEL_LIST,
|
231
259
|
|
232
260
|
ENABLED_TAICHU: !!process.env.TAICHU_API_KEY,
|
233
261
|
TAICHU_API_KEY: process.env.TAICHU_API_KEY,
|
262
|
+
TAICHU_MODEL_LIST: process.env.TAICHU_MODEL_LIST,
|
234
263
|
|
235
264
|
ENABLED_AI360: !!process.env.AI360_API_KEY,
|
236
265
|
AI360_API_KEY: process.env.AI360_API_KEY,
|
266
|
+
AI360_MODEL_LIST: process.env.AI360_MODEL_LIST,
|
237
267
|
|
238
268
|
ENABLED_SILICONCLOUD: !!process.env.SILICONCLOUD_API_KEY,
|
239
269
|
SILICONCLOUD_API_KEY: process.env.SILICONCLOUD_API_KEY,
|
@@ -242,12 +272,15 @@ export const getLLMConfig = () => {
|
|
242
272
|
|
243
273
|
ENABLED_UPSTAGE: !!process.env.UPSTAGE_API_KEY,
|
244
274
|
UPSTAGE_API_KEY: process.env.UPSTAGE_API_KEY,
|
275
|
+
UPSTAGE_MODEL_LIST: process.env.UPSTAGE_MODEL_LIST,
|
245
276
|
|
246
277
|
ENABLED_SPARK: !!process.env.SPARK_API_KEY,
|
247
278
|
SPARK_API_KEY: process.env.SPARK_API_KEY,
|
279
|
+
SPARK_MODEL_LIST: process.env.SPARK_MODEL_LIST,
|
248
280
|
|
249
281
|
ENABLED_AI21: !!process.env.AI21_API_KEY,
|
250
282
|
AI21_API_KEY: process.env.AI21_API_KEY,
|
283
|
+
AI21_MODEL_LIST: process.env.AI21_MODEL_LIST,
|
251
284
|
|
252
285
|
ENABLED_HUNYUAN: !!process.env.HUNYUAN_API_KEY,
|
253
286
|
HUNYUAN_API_KEY: process.env.HUNYUAN_API_KEY,
|
@@ -257,6 +290,11 @@ export const getLLMConfig = () => {
|
|
257
290
|
HUGGINGFACE_API_KEY: process.env.HUGGINGFACE_API_KEY,
|
258
291
|
HUGGINGFACE_PROXY_URL: process.env.HUGGINGFACE_PROXY_URL,
|
259
292
|
HUGGINGFACE_MODEL_LIST: process.env.HUGGINGFACE_MODEL_LIST,
|
293
|
+
|
294
|
+
ENABLED_SENSENOVA: !!process.env.SENSENOVA_ACCESS_KEY_ID && !!process.env.SENSENOVA_ACCESS_KEY_SECRET,
|
295
|
+
SENSENOVA_ACCESS_KEY_ID: process.env.SENSENOVA_ACCESS_KEY_ID,
|
296
|
+
SENSENOVA_ACCESS_KEY_SECRET: process.env.SENSENOVA_ACCESS_KEY_SECRET,
|
297
|
+
SENSENOVA_MODEL_LIST: process.env.SENSENOVA_MODEL_LIST,
|
260
298
|
},
|
261
299
|
});
|
262
300
|
};
|
@@ -22,6 +22,7 @@ import OpenAIProvider from './openai';
|
|
22
22
|
import OpenRouterProvider from './openrouter';
|
23
23
|
import PerplexityProvider from './perplexity';
|
24
24
|
import QwenProvider from './qwen';
|
25
|
+
import SenseNovaProvider from './sensenova';
|
25
26
|
import SiliconCloudProvider from './siliconcloud';
|
26
27
|
import SparkProvider from './spark';
|
27
28
|
import StepfunProvider from './stepfun';
|
@@ -63,6 +64,7 @@ export const LOBE_DEFAULT_MODEL_LIST: ChatModelCard[] = [
|
|
63
64
|
Ai21Provider.chatModels,
|
64
65
|
HunyuanProvider.chatModels,
|
65
66
|
WenxinProvider.chatModels,
|
67
|
+
SenseNovaProvider.chatModels,
|
66
68
|
].flat();
|
67
69
|
|
68
70
|
export const DEFAULT_MODEL_PROVIDER_LIST = [
|
@@ -90,6 +92,7 @@ export const DEFAULT_MODEL_PROVIDER_LIST = [
|
|
90
92
|
SparkProvider,
|
91
93
|
ZhiPuProvider,
|
92
94
|
ZeroOneProvider,
|
95
|
+
SenseNovaProvider,
|
93
96
|
StepfunProvider,
|
94
97
|
MoonshotProvider,
|
95
98
|
BaichuanProvider,
|
@@ -130,6 +133,7 @@ export { default as OpenAIProviderCard } from './openai';
|
|
130
133
|
export { default as OpenRouterProviderCard } from './openrouter';
|
131
134
|
export { default as PerplexityProviderCard } from './perplexity';
|
132
135
|
export { default as QwenProviderCard } from './qwen';
|
136
|
+
export { default as SenseNovaProviderCard } from './sensenova';
|
133
137
|
export { default as SiliconCloudProviderCard } from './siliconcloud';
|
134
138
|
export { default as SparkProviderCard } from './spark';
|
135
139
|
export { default as StepfunProviderCard } from './stepfun';
|
@@ -0,0 +1,124 @@
|
|
1
|
+
import { ModelProviderCard } from '@/types/llm';
|
2
|
+
|
3
|
+
// ref https://platform.sensenova.cn/pricing
|
4
|
+
// ref https://platform.sensenova.cn/release?path=/release-202409.md
|
5
|
+
const SenseNova: ModelProviderCard = {
|
6
|
+
chatModels: [
|
7
|
+
{
|
8
|
+
description: '最新版本模型 (V5.5),128K上下文长度,在数学推理、英文对话、指令跟随以及长文本理解等领域能力显著提升,比肩GPT-4o',
|
9
|
+
displayName: 'SenseChat 5.5',
|
10
|
+
enabled: true,
|
11
|
+
functionCall: true,
|
12
|
+
id: 'SenseChat-5',
|
13
|
+
pricing: {
|
14
|
+
currency: 'CNY',
|
15
|
+
input: 40,
|
16
|
+
output: 100,
|
17
|
+
},
|
18
|
+
tokens: 131_072,
|
19
|
+
},
|
20
|
+
{
|
21
|
+
description: '最新版本模型 (V5.5),16K上下文长度,支持多图的输入,全面实现模型基础能力优化,在对象属性识别、空间关系、动作事件识别、场景理解、情感识别、逻辑常识推理和文本理解生成上都实现了较大提升。',
|
22
|
+
displayName: 'SenseChat 5.5 Vision',
|
23
|
+
enabled: true,
|
24
|
+
id: 'SenseChat-Vision',
|
25
|
+
pricing: {
|
26
|
+
currency: 'CNY',
|
27
|
+
input: 100,
|
28
|
+
output: 100,
|
29
|
+
},
|
30
|
+
tokens: 16_384,
|
31
|
+
vision: true,
|
32
|
+
},
|
33
|
+
{
|
34
|
+
description: '适用于快速问答、模型微调场景',
|
35
|
+
displayName: 'SenseChat 5.0 Turbo',
|
36
|
+
enabled: true,
|
37
|
+
id: 'SenseChat-Turbo',
|
38
|
+
pricing: {
|
39
|
+
currency: 'CNY',
|
40
|
+
input: 2,
|
41
|
+
output: 5,
|
42
|
+
},
|
43
|
+
tokens: 32_768,
|
44
|
+
},
|
45
|
+
{
|
46
|
+
description: '32K上下文长度,在粤语的对话理解上超越了GPT-4,在知识、推理、数学及代码编写等多个领域均能与GPT-4 Turbo相媲美',
|
47
|
+
displayName: 'SenseChat 5.0 Cantonese',
|
48
|
+
id: 'SenseChat-5-Cantonese',
|
49
|
+
pricing: {
|
50
|
+
currency: 'CNY',
|
51
|
+
input: 27,
|
52
|
+
output: 27,
|
53
|
+
},
|
54
|
+
tokens: 32_768,
|
55
|
+
},
|
56
|
+
{
|
57
|
+
description: '基础版本模型 (V4),128K上下文长度,在长文本理解及生成等任务中表现出色',
|
58
|
+
displayName: 'SenseChat 4.0 128K',
|
59
|
+
enabled: true,
|
60
|
+
id: 'SenseChat-128K',
|
61
|
+
pricing: {
|
62
|
+
currency: 'CNY',
|
63
|
+
input: 60,
|
64
|
+
output: 60,
|
65
|
+
},
|
66
|
+
tokens: 131_072,
|
67
|
+
},
|
68
|
+
{
|
69
|
+
description: '基础版本模型 (V4),32K上下文长度,灵活应用于各类场景',
|
70
|
+
displayName: 'SenseChat 4.0 32K',
|
71
|
+
enabled: true,
|
72
|
+
id: 'SenseChat-32K',
|
73
|
+
pricing: {
|
74
|
+
currency: 'CNY',
|
75
|
+
input: 36,
|
76
|
+
output: 36,
|
77
|
+
},
|
78
|
+
tokens: 32_768,
|
79
|
+
},
|
80
|
+
{
|
81
|
+
description: '基础版本模型 (V4),4K上下文长度,通用能力强大',
|
82
|
+
displayName: 'SenseChat 4.0 4K',
|
83
|
+
enabled: true,
|
84
|
+
id: 'SenseChat',
|
85
|
+
pricing: {
|
86
|
+
currency: 'CNY',
|
87
|
+
input: 12,
|
88
|
+
output: 12,
|
89
|
+
},
|
90
|
+
tokens: 4096,
|
91
|
+
},
|
92
|
+
{
|
93
|
+
description: '标准版模型,8K上下文长度,高响应速度',
|
94
|
+
displayName: 'SenseChat Character',
|
95
|
+
id: 'SenseChat-Character',
|
96
|
+
pricing: {
|
97
|
+
currency: 'CNY',
|
98
|
+
input: 12,
|
99
|
+
output: 12,
|
100
|
+
},
|
101
|
+
tokens: 8192,
|
102
|
+
},
|
103
|
+
{
|
104
|
+
description: '高级版模型,32K上下文长度,能力全面提升,支持中/英文对话',
|
105
|
+
displayName: 'SenseChat Character Pro',
|
106
|
+
id: 'SenseChat-Character-Pro',
|
107
|
+
pricing: {
|
108
|
+
currency: 'CNY',
|
109
|
+
input: 15,
|
110
|
+
output: 15,
|
111
|
+
},
|
112
|
+
tokens: 32_768,
|
113
|
+
},
|
114
|
+
],
|
115
|
+
checkModel: 'SenseChat-Turbo',
|
116
|
+
disableBrowserRequest: true,
|
117
|
+
id: 'sensenova',
|
118
|
+
modelList: { showModelFetcher: true },
|
119
|
+
modelsUrl: 'https://platform.sensenova.cn/pricing',
|
120
|
+
name: 'SenseNova',
|
121
|
+
url: 'https://platform.sensenova.cn/home',
|
122
|
+
};
|
123
|
+
|
124
|
+
export default SenseNova;
|
@@ -10,7 +10,7 @@ const Spark: ModelProviderCard = {
|
|
10
10
|
displayName: 'Spark Lite',
|
11
11
|
enabled: true,
|
12
12
|
functionCall: false,
|
13
|
-
id: '
|
13
|
+
id: 'lite',
|
14
14
|
maxOutput: 4096,
|
15
15
|
tokens: 8192,
|
16
16
|
},
|
@@ -30,14 +30,14 @@ const Spark: ModelProviderCard = {
|
|
30
30
|
displayName: 'Spark Pro 128K',
|
31
31
|
enabled: true,
|
32
32
|
functionCall: false,
|
33
|
-
id: '
|
33
|
+
id: 'pro-128k',
|
34
34
|
maxOutput: 4096,
|
35
35
|
tokens: 131_072,
|
36
36
|
},
|
37
37
|
{
|
38
38
|
description:
|
39
39
|
'Spark Max 为功能最为全面的版本,支持联网搜索及众多内置插件。其全面优化的核心能力以及系统角色设定和函数调用功能,使其在各种复杂应用场景中的表现极为优异和出色。',
|
40
|
-
displayName: 'Spark
|
40
|
+
displayName: 'Spark Max',
|
41
41
|
enabled: true,
|
42
42
|
functionCall: false,
|
43
43
|
id: 'generalv3.5',
|
@@ -47,10 +47,10 @@ const Spark: ModelProviderCard = {
|
|
47
47
|
{
|
48
48
|
description:
|
49
49
|
'Spark Max 32K 配置了大上下文处理能力,更强的上下文理解和逻辑推理能力,支持32K tokens的文本输入,适用于长文档阅读、私有知识问答等场景',
|
50
|
-
displayName: 'Spark
|
50
|
+
displayName: 'Spark Max 32K',
|
51
51
|
enabled: true,
|
52
52
|
functionCall: false,
|
53
|
-
id: '
|
53
|
+
id: 'max-32k',
|
54
54
|
maxOutput: 8192,
|
55
55
|
tokens: 32_768,
|
56
56
|
},
|
@@ -65,7 +65,7 @@ const Spark: ModelProviderCard = {
|
|
65
65
|
tokens: 8192,
|
66
66
|
},
|
67
67
|
],
|
68
|
-
checkModel: '
|
68
|
+
checkModel: 'lite',
|
69
69
|
description:
|
70
70
|
'科大讯飞星火大模型提供多领域、多语言的强大 AI 能力,利用先进的自然语言处理技术,构建适用于智能硬件、智慧医疗、智慧金融等多种垂直场景的创新应用。',
|
71
71
|
id: 'spark',
|
package/src/const/auth.ts
CHANGED
@@ -20,6 +20,7 @@ import {
|
|
20
20
|
OpenRouterProviderCard,
|
21
21
|
PerplexityProviderCard,
|
22
22
|
QwenProviderCard,
|
23
|
+
SenseNovaProviderCard,
|
23
24
|
SiliconCloudProviderCard,
|
24
25
|
SparkProviderCard,
|
25
26
|
StepfunProviderCard,
|
@@ -123,6 +124,10 @@ export const DEFAULT_LLM_CONFIG: UserModelProviderConfig = {
|
|
123
124
|
enabled: false,
|
124
125
|
enabledModels: filterEnabledModels(QwenProviderCard),
|
125
126
|
},
|
127
|
+
sensenova: {
|
128
|
+
enabled: false,
|
129
|
+
enabledModels: filterEnabledModels(SenseNovaProviderCard),
|
130
|
+
},
|
126
131
|
siliconcloud: {
|
127
132
|
enabled: false,
|
128
133
|
enabledModels: filterEnabledModels(SiliconCloudProviderCard),
|