@lobehub/chat 1.42.2 → 1.42.4

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.
Files changed (125) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/README.ja-JP.md +6 -6
  3. package/README.md +6 -6
  4. package/README.zh-CN.md +7 -7
  5. package/changelog/v1.json +14 -0
  6. package/locales/ar/components.json +3 -0
  7. package/locales/ar/modelProvider.json +0 -16
  8. package/locales/ar/models.json +12 -0
  9. package/locales/ar/setting.json +1 -2
  10. package/locales/bg-BG/components.json +3 -0
  11. package/locales/bg-BG/modelProvider.json +0 -16
  12. package/locales/bg-BG/models.json +12 -0
  13. package/locales/bg-BG/setting.json +1 -2
  14. package/locales/de-DE/components.json +3 -0
  15. package/locales/de-DE/modelProvider.json +0 -16
  16. package/locales/de-DE/models.json +12 -0
  17. package/locales/de-DE/setting.json +1 -2
  18. package/locales/en-US/components.json +3 -0
  19. package/locales/en-US/modelProvider.json +0 -16
  20. package/locales/en-US/models.json +12 -0
  21. package/locales/en-US/setting.json +1 -2
  22. package/locales/es-ES/components.json +3 -0
  23. package/locales/es-ES/modelProvider.json +0 -16
  24. package/locales/es-ES/models.json +12 -0
  25. package/locales/es-ES/setting.json +1 -2
  26. package/locales/fa-IR/components.json +3 -0
  27. package/locales/fa-IR/modelProvider.json +0 -16
  28. package/locales/fa-IR/models.json +12 -0
  29. package/locales/fa-IR/setting.json +1 -2
  30. package/locales/fr-FR/components.json +3 -0
  31. package/locales/fr-FR/modelProvider.json +0 -16
  32. package/locales/fr-FR/models.json +12 -0
  33. package/locales/fr-FR/setting.json +1 -2
  34. package/locales/it-IT/components.json +3 -0
  35. package/locales/it-IT/modelProvider.json +0 -16
  36. package/locales/it-IT/models.json +12 -0
  37. package/locales/it-IT/setting.json +1 -2
  38. package/locales/ja-JP/components.json +3 -0
  39. package/locales/ja-JP/modelProvider.json +0 -16
  40. package/locales/ja-JP/models.json +12 -0
  41. package/locales/ja-JP/setting.json +1 -2
  42. package/locales/ko-KR/components.json +3 -0
  43. package/locales/ko-KR/modelProvider.json +0 -16
  44. package/locales/ko-KR/models.json +12 -0
  45. package/locales/ko-KR/setting.json +1 -2
  46. package/locales/nl-NL/components.json +3 -0
  47. package/locales/nl-NL/modelProvider.json +0 -16
  48. package/locales/nl-NL/models.json +12 -0
  49. package/locales/nl-NL/setting.json +1 -2
  50. package/locales/pl-PL/components.json +3 -0
  51. package/locales/pl-PL/modelProvider.json +0 -16
  52. package/locales/pl-PL/models.json +12 -0
  53. package/locales/pl-PL/setting.json +1 -2
  54. package/locales/pt-BR/components.json +3 -0
  55. package/locales/pt-BR/modelProvider.json +0 -16
  56. package/locales/pt-BR/models.json +12 -0
  57. package/locales/pt-BR/setting.json +1 -2
  58. package/locales/ru-RU/components.json +3 -0
  59. package/locales/ru-RU/modelProvider.json +0 -16
  60. package/locales/ru-RU/models.json +12 -0
  61. package/locales/ru-RU/setting.json +1 -2
  62. package/locales/tr-TR/components.json +3 -0
  63. package/locales/tr-TR/modelProvider.json +0 -16
  64. package/locales/tr-TR/models.json +12 -0
  65. package/locales/tr-TR/setting.json +1 -2
  66. package/locales/vi-VN/components.json +3 -0
  67. package/locales/vi-VN/modelProvider.json +0 -16
  68. package/locales/vi-VN/models.json +12 -0
  69. package/locales/vi-VN/setting.json +1 -2
  70. package/locales/zh-CN/common.json +1 -1
  71. package/locales/zh-CN/components.json +3 -0
  72. package/locales/zh-CN/modelProvider.json +0 -16
  73. package/locales/zh-CN/models.json +12 -0
  74. package/locales/zh-CN/providers.json +1 -1
  75. package/locales/zh-CN/setting.json +1 -2
  76. package/locales/zh-TW/components.json +3 -0
  77. package/locales/zh-TW/modelProvider.json +0 -16
  78. package/locales/zh-TW/models.json +12 -0
  79. package/locales/zh-TW/setting.json +1 -2
  80. package/package.json +3 -3
  81. package/src/app/(main)/settings/_layout/Desktop/SideBar.tsx +5 -1
  82. package/src/config/modelProviders/ai21.ts +4 -0
  83. package/src/config/modelProviders/ai360.ts +5 -0
  84. package/src/config/modelProviders/anthropic.ts +11 -0
  85. package/src/config/modelProviders/azure.ts +4 -0
  86. package/src/config/modelProviders/baichuan.ts +8 -0
  87. package/src/config/modelProviders/bedrock.ts +1 -0
  88. package/src/config/modelProviders/cloudflare.ts +5 -0
  89. package/src/config/modelProviders/deepseek.ts +4 -0
  90. package/src/config/modelProviders/fireworksai.ts +4 -0
  91. package/src/config/modelProviders/giteeai.ts +5 -0
  92. package/src/config/modelProviders/github.ts +6 -1
  93. package/src/config/modelProviders/google.ts +10 -0
  94. package/src/config/modelProviders/groq.ts +7 -0
  95. package/src/config/modelProviders/higress.ts +9 -0
  96. package/src/config/modelProviders/huggingface.ts +5 -0
  97. package/src/config/modelProviders/hunyuan.ts +5 -0
  98. package/src/config/modelProviders/internlm.ts +5 -0
  99. package/src/config/modelProviders/minimax.ts +7 -0
  100. package/src/config/modelProviders/mistral.ts +3 -0
  101. package/src/config/modelProviders/moonshot.ts +10 -0
  102. package/src/config/modelProviders/novita.ts +5 -0
  103. package/src/config/modelProviders/ollama.ts +6 -8
  104. package/src/config/modelProviders/openai.ts +5 -2
  105. package/src/config/modelProviders/openrouter.ts +5 -1
  106. package/src/config/modelProviders/perplexity.ts +6 -0
  107. package/src/config/modelProviders/qwen.ts +12 -0
  108. package/src/config/modelProviders/sensenova.ts +5 -0
  109. package/src/config/modelProviders/siliconcloud.ts +7 -0
  110. package/src/config/modelProviders/spark.ts +8 -0
  111. package/src/config/modelProviders/stepfun.ts +9 -0
  112. package/src/config/modelProviders/taichu.ts +4 -0
  113. package/src/config/modelProviders/togetherai.ts +4 -0
  114. package/src/config/modelProviders/upstage.ts +4 -0
  115. package/src/config/modelProviders/wenxin.ts +8 -0
  116. package/src/config/modelProviders/xai.ts +7 -0
  117. package/src/config/modelProviders/zeroone.ts +1 -0
  118. package/src/config/modelProviders/zhipu.ts +1 -0
  119. package/src/features/ModelSelect/index.tsx +6 -8
  120. package/src/features/ModelSwitchPanel/index.tsx +6 -8
  121. package/src/hooks/useEnabledChatModels.ts +9 -0
  122. package/src/store/user/slices/modelList/selectors/modelProvider.ts +13 -2
  123. package/src/types/aiModel.ts +15 -0
  124. package/src/types/aiProvider.ts +70 -16
  125. package/src/types/llm.ts +18 -3
@@ -1,7 +1,32 @@
1
1
  import { z } from 'zod';
2
2
 
3
+ import { AiModelSourceType, AiModelType, ModelAbilities } from '@/types/aiModel';
3
4
  import { SmoothingParams } from '@/types/llm';
4
5
 
6
+ export const AiProviderSourceEnum = {
7
+ Builtin: 'builtin',
8
+ Custom: 'custom',
9
+ } as const;
10
+ export type AiProviderSourceType = (typeof AiProviderSourceEnum)[keyof typeof AiProviderSourceEnum];
11
+
12
+ /**
13
+ * only when provider use different sdk
14
+ * we will add a type
15
+ */
16
+ export const AiProviderSDKEnum = {
17
+ Anthropic: 'anthropic',
18
+ Azure: 'azure',
19
+ Bedrock: 'bedrock',
20
+ Cloudflare: 'cloudflare',
21
+ Google: 'google',
22
+ Huggingface: 'huggingface',
23
+ Ollama: 'ollama',
24
+ Openai: 'openai',
25
+ Wenxin: 'wenxin',
26
+ } as const;
27
+
28
+ export type AiProviderSDKType = (typeof AiProviderSDKEnum)[keyof typeof AiProviderSDKEnum];
29
+
5
30
  // create
6
31
  export const CreateAiProviderSchema = z.object({
7
32
  config: z.object({}).passthrough().optional(),
@@ -11,6 +36,7 @@ export const CreateAiProviderSchema = z.object({
11
36
  logo: z.string().optional(),
12
37
  name: z.string(),
13
38
  sdkType: z.enum(['openai', 'anthropic']).optional(),
39
+ source: z.enum(['builtin', 'custom']),
14
40
  // checkModel: z.string().optional(),
15
41
  // homeUrl: z.string().optional(),
16
42
  // modelsUrl: z.string().optional(),
@@ -27,12 +53,12 @@ export interface AiProviderListItem {
27
53
  logo?: string;
28
54
  name?: string;
29
55
  sort?: number;
30
- source: 'builtin' | 'custom';
56
+ source: AiProviderSourceType;
31
57
  }
32
58
 
33
59
  // Detail Query
34
60
 
35
- interface AiProviderConfig {
61
+ export interface AiProviderSettings {
36
62
  /**
37
63
  * whether provider show browser request option by default
38
64
  *
@@ -54,12 +80,16 @@ interface AiProviderConfig {
54
80
  }
55
81
  | false;
56
82
 
83
+ /**
84
+ * default openai
85
+ */
86
+ sdkType?: AiProviderSDKType;
87
+
57
88
  /**
58
89
  * whether show api key in the provider config
59
90
  * so provider like ollama don't need api key field
60
91
  */
61
92
  showApiKey?: boolean;
62
-
63
93
  /**
64
94
  * whether show checker in the provider config
65
95
  */
@@ -72,12 +102,12 @@ interface AiProviderConfig {
72
102
  smoothing?: SmoothingParams;
73
103
  }
74
104
 
75
- export interface AiProviderItem {
105
+ export interface AiProviderCard {
76
106
  /**
77
107
  * the default model that used for connection check
78
108
  */
79
109
  checkModel?: string;
80
- config: AiProviderConfig;
110
+ config: AiProviderSettings;
81
111
  description?: string;
82
112
  enabled: boolean;
83
113
  enabledChatModels: string[];
@@ -95,11 +125,6 @@ export interface AiProviderItem {
95
125
  * the name show for end user
96
126
  */
97
127
  name: string;
98
- /**
99
- * default openai
100
- */
101
- sdkType?: 'openai' | 'anthropic';
102
- source: 'builtin' | 'custom';
103
128
  }
104
129
 
105
130
  export interface AiProviderDetailItem {
@@ -107,7 +132,6 @@ export interface AiProviderDetailItem {
107
132
  * the default model that used for connection check
108
133
  */
109
134
  checkModel?: string;
110
- config: AiProviderConfig;
111
135
  description?: string;
112
136
  enabled: boolean;
113
137
  fetchOnClient?: boolean;
@@ -126,14 +150,21 @@ export interface AiProviderDetailItem {
126
150
  * the name show for end user
127
151
  */
128
152
  name: string;
129
- /**
130
- * default openai
131
- */
132
- sdkType?: 'openai' | 'anthropic';
133
- source: 'builtin' | 'custom';
153
+ settings: AiProviderSettings;
154
+ source: AiProviderSourceType;
134
155
  }
135
156
 
136
157
  // Update
158
+ export const UpdateAiProviderSchema = z.object({
159
+ config: z.object({}).passthrough().optional(),
160
+ description: z.string().optional(),
161
+ logo: z.string().optional(),
162
+ name: z.string(),
163
+ sdkType: z.enum(['openai', 'anthropic']).optional(),
164
+ });
165
+
166
+ export type UpdateAiProviderParams = z.infer<typeof UpdateAiProviderSchema>;
167
+
137
168
  export const UpdateAiProviderConfigSchema = z.object({
138
169
  checkModel: z.string().optional(),
139
170
  fetchOnClient: z.boolean().optional(),
@@ -146,3 +177,26 @@ export interface AiProviderSortMap {
146
177
  id: string;
147
178
  sort: number;
148
179
  }
180
+
181
+ // --------
182
+
183
+ export interface EnabledProvider {
184
+ id: string;
185
+ name?: string;
186
+ source: AiModelSourceType;
187
+ }
188
+
189
+ export interface EnabledAiModel {
190
+ abilities: ModelAbilities;
191
+ contextWindowTokens?: number;
192
+ displayName?: string;
193
+ id: string;
194
+ providerId: string;
195
+ type: AiModelType;
196
+ }
197
+
198
+ export interface AiProviderInitState {
199
+ enabledAiModels: EnabledAiModel[];
200
+ enabledAiProviders: EnabledProvider[];
201
+ keyVaults: Record<string, object>;
202
+ }
package/src/types/llm.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import { ReactNode } from 'react';
2
2
 
3
3
  import { ChatModelPricing } from '@/types/aiModel';
4
+ import { AiProviderSettings } from '@/types/aiProvider';
4
5
 
5
6
  export type ModelPriceCurrency = 'CNY' | 'USD';
6
7
 
@@ -56,6 +57,9 @@ export interface SmoothingParams {
56
57
  }
57
58
 
58
59
  export interface ModelProviderCard {
60
+ /**
61
+ * @deprecated
62
+ */
59
63
  chatModels: ChatModelCard[];
60
64
  /**
61
65
  * the default model that used for connection check
@@ -63,7 +67,7 @@ export interface ModelProviderCard {
63
67
  checkModel?: string;
64
68
  /**
65
69
  * whether provider show browser request option by default
66
- *
70
+ * @deprecated
67
71
  * @default false
68
72
  */
69
73
  defaultShowBrowserRequest?: boolean;
@@ -71,7 +75,7 @@ export interface ModelProviderCard {
71
75
  /**
72
76
  * some provider server like stepfun and aliyun don't support browser request,
73
77
  * So we should disable it
74
- *
78
+ * @deprecated
75
79
  * @default false
76
80
  */
77
81
  disableBrowserRequest?: boolean;
@@ -80,6 +84,9 @@ export interface ModelProviderCard {
80
84
  */
81
85
  enabled?: boolean;
82
86
  id: string;
87
+ /**
88
+ * @deprecated
89
+ */
83
90
  modelList?: {
84
91
  azureDeployName?: boolean;
85
92
  notFoundContent?: ReactNode;
@@ -94,6 +101,9 @@ export interface ModelProviderCard {
94
101
  * the name show for end user
95
102
  */
96
103
  name: string;
104
+ /**
105
+ * @deprecated
106
+ */
97
107
  proxyUrl?:
98
108
  | {
99
109
  desc?: string;
@@ -102,20 +112,25 @@ export interface ModelProviderCard {
102
112
  }
103
113
  | false;
104
114
 
115
+ settings: AiProviderSettings;
105
116
  /**
106
117
  * whether show api key in the provider config
107
118
  * so provider like ollama don't need api key field
119
+ * @deprecated
108
120
  */
109
121
  showApiKey?: boolean;
122
+
110
123
  /**
111
124
  * whether show checker in the provider config
125
+ * @deprecated
112
126
  */
113
127
  showChecker?: boolean;
128
+
114
129
  /**
115
130
  * whether to smoothing the output
131
+ * @deprecated
116
132
  */
117
133
  smoothing?: SmoothingParams;
118
-
119
134
  /**
120
135
  * provider's website url
121
136
  */