@lobehub/chat 1.111.1 → 1.111.3

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 (131) hide show
  1. package/.cursor/rules/code-review.mdc +2 -19
  2. package/.cursor/rules/cursor-ux.mdc +0 -72
  3. package/.cursor/rules/project-introduce.mdc +5 -5
  4. package/.cursor/rules/react-component.mdc +92 -73
  5. package/.cursor/rules/rules-attach.mdc +28 -61
  6. package/.cursor/rules/system-role.mdc +8 -20
  7. package/.cursor/rules/typescript.mdc +55 -14
  8. package/CHANGELOG.md +52 -0
  9. package/changelog/v1.json +14 -0
  10. package/locales/ar/models.json +21 -3
  11. package/locales/bg-BG/models.json +21 -3
  12. package/locales/de-DE/models.json +21 -3
  13. package/locales/en-US/models.json +21 -3
  14. package/locales/es-ES/models.json +21 -3
  15. package/locales/fa-IR/models.json +21 -3
  16. package/locales/fr-FR/models.json +21 -3
  17. package/locales/it-IT/models.json +21 -3
  18. package/locales/ja-JP/models.json +21 -3
  19. package/locales/ko-KR/models.json +21 -3
  20. package/locales/nl-NL/models.json +21 -3
  21. package/locales/pl-PL/models.json +21 -3
  22. package/locales/pt-BR/models.json +21 -3
  23. package/locales/ru-RU/models.json +21 -3
  24. package/locales/tr-TR/models.json +21 -3
  25. package/locales/vi-VN/models.json +21 -3
  26. package/locales/zh-CN/models.json +21 -3
  27. package/locales/zh-TW/models.json +21 -3
  28. package/package.json +1 -1
  29. package/packages/types/src/aiModel.ts +67 -46
  30. package/packages/types/src/hotkey.ts +2 -0
  31. package/packages/types/src/llm.ts +3 -3
  32. package/src/app/[variants]/(main)/_layout/Desktop/SideBar/PinList/index.tsx +3 -3
  33. package/src/app/[variants]/(main)/_layout/Desktop/SideBar/TopActions.test.tsx +1 -0
  34. package/src/app/[variants]/(main)/_layout/Desktop/SideBar/TopActions.tsx +11 -2
  35. package/src/app/[variants]/(main)/_layout/Desktop/SideBar/index.tsx +2 -2
  36. package/src/app/[variants]/(main)/chat/(workspace)/_layout/Desktop/ChatHeader/Main.tsx +2 -2
  37. package/src/app/[variants]/(main)/chat/_layout/Desktop/SessionPanel.tsx +2 -2
  38. package/src/app/[variants]/(main)/discover/(detail)/model/[...slugs]/features/Details/Overview/ProviderList/index.tsx +23 -12
  39. package/src/app/[variants]/(main)/discover/(detail)/provider/[...slugs]/features/Details/Overview/ModelList/index.tsx +23 -10
  40. package/src/app/[variants]/(main)/settings/provider/features/ModelList/ModelItem.tsx +21 -12
  41. package/src/components/Thinking/index.tsx +53 -13
  42. package/src/config/aiModels/ai21.ts +8 -4
  43. package/src/config/aiModels/ai360.ts +28 -14
  44. package/src/config/aiModels/aihubmix.ts +174 -86
  45. package/src/config/aiModels/anthropic.ts +97 -38
  46. package/src/config/aiModels/azure.ts +54 -32
  47. package/src/config/aiModels/azureai.ts +63 -37
  48. package/src/config/aiModels/baichuan.ts +24 -12
  49. package/src/config/aiModels/bedrock.ts +60 -30
  50. package/src/config/aiModels/cohere.ts +60 -30
  51. package/src/config/aiModels/deepseek.ts +10 -6
  52. package/src/config/aiModels/fireworksai.ts +88 -44
  53. package/src/config/aiModels/giteeai.ts +1 -1
  54. package/src/config/aiModels/github.ts +44 -26
  55. package/src/config/aiModels/google.ts +119 -68
  56. package/src/config/aiModels/groq.ts +48 -24
  57. package/src/config/aiModels/higress.ts +617 -310
  58. package/src/config/aiModels/hunyuan.ts +105 -54
  59. package/src/config/aiModels/infiniai.ts +104 -52
  60. package/src/config/aiModels/internlm.ts +16 -8
  61. package/src/config/aiModels/jina.ts +4 -2
  62. package/src/config/aiModels/minimax.ts +11 -10
  63. package/src/config/aiModels/mistral.ts +40 -20
  64. package/src/config/aiModels/moonshot.ts +42 -22
  65. package/src/config/aiModels/novita.ts +196 -98
  66. package/src/config/aiModels/openai.ts +270 -137
  67. package/src/config/aiModels/openrouter.ts +205 -100
  68. package/src/config/aiModels/perplexity.ts +36 -6
  69. package/src/config/aiModels/ppio.ts +76 -38
  70. package/src/config/aiModels/qwen.ts +257 -133
  71. package/src/config/aiModels/sambanova.ts +56 -28
  72. package/src/config/aiModels/sensenova.ts +100 -50
  73. package/src/config/aiModels/siliconcloud.ts +224 -112
  74. package/src/config/aiModels/stepfun.ts +44 -22
  75. package/src/config/aiModels/taichu.ts +8 -4
  76. package/src/config/aiModels/tencentcloud.ts +12 -6
  77. package/src/config/aiModels/upstage.ts +8 -4
  78. package/src/config/aiModels/v0.ts +15 -12
  79. package/src/config/aiModels/vertexai.ts +49 -27
  80. package/src/config/aiModels/volcengine.ts +110 -51
  81. package/src/config/aiModels/wenxin.ts +179 -73
  82. package/src/config/aiModels/xai.ts +33 -19
  83. package/src/config/aiModels/zeroone.ts +48 -24
  84. package/src/config/aiModels/zhipu.ts +118 -69
  85. package/src/config/modelProviders/ai21.ts +0 -8
  86. package/src/config/modelProviders/ai360.ts +0 -20
  87. package/src/config/modelProviders/anthropic.ts +0 -56
  88. package/src/config/modelProviders/baichuan.ts +0 -30
  89. package/src/config/modelProviders/bedrock.ts +0 -74
  90. package/src/config/modelProviders/deepseek.ts +0 -13
  91. package/src/config/modelProviders/fireworksai.ts +0 -88
  92. package/src/config/modelProviders/google.ts +0 -59
  93. package/src/config/modelProviders/groq.ts +0 -48
  94. package/src/config/modelProviders/higress.ts +0 -727
  95. package/src/config/modelProviders/hunyuan.ts +0 -45
  96. package/src/config/modelProviders/infiniai.ts +0 -60
  97. package/src/config/modelProviders/internlm.ts +0 -8
  98. package/src/config/modelProviders/mistral.ts +0 -48
  99. package/src/config/modelProviders/modelscope.ts +2 -1
  100. package/src/config/modelProviders/openai.ts +5 -100
  101. package/src/config/modelProviders/openrouter.ts +0 -77
  102. package/src/config/modelProviders/ppio.ts +0 -95
  103. package/src/config/modelProviders/qwen.ts +0 -165
  104. package/src/config/modelProviders/sensenova.ts +0 -45
  105. package/src/config/modelProviders/siliconcloud.ts +0 -266
  106. package/src/config/modelProviders/stepfun.ts +0 -60
  107. package/src/config/modelProviders/taichu.ts +0 -10
  108. package/src/config/modelProviders/wenxin.ts +0 -90
  109. package/src/config/modelProviders/xai.ts +0 -16
  110. package/src/config/modelProviders/zeroone.ts +0 -60
  111. package/src/config/modelProviders/zhipu.ts +0 -80
  112. package/src/const/hotkeys.ts +6 -0
  113. package/src/features/Conversation/Extras/Usage/UsageDetail/ModelCard.tsx +4 -3
  114. package/src/features/Conversation/Extras/Usage/UsageDetail/pricing.ts +25 -15
  115. package/src/features/Conversation/Extras/Usage/UsageDetail/tokens.test.ts +7 -5
  116. package/src/features/Conversation/Extras/Usage/UsageDetail/tokens.ts +6 -5
  117. package/src/hooks/useHotkeys/chatScope.ts +2 -2
  118. package/src/hooks/useHotkeys/globalScope.ts +16 -4
  119. package/src/hooks/usePinnedAgentState.ts +21 -0
  120. package/src/hooks/useSwitchSession.ts +1 -1
  121. package/src/libs/model-runtime/utils/openaiCompatibleFactory/index.test.ts +54 -8
  122. package/src/locales/default/hotkey.ts +4 -0
  123. package/src/server/routers/lambda/agent.ts +2 -2
  124. package/src/server/routers/lambda/config/__snapshots__/index.test.ts.snap +0 -28
  125. package/src/server/services/discover/index.ts +7 -6
  126. package/src/server/services/user/index.ts +1 -2
  127. package/src/utils/__snapshots__/parseModels.test.ts.snap +28 -4
  128. package/src/utils/_deprecated/__snapshots__/parseModels.test.ts.snap +0 -8
  129. package/src/utils/parseModels.test.ts +60 -9
  130. package/src/utils/pricing.test.ts +183 -0
  131. package/src/utils/pricing.ts +90 -0
@@ -12,8 +12,10 @@ const sambanovaChatModels: AIChatModelCard[] = [
12
12
  enabled: true,
13
13
  id: 'Meta-Llama-3.3-70B-Instruct',
14
14
  pricing: {
15
- input: 0.6,
16
- output: 1.2,
15
+ units: [
16
+ { name: 'textInput', rate: 0.6, strategy: 'fixed', unit: 'millionTokens' },
17
+ { name: 'textOutput', rate: 1.2, strategy: 'fixed', unit: 'millionTokens' },
18
+ ],
17
19
  },
18
20
  type: 'chat',
19
21
  },
@@ -23,8 +25,10 @@ const sambanovaChatModels: AIChatModelCard[] = [
23
25
  displayName: 'Meta Llama 3.2 1B Instruct',
24
26
  id: 'Meta-Llama-3.2-1B-Instruct',
25
27
  pricing: {
26
- input: 0.04,
27
- output: 0.08,
28
+ units: [
29
+ { name: 'textInput', rate: 0.04, strategy: 'fixed', unit: 'millionTokens' },
30
+ { name: 'textOutput', rate: 0.08, strategy: 'fixed', unit: 'millionTokens' },
31
+ ],
28
32
  },
29
33
  type: 'chat',
30
34
  },
@@ -34,8 +38,10 @@ const sambanovaChatModels: AIChatModelCard[] = [
34
38
  displayName: 'Meta Llama 3.2 3B Instruct',
35
39
  id: 'Meta-Llama-3.2-3B-Instruct',
36
40
  pricing: {
37
- input: 0.08,
38
- output: 0.16,
41
+ units: [
42
+ { name: 'textInput', rate: 0.08, strategy: 'fixed', unit: 'millionTokens' },
43
+ { name: 'textOutput', rate: 0.16, strategy: 'fixed', unit: 'millionTokens' },
44
+ ],
39
45
  },
40
46
  type: 'chat',
41
47
  },
@@ -49,8 +55,10 @@ const sambanovaChatModels: AIChatModelCard[] = [
49
55
  enabled: true,
50
56
  id: 'Llama-3.2-11B-Vision-Instruct',
51
57
  pricing: {
52
- input: 0.15,
53
- output: 0.3,
58
+ units: [
59
+ { name: 'textInput', rate: 0.15, strategy: 'fixed', unit: 'millionTokens' },
60
+ { name: 'textOutput', rate: 0.3, strategy: 'fixed', unit: 'millionTokens' },
61
+ ],
54
62
  },
55
63
  type: 'chat',
56
64
  },
@@ -64,8 +72,10 @@ const sambanovaChatModels: AIChatModelCard[] = [
64
72
  enabled: true,
65
73
  id: 'Llama-3.2-90B-Vision-Instruct ',
66
74
  pricing: {
67
- input: 0.8,
68
- output: 1.6,
75
+ units: [
76
+ { name: 'textInput', rate: 0.8, strategy: 'fixed', unit: 'millionTokens' },
77
+ { name: 'textOutput', rate: 1.6, strategy: 'fixed', unit: 'millionTokens' },
78
+ ],
69
79
  },
70
80
  type: 'chat',
71
81
  },
@@ -79,8 +89,10 @@ const sambanovaChatModels: AIChatModelCard[] = [
79
89
  displayName: 'Meta Llama 3.1 8B Instruct',
80
90
  id: 'Meta-Llama-3.1-8B-Instruct',
81
91
  pricing: {
82
- input: 0.1,
83
- output: 0.2,
92
+ units: [
93
+ { name: 'textInput', rate: 0.1, strategy: 'fixed', unit: 'millionTokens' },
94
+ { name: 'textOutput', rate: 0.2, strategy: 'fixed', unit: 'millionTokens' },
95
+ ],
84
96
  },
85
97
  type: 'chat',
86
98
  },
@@ -94,8 +106,10 @@ const sambanovaChatModels: AIChatModelCard[] = [
94
106
  displayName: 'Meta Llama 3.1 70B Instruct',
95
107
  id: 'Meta-Llama-3.1-70B-Instruct',
96
108
  pricing: {
97
- input: 0.6,
98
- output: 1.2,
109
+ units: [
110
+ { name: 'textInput', rate: 0.6, strategy: 'fixed', unit: 'millionTokens' },
111
+ { name: 'textOutput', rate: 1.2, strategy: 'fixed', unit: 'millionTokens' },
112
+ ],
99
113
  },
100
114
  type: 'chat',
101
115
  },
@@ -109,8 +123,10 @@ const sambanovaChatModels: AIChatModelCard[] = [
109
123
  displayName: 'Meta Llama 3.1 405B Instruct',
110
124
  id: 'Meta-Llama-3.1-405B-Instruct',
111
125
  pricing: {
112
- input: 5,
113
- output: 10,
126
+ units: [
127
+ { name: 'textInput', rate: 5, strategy: 'fixed', unit: 'millionTokens' },
128
+ { name: 'textOutput', rate: 10, strategy: 'fixed', unit: 'millionTokens' },
129
+ ],
114
130
  },
115
131
  type: 'chat',
116
132
  },
@@ -119,8 +135,10 @@ const sambanovaChatModels: AIChatModelCard[] = [
119
135
  displayName: 'Llama 3.1 Tulu 3 405B',
120
136
  id: 'Llama-3.1-Tulu-3-405B',
121
137
  pricing: {
122
- input: 0.7,
123
- output: 1.4,
138
+ units: [
139
+ { name: 'textInput', rate: 0.7, strategy: 'fixed', unit: 'millionTokens' },
140
+ { name: 'textOutput', rate: 1.4, strategy: 'fixed', unit: 'millionTokens' },
141
+ ],
124
142
  },
125
143
  type: 'chat',
126
144
  },
@@ -133,8 +151,10 @@ const sambanovaChatModels: AIChatModelCard[] = [
133
151
  displayName: 'DeepSeek R1',
134
152
  id: 'DeepSeek-R1',
135
153
  pricing: {
136
- input: 5,
137
- output: 7,
154
+ units: [
155
+ { name: 'textInput', rate: 5, strategy: 'fixed', unit: 'millionTokens' },
156
+ { name: 'textOutput', rate: 7, strategy: 'fixed', unit: 'millionTokens' },
157
+ ],
138
158
  },
139
159
  type: 'chat',
140
160
  },
@@ -149,8 +169,10 @@ const sambanovaChatModels: AIChatModelCard[] = [
149
169
  enabled: true,
150
170
  id: 'DeepSeek-R1-Distill-Llama-70B',
151
171
  pricing: {
152
- input: 0.7,
153
- output: 1.4,
172
+ units: [
173
+ { name: 'textInput', rate: 0.7, strategy: 'fixed', unit: 'millionTokens' },
174
+ { name: 'textOutput', rate: 1.4, strategy: 'fixed', unit: 'millionTokens' },
175
+ ],
154
176
  },
155
177
  type: 'chat',
156
178
  },
@@ -164,8 +186,10 @@ const sambanovaChatModels: AIChatModelCard[] = [
164
186
  enabled: true,
165
187
  id: 'QwQ-32B-Preview',
166
188
  pricing: {
167
- input: 1.5,
168
- output: 3,
189
+ units: [
190
+ { name: 'textInput', rate: 1.5, strategy: 'fixed', unit: 'millionTokens' },
191
+ { name: 'textOutput', rate: 3, strategy: 'fixed', unit: 'millionTokens' },
192
+ ],
169
193
  },
170
194
  type: 'chat',
171
195
  },
@@ -176,8 +200,10 @@ const sambanovaChatModels: AIChatModelCard[] = [
176
200
  enabled: true,
177
201
  id: 'Qwen2.5-72B-Instruct',
178
202
  pricing: {
179
- input: 2,
180
- output: 4,
203
+ units: [
204
+ { name: 'textInput', rate: 2, strategy: 'fixed', unit: 'millionTokens' },
205
+ { name: 'textOutput', rate: 4, strategy: 'fixed', unit: 'millionTokens' },
206
+ ],
181
207
  },
182
208
  type: 'chat',
183
209
  },
@@ -188,8 +214,10 @@ const sambanovaChatModels: AIChatModelCard[] = [
188
214
  enabled: true,
189
215
  id: 'Qwen2.5-Coder-32B-Instruct',
190
216
  pricing: {
191
- input: 1.5,
192
- output: 3,
217
+ units: [
218
+ { name: 'textInput', rate: 1.5, strategy: 'fixed', unit: 'millionTokens' },
219
+ { name: 'textOutput', rate: 3, strategy: 'fixed', unit: 'millionTokens' },
220
+ ],
193
221
  },
194
222
  type: 'chat',
195
223
  },
@@ -10,14 +10,17 @@ const sensenovaChatModels: AIChatModelCard[] = [
10
10
  vision: true,
11
11
  },
12
12
  contextWindowTokens: 131_072,
13
- description: '通过对多模态、语言及推理数据的全面更新与训练策略的优化,新模型在多模态推理和泛化指令跟随能力上实现了显著提升,支持高达128k的上下文窗口,并在OCR与文旅IP识别等专项任务中表现卓越。',
13
+ description:
14
+ '通过对多模态、语言及推理数据的全面更新与训练策略的优化,新模型在多模态推理和泛化指令跟随能力上实现了显著提升,支持高达128k的上下文窗口,并在OCR与文旅IP识别等专项任务中表现卓越。',
14
15
  displayName: 'SenseNova V6.5 Pro',
15
16
  enabled: true,
16
17
  id: 'SenseNova-V6-5-Pro',
17
18
  pricing: {
18
19
  currency: 'CNY',
19
- input: 3,
20
- output: 9,
20
+ units: [
21
+ { name: 'textInput', rate: 3, strategy: 'fixed', unit: 'millionTokens' },
22
+ { name: 'textOutput', rate: 9, strategy: 'fixed', unit: 'millionTokens' },
23
+ ],
21
24
  },
22
25
  releasedAt: '2025-07-23',
23
26
  settings: {
@@ -31,14 +34,17 @@ const sensenovaChatModels: AIChatModelCard[] = [
31
34
  vision: true,
32
35
  },
33
36
  contextWindowTokens: 131_072,
34
- description: '通过对多模态、语言及推理数据的全面更新与训练策略的优化,新模型在多模态推理和泛化指令跟随能力上实现了显著提升,支持高达128k的上下文窗口,并在OCR与文旅IP识别等专项任务中表现卓越。',
37
+ description:
38
+ '通过对多模态、语言及推理数据的全面更新与训练策略的优化,新模型在多模态推理和泛化指令跟随能力上实现了显著提升,支持高达128k的上下文窗口,并在OCR与文旅IP识别等专项任务中表现卓越。',
35
39
  displayName: 'SenseNova V6.5 Turbo',
36
40
  enabled: true,
37
41
  id: 'SenseNova-V6-5-Turbo',
38
42
  pricing: {
39
43
  currency: 'CNY',
40
- input: 1.5,
41
- output: 4.5,
44
+ units: [
45
+ { name: 'textInput', rate: 1.5, strategy: 'fixed', unit: 'millionTokens' },
46
+ { name: 'textOutput', rate: 4.5, strategy: 'fixed', unit: 'millionTokens' },
47
+ ],
42
48
  },
43
49
  releasedAt: '2025-07-23',
44
50
  settings: {
@@ -51,14 +57,17 @@ const sensenovaChatModels: AIChatModelCard[] = [
51
57
  reasoning: true,
52
58
  },
53
59
  contextWindowTokens: 32_768,
54
- description: 'Qwen3-235B-A22B,MoE(混合专家模型)模型,引入了“混合推理模式”,支持用户在“思考模式”和“非思考模式”之间无缝切换,支持119种语言和方言理解与推理,并具备强大的工具调用能力,在综合能力、代码与数学、多语言能力、知识与推理等多项基准测试中,都能与DeepSeek R1、OpenAI o1、o3-mini、Grok 3和谷歌Gemini 2.5 Pro等目前市场上的主流大模型竞争。',
60
+ description:
61
+ 'Qwen3-235B-A22B,MoE(混合专家模型)模型,引入了“混合推理模式”,支持用户在“思考模式”和“非思考模式”之间无缝切换,支持119种语言和方言理解与推理,并具备强大的工具调用能力,在综合能力、代码与数学、多语言能力、知识与推理等多项基准测试中,都能与DeepSeek R1、OpenAI o1、o3-mini、Grok 3和谷歌Gemini 2.5 Pro等目前市场上的主流大模型竞争。',
55
62
  displayName: 'Qwen3 235B A22B',
56
63
  id: 'Qwen3-235B',
57
64
  organization: 'Qwen',
58
65
  pricing: {
59
66
  currency: 'CNY',
60
- input: 0,
61
- output: 0,
67
+ units: [
68
+ { name: 'textInput', rate: 0, strategy: 'fixed', unit: 'millionTokens' },
69
+ { name: 'textOutput', rate: 0, strategy: 'fixed', unit: 'millionTokens' },
70
+ ],
62
71
  },
63
72
  releasedAt: '2025-05-27',
64
73
  settings: {
@@ -71,14 +80,17 @@ const sensenovaChatModels: AIChatModelCard[] = [
71
80
  reasoning: true,
72
81
  },
73
82
  contextWindowTokens: 32_768,
74
- description: 'Qwen3-32B,稠密模型(Dense Model),引入了“混合推理模式”,支持用户在“思考模式”和“非思考模式”之间无缝切换,由于模型架构改进、训练数据增加以及更有效的训练方法,整体性能与Qwen2.5-72B表现相当。',
83
+ description:
84
+ 'Qwen3-32B,稠密模型(Dense Model),引入了“混合推理模式”,支持用户在“思考模式”和“非思考模式”之间无缝切换,由于模型架构改进、训练数据增加以及更有效的训练方法,整体性能与Qwen2.5-72B表现相当。',
75
85
  displayName: 'Qwen3 32B',
76
86
  id: 'Qwen3-32B',
77
87
  organization: 'Qwen',
78
88
  pricing: {
79
89
  currency: 'CNY',
80
- input: 0,
81
- output: 0,
90
+ units: [
91
+ { name: 'textInput', rate: 0, strategy: 'fixed', unit: 'millionTokens' },
92
+ { name: 'textOutput', rate: 0, strategy: 'fixed', unit: 'millionTokens' },
93
+ ],
82
94
  },
83
95
  releasedAt: '2025-05-27',
84
96
  settings: {
@@ -97,8 +109,10 @@ const sensenovaChatModels: AIChatModelCard[] = [
97
109
  id: 'SenseNova-V6-Reasoner',
98
110
  pricing: {
99
111
  currency: 'CNY',
100
- input: 4,
101
- output: 16,
112
+ units: [
113
+ { name: 'textInput', rate: 4, strategy: 'fixed', unit: 'millionTokens' },
114
+ { name: 'textOutput', rate: 16, strategy: 'fixed', unit: 'millionTokens' },
115
+ ],
102
116
  },
103
117
  releasedAt: '2025-04-14',
104
118
  type: 'chat',
@@ -114,8 +128,10 @@ const sensenovaChatModels: AIChatModelCard[] = [
114
128
  id: 'SenseNova-V6-Turbo',
115
129
  pricing: {
116
130
  currency: 'CNY',
117
- input: 1.5,
118
- output: 4.5,
131
+ units: [
132
+ { name: 'textInput', rate: 1.5, strategy: 'fixed', unit: 'millionTokens' },
133
+ { name: 'textOutput', rate: 4.5, strategy: 'fixed', unit: 'millionTokens' },
134
+ ],
119
135
  },
120
136
  releasedAt: '2025-04-14',
121
137
  type: 'chat',
@@ -131,8 +147,10 @@ const sensenovaChatModels: AIChatModelCard[] = [
131
147
  id: 'SenseNova-V6-Pro',
132
148
  pricing: {
133
149
  currency: 'CNY',
134
- input: 3,
135
- output: 9,
150
+ units: [
151
+ { name: 'textInput', rate: 3, strategy: 'fixed', unit: 'millionTokens' },
152
+ { name: 'textOutput', rate: 9, strategy: 'fixed', unit: 'millionTokens' },
153
+ ],
136
154
  },
137
155
  releasedAt: '2025-04-14',
138
156
  type: 'chat',
@@ -144,8 +162,10 @@ const sensenovaChatModels: AIChatModelCard[] = [
144
162
  id: 'SenseChat-5-beta',
145
163
  pricing: {
146
164
  currency: 'CNY',
147
- input: 8,
148
- output: 20,
165
+ units: [
166
+ { name: 'textInput', rate: 8, strategy: 'fixed', unit: 'millionTokens' },
167
+ { name: 'textOutput', rate: 20, strategy: 'fixed', unit: 'millionTokens' },
168
+ ],
149
169
  },
150
170
  type: 'chat',
151
171
  },
@@ -160,8 +180,10 @@ const sensenovaChatModels: AIChatModelCard[] = [
160
180
  id: 'SenseChat-5-1202',
161
181
  pricing: {
162
182
  currency: 'CNY',
163
- input: 8,
164
- output: 20,
183
+ units: [
184
+ { name: 'textInput', rate: 8, strategy: 'fixed', unit: 'millionTokens' },
185
+ { name: 'textOutput', rate: 20, strategy: 'fixed', unit: 'millionTokens' },
186
+ ],
165
187
  },
166
188
  releasedAt: '2024-12-30',
167
189
  type: 'chat',
@@ -176,8 +198,10 @@ const sensenovaChatModels: AIChatModelCard[] = [
176
198
  id: 'SenseChat-Turbo-1202',
177
199
  pricing: {
178
200
  currency: 'CNY',
179
- input: 0.3,
180
- output: 0.6,
201
+ units: [
202
+ { name: 'textInput', rate: 0.3, strategy: 'fixed', unit: 'millionTokens' },
203
+ { name: 'textOutput', rate: 0.6, strategy: 'fixed', unit: 'millionTokens' },
204
+ ],
181
205
  },
182
206
  releasedAt: '2024-12-30',
183
207
  type: 'chat',
@@ -194,8 +218,10 @@ const sensenovaChatModels: AIChatModelCard[] = [
194
218
  maxOutput: 131_072,
195
219
  pricing: {
196
220
  currency: 'CNY',
197
- input: 8,
198
- output: 20,
221
+ units: [
222
+ { name: 'textInput', rate: 8, strategy: 'fixed', unit: 'millionTokens' },
223
+ { name: 'textOutput', rate: 20, strategy: 'fixed', unit: 'millionTokens' },
224
+ ],
199
225
  },
200
226
  type: 'chat',
201
227
  },
@@ -211,8 +237,10 @@ const sensenovaChatModels: AIChatModelCard[] = [
211
237
  maxOutput: 16_384,
212
238
  pricing: {
213
239
  currency: 'CNY',
214
- input: 10, // 限时优惠
215
- output: 60,
240
+ units: [
241
+ { name: 'textInput', rate: 10, strategy: 'fixed', unit: 'millionTokens' },
242
+ { name: 'textOutput', rate: 60, strategy: 'fixed', unit: 'millionTokens' },
243
+ ],
216
244
  },
217
245
  releasedAt: '2024-09-12',
218
246
  type: 'chat',
@@ -228,8 +256,10 @@ const sensenovaChatModels: AIChatModelCard[] = [
228
256
  maxOutput: 32_768,
229
257
  pricing: {
230
258
  currency: 'CNY',
231
- input: 0.3,
232
- output: 0.6,
259
+ units: [
260
+ { name: 'textInput', rate: 0.3, strategy: 'fixed', unit: 'millionTokens' },
261
+ { name: 'textOutput', rate: 0.6, strategy: 'fixed', unit: 'millionTokens' },
262
+ ],
233
263
  },
234
264
  type: 'chat',
235
265
  },
@@ -241,8 +271,10 @@ const sensenovaChatModels: AIChatModelCard[] = [
241
271
  maxOutput: 131_072,
242
272
  pricing: {
243
273
  currency: 'CNY',
244
- input: 60,
245
- output: 60,
274
+ units: [
275
+ { name: 'textInput', rate: 60, strategy: 'fixed', unit: 'millionTokens' },
276
+ { name: 'textOutput', rate: 60, strategy: 'fixed', unit: 'millionTokens' },
277
+ ],
246
278
  },
247
279
  type: 'chat',
248
280
  },
@@ -254,8 +286,10 @@ const sensenovaChatModels: AIChatModelCard[] = [
254
286
  maxOutput: 32_768,
255
287
  pricing: {
256
288
  currency: 'CNY',
257
- input: 36,
258
- output: 36,
289
+ units: [
290
+ { name: 'textInput', rate: 36, strategy: 'fixed', unit: 'millionTokens' },
291
+ { name: 'textOutput', rate: 36, strategy: 'fixed', unit: 'millionTokens' },
292
+ ],
259
293
  },
260
294
  type: 'chat',
261
295
  },
@@ -267,8 +301,10 @@ const sensenovaChatModels: AIChatModelCard[] = [
267
301
  maxOutput: 4096,
268
302
  pricing: {
269
303
  currency: 'CNY',
270
- input: 12,
271
- output: 12,
304
+ units: [
305
+ { name: 'textInput', rate: 12, strategy: 'fixed', unit: 'millionTokens' },
306
+ { name: 'textOutput', rate: 12, strategy: 'fixed', unit: 'millionTokens' },
307
+ ],
272
308
  },
273
309
  type: 'chat',
274
310
  },
@@ -281,8 +317,10 @@ const sensenovaChatModels: AIChatModelCard[] = [
281
317
  maxOutput: 32_768,
282
318
  pricing: {
283
319
  currency: 'CNY',
284
- input: 27,
285
- output: 27,
320
+ units: [
321
+ { name: 'textInput', rate: 27, strategy: 'fixed', unit: 'millionTokens' },
322
+ { name: 'textOutput', rate: 27, strategy: 'fixed', unit: 'millionTokens' },
323
+ ],
286
324
  },
287
325
  type: 'chat',
288
326
  },
@@ -294,8 +332,10 @@ const sensenovaChatModels: AIChatModelCard[] = [
294
332
  maxOutput: 1024,
295
333
  pricing: {
296
334
  currency: 'CNY',
297
- input: 12,
298
- output: 12,
335
+ units: [
336
+ { name: 'textInput', rate: 12, strategy: 'fixed', unit: 'millionTokens' },
337
+ { name: 'textOutput', rate: 12, strategy: 'fixed', unit: 'millionTokens' },
338
+ ],
299
339
  },
300
340
  type: 'chat',
301
341
  },
@@ -307,8 +347,10 @@ const sensenovaChatModels: AIChatModelCard[] = [
307
347
  maxOutput: 4096,
308
348
  pricing: {
309
349
  currency: 'CNY',
310
- input: 15,
311
- output: 15,
350
+ units: [
351
+ { name: 'textInput', rate: 15, strategy: 'fixed', unit: 'millionTokens' },
352
+ { name: 'textOutput', rate: 15, strategy: 'fixed', unit: 'millionTokens' },
353
+ ],
312
354
  },
313
355
  type: 'chat',
314
356
  },
@@ -320,8 +362,10 @@ const sensenovaChatModels: AIChatModelCard[] = [
320
362
  id: 'DeepSeek-V3',
321
363
  pricing: {
322
364
  currency: 'CNY',
323
- input: 2,
324
- output: 8,
365
+ units: [
366
+ { name: 'textInput', rate: 2, strategy: 'fixed', unit: 'millionTokens' },
367
+ { name: 'textOutput', rate: 8, strategy: 'fixed', unit: 'millionTokens' },
368
+ ],
325
369
  },
326
370
  type: 'chat',
327
371
  },
@@ -336,8 +380,10 @@ const sensenovaChatModels: AIChatModelCard[] = [
336
380
  id: 'DeepSeek-R1',
337
381
  pricing: {
338
382
  currency: 'CNY',
339
- input: 4,
340
- output: 16,
383
+ units: [
384
+ { name: 'textInput', rate: 4, strategy: 'fixed', unit: 'millionTokens' },
385
+ { name: 'textOutput', rate: 16, strategy: 'fixed', unit: 'millionTokens' },
386
+ ],
341
387
  },
342
388
  type: 'chat',
343
389
  },
@@ -352,8 +398,10 @@ const sensenovaChatModels: AIChatModelCard[] = [
352
398
  id: 'DeepSeek-R1-Distill-Qwen-14B',
353
399
  pricing: {
354
400
  currency: 'CNY',
355
- input: 0,
356
- output: 0,
401
+ units: [
402
+ { name: 'textInput', rate: 0, strategy: 'fixed', unit: 'millionTokens' },
403
+ { name: 'textOutput', rate: 0, strategy: 'fixed', unit: 'millionTokens' },
404
+ ],
357
405
  },
358
406
  type: 'chat',
359
407
  },
@@ -368,8 +416,10 @@ const sensenovaChatModels: AIChatModelCard[] = [
368
416
  id: 'DeepSeek-R1-Distill-Qwen-32B',
369
417
  pricing: {
370
418
  currency: 'CNY',
371
- input: 0,
372
- output: 0,
419
+ units: [
420
+ { name: 'textInput', rate: 0, strategy: 'fixed', unit: 'millionTokens' },
421
+ { name: 'textOutput', rate: 0, strategy: 'fixed', unit: 'millionTokens' },
422
+ ],
373
423
  },
374
424
  type: 'chat',
375
425
  },