@lobehub/chat 1.85.10 → 1.86.1

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 (251) hide show
  1. package/.env.example +5 -0
  2. package/CHANGELOG.md +50 -0
  3. package/Dockerfile +2 -0
  4. package/Dockerfile.database +2 -0
  5. package/Dockerfile.pglite +2 -0
  6. package/README.md +3 -2
  7. package/README.zh-CN.md +3 -2
  8. package/changelog/v1.json +18 -0
  9. package/docs/self-hosting/environment-variables/model-provider.mdx +23 -0
  10. package/docs/self-hosting/environment-variables/model-provider.zh-CN.mdx +23 -1
  11. package/docs/usage/providers/qiniu.mdx +58 -0
  12. package/docs/usage/providers/qiniu.zh-CN.mdx +55 -0
  13. package/locales/ar/providers.json +3 -0
  14. package/locales/bg-BG/providers.json +3 -0
  15. package/locales/de-DE/providers.json +3 -0
  16. package/locales/en-US/providers.json +3 -0
  17. package/locales/es-ES/providers.json +3 -0
  18. package/locales/fa-IR/providers.json +3 -0
  19. package/locales/fr-FR/providers.json +3 -0
  20. package/locales/it-IT/providers.json +3 -0
  21. package/locales/ja-JP/providers.json +3 -0
  22. package/locales/ko-KR/providers.json +3 -0
  23. package/locales/nl-NL/providers.json +3 -0
  24. package/locales/pl-PL/providers.json +3 -0
  25. package/locales/pt-BR/providers.json +3 -0
  26. package/locales/ru-RU/providers.json +3 -0
  27. package/locales/tr-TR/providers.json +3 -0
  28. package/locales/vi-VN/providers.json +3 -0
  29. package/locales/zh-CN/providers.json +3 -0
  30. package/locales/zh-TW/providers.json +3 -0
  31. package/package.json +1 -1
  32. package/src/app/(backend)/middleware/auth/index.test.ts +1 -1
  33. package/src/app/(backend)/middleware/auth/index.ts +1 -1
  34. package/src/app/(backend)/middleware/auth/utils.ts +1 -1
  35. package/src/app/(backend)/webapi/chat/[provider]/route.test.ts +1 -1
  36. package/src/app/(backend)/webapi/chat/[provider]/route.ts +1 -1
  37. package/src/app/(backend)/webapi/chat/vertexai/route.ts +2 -2
  38. package/src/app/(backend)/webapi/models/[provider]/pull/route.ts +1 -1
  39. package/src/app/(backend)/webapi/models/[provider]/route.ts +1 -1
  40. package/src/app/(backend)/webapi/plugin/gateway/route.ts +1 -1
  41. package/src/app/(backend)/webapi/text-to-image/[provider]/route.ts +2 -2
  42. package/src/app/[variants]/(main)/settings/llm/ProviderList/Azure/index.tsx +1 -1
  43. package/src/app/[variants]/(main)/settings/llm/ProviderList/providers.tsx +2 -0
  44. package/src/app/[variants]/(main)/settings/llm/components/ProviderModelList/Option.tsx +4 -1
  45. package/src/app/[variants]/(main)/settings/provider/(detail)/azure/page.tsx +1 -1
  46. package/src/app/[variants]/(main)/settings/provider/(detail)/azureai/page.tsx +1 -1
  47. package/src/config/aiModels/index.ts +3 -0
  48. package/src/config/aiModels/qiniu.ts +34 -0
  49. package/src/config/llm.ts +6 -0
  50. package/src/config/modelProviders/index.ts +4 -0
  51. package/src/config/modelProviders/qiniu.ts +42 -0
  52. package/src/const/settings/llm.ts +1 -1
  53. package/src/database/models/__tests__/aiProvider.test.ts +1 -1
  54. package/src/database/models/aiProvider.ts +1 -1
  55. package/src/features/Conversation/Error/APIKeyForm/Bedrock.tsx +1 -1
  56. package/src/features/Conversation/Error/APIKeyForm/index.tsx +1 -1
  57. package/src/features/Conversation/Error/index.tsx +1 -1
  58. package/src/libs/{agent-runtime → model-runtime}/AgentRuntime.test.ts +2 -2
  59. package/src/libs/{agent-runtime → model-runtime}/ai21/index.test.ts +2 -2
  60. package/src/libs/{agent-runtime → model-runtime}/ai360/index.test.ts +2 -2
  61. package/src/libs/{agent-runtime → model-runtime}/anthropic/index.test.ts +1 -1
  62. package/src/libs/{agent-runtime → model-runtime}/baichuan/index.test.ts +1 -1
  63. package/src/libs/{agent-runtime → model-runtime}/bedrock/index.test.ts +1 -1
  64. package/src/libs/{agent-runtime → model-runtime}/cloudflare/index.test.ts +1 -1
  65. package/src/libs/{agent-runtime → model-runtime}/deepseek/index.test.ts +2 -2
  66. package/src/libs/{agent-runtime → model-runtime}/fireworksai/index.test.ts +2 -2
  67. package/src/libs/{agent-runtime → model-runtime}/giteeai/index.test.ts +2 -2
  68. package/src/libs/{agent-runtime → model-runtime}/github/index.test.ts +2 -2
  69. package/src/libs/{agent-runtime → model-runtime}/google/index.test.ts +1 -1
  70. package/src/libs/{agent-runtime → model-runtime}/groq/index.test.ts +2 -2
  71. package/src/libs/{agent-runtime → model-runtime}/hunyuan/index.test.ts +2 -2
  72. package/src/libs/{agent-runtime → model-runtime}/internlm/index.test.ts +2 -2
  73. package/src/libs/{agent-runtime → model-runtime}/lmstudio/index.test.ts +2 -2
  74. package/src/libs/{agent-runtime → model-runtime}/mistral/index.test.ts +2 -2
  75. package/src/libs/{agent-runtime → model-runtime}/moonshot/index.test.ts +1 -1
  76. package/src/libs/{agent-runtime → model-runtime}/novita/index.test.ts +3 -3
  77. package/src/libs/{agent-runtime → model-runtime}/ollama/index.ts +1 -1
  78. package/src/libs/{agent-runtime → model-runtime}/openai/index.test.ts +1 -1
  79. package/src/libs/{agent-runtime → model-runtime}/openrouter/index.test.ts +2 -2
  80. package/src/libs/{agent-runtime → model-runtime}/perplexity/index.test.ts +2 -2
  81. package/src/libs/{agent-runtime → model-runtime}/ppio/index.test.ts +4 -4
  82. package/src/libs/{agent-runtime → model-runtime}/providerTestUtils.ts +1 -1
  83. package/src/libs/model-runtime/qiniu/index.test.ts +16 -0
  84. package/src/libs/model-runtime/qiniu/index.ts +47 -0
  85. package/src/libs/{agent-runtime → model-runtime}/qwen/index.test.ts +2 -2
  86. package/src/libs/{agent-runtime → model-runtime}/runtimeMap.ts +2 -0
  87. package/src/libs/{agent-runtime → model-runtime}/sensenova/index.test.ts +2 -2
  88. package/src/libs/{agent-runtime → model-runtime}/siliconcloud/index.ts +1 -6
  89. package/src/libs/{agent-runtime → model-runtime}/spark/index.test.ts +2 -2
  90. package/src/libs/{agent-runtime → model-runtime}/stepfun/index.test.ts +2 -2
  91. package/src/libs/{agent-runtime → model-runtime}/taichu/index.test.ts +2 -2
  92. package/src/libs/{agent-runtime → model-runtime}/tencentcloud/index.test.ts +1 -1
  93. package/src/libs/{agent-runtime → model-runtime}/togetherai/index.test.ts +1 -1
  94. package/src/libs/{agent-runtime → model-runtime}/types/type.ts +1 -0
  95. package/src/libs/{agent-runtime → model-runtime}/upstage/index.test.ts +1 -1
  96. package/src/libs/{agent-runtime → model-runtime}/utils/openaiCompatibleFactory/index.test.ts +2 -2
  97. package/src/libs/{agent-runtime → model-runtime}/utils/openaiHelpers.ts +1 -1
  98. package/src/libs/{agent-runtime → model-runtime}/utils/streams/ollama.ts +1 -1
  99. package/src/libs/{agent-runtime → model-runtime}/utils/streams/openai.test.ts +1 -1
  100. package/src/libs/{agent-runtime → model-runtime}/utils/streams/qwen.test.ts +1 -1
  101. package/src/libs/{agent-runtime → model-runtime}/wenxin/index.test.ts +2 -2
  102. package/src/libs/{agent-runtime → model-runtime}/xai/index.test.ts +2 -2
  103. package/src/libs/{agent-runtime → model-runtime}/zeroone/index.test.ts +1 -1
  104. package/src/libs/{agent-runtime → model-runtime}/zhipu/index.test.ts +2 -2
  105. package/src/libs/trpc/client/lambda.ts +1 -1
  106. package/src/server/globalConfig/_deprecated.test.ts +1 -1
  107. package/src/server/globalConfig/_deprecated.ts +1 -1
  108. package/src/server/globalConfig/genServerAiProviderConfig.ts +1 -1
  109. package/src/server/modules/AgentRuntime/index.test.ts +5 -4
  110. package/src/server/modules/AgentRuntime/index.ts +1 -1
  111. package/src/server/modules/AgentRuntime/trace.ts +1 -1
  112. package/src/server/routers/async/ragEval.ts +1 -1
  113. package/src/services/__tests__/_auth.test.ts +1 -1
  114. package/src/services/__tests__/chat.test.ts +3 -3
  115. package/src/services/_auth.ts +1 -1
  116. package/src/services/chat.ts +1 -1
  117. package/src/services/textToImage.ts +1 -1
  118. package/src/services/upload.ts +1 -1
  119. package/src/store/user/slices/modelList/action.ts +1 -1
  120. package/src/store/user/slices/modelList/selectors/modelProvider.ts +5 -2
  121. package/src/types/fetch.ts +1 -1
  122. package/src/types/message/chat.ts +1 -1
  123. package/src/types/user/settings/keyVaults.ts +1 -0
  124. package/src/types/user/settings/modelProvider.ts +1 -1
  125. package/src/utils/errorResponse.test.ts +1 -1
  126. package/src/utils/errorResponse.ts +1 -1
  127. package/src/utils/fetch/fetchSSE.ts +1 -1
  128. package/src/utils/genUserLLMConfig.test.ts +1 -1
  129. package/src/utils/genUserLLMConfig.ts +1 -1
  130. /package/src/libs/{agent-runtime → model-runtime}/AgentRuntime.ts +0 -0
  131. /package/src/libs/{agent-runtime → model-runtime}/BaseAI.ts +0 -0
  132. /package/src/libs/{agent-runtime → model-runtime}/UniformRuntime/index.ts +0 -0
  133. /package/src/libs/{agent-runtime → model-runtime}/ai21/index.ts +0 -0
  134. /package/src/libs/{agent-runtime → model-runtime}/ai360/index.ts +0 -0
  135. /package/src/libs/{agent-runtime → model-runtime}/anthropic/handleAnthropicError.ts +0 -0
  136. /package/src/libs/{agent-runtime → model-runtime}/anthropic/index.ts +0 -0
  137. /package/src/libs/{agent-runtime → model-runtime}/azureOpenai/index.test.ts +0 -0
  138. /package/src/libs/{agent-runtime → model-runtime}/azureOpenai/index.ts +0 -0
  139. /package/src/libs/{agent-runtime → model-runtime}/azureai/index.ts +0 -0
  140. /package/src/libs/{agent-runtime → model-runtime}/baichuan/index.ts +0 -0
  141. /package/src/libs/{agent-runtime → model-runtime}/bedrock/index.ts +0 -0
  142. /package/src/libs/{agent-runtime → model-runtime}/cloudflare/index.ts +0 -0
  143. /package/src/libs/{agent-runtime → model-runtime}/cohere/index.ts +0 -0
  144. /package/src/libs/{agent-runtime → model-runtime}/deepseek/index.ts +0 -0
  145. /package/src/libs/{agent-runtime → model-runtime}/error.ts +0 -0
  146. /package/src/libs/{agent-runtime → model-runtime}/fireworksai/index.ts +0 -0
  147. /package/src/libs/{agent-runtime → model-runtime}/giteeai/index.ts +0 -0
  148. /package/src/libs/{agent-runtime → model-runtime}/github/index.ts +0 -0
  149. /package/src/libs/{agent-runtime → model-runtime}/google/index.ts +0 -0
  150. /package/src/libs/{agent-runtime → model-runtime}/groq/index.ts +0 -0
  151. /package/src/libs/{agent-runtime → model-runtime}/helpers/index.ts +0 -0
  152. /package/src/libs/{agent-runtime → model-runtime}/helpers/parseToolCalls.test.ts +0 -0
  153. /package/src/libs/{agent-runtime → model-runtime}/helpers/parseToolCalls.ts +0 -0
  154. /package/src/libs/{agent-runtime → model-runtime}/higress/index.ts +0 -0
  155. /package/src/libs/{agent-runtime → model-runtime}/huggingface/index.ts +0 -0
  156. /package/src/libs/{agent-runtime → model-runtime}/hunyuan/index.ts +0 -0
  157. /package/src/libs/{agent-runtime → model-runtime}/index.ts +0 -0
  158. /package/src/libs/{agent-runtime → model-runtime}/infiniai/index.ts +0 -0
  159. /package/src/libs/{agent-runtime → model-runtime}/internlm/index.ts +0 -0
  160. /package/src/libs/{agent-runtime → model-runtime}/jina/index.ts +0 -0
  161. /package/src/libs/{agent-runtime → model-runtime}/lmstudio/index.ts +0 -0
  162. /package/src/libs/{agent-runtime → model-runtime}/minimax/index.ts +0 -0
  163. /package/src/libs/{agent-runtime → model-runtime}/mistral/index.ts +0 -0
  164. /package/src/libs/{agent-runtime → model-runtime}/moonshot/index.ts +0 -0
  165. /package/src/libs/{agent-runtime → model-runtime}/novita/__snapshots__/index.test.ts.snap +0 -0
  166. /package/src/libs/{agent-runtime → model-runtime}/novita/fixtures/models.json +0 -0
  167. /package/src/libs/{agent-runtime → model-runtime}/novita/index.ts +0 -0
  168. /package/src/libs/{agent-runtime → model-runtime}/novita/type.ts +0 -0
  169. /package/src/libs/{agent-runtime → model-runtime}/nvidia/index.ts +0 -0
  170. /package/src/libs/{agent-runtime → model-runtime}/ollama/index.test.ts +0 -0
  171. /package/src/libs/{agent-runtime → model-runtime}/ollama/type.ts +0 -0
  172. /package/src/libs/{agent-runtime → model-runtime}/openai/__snapshots__/index.test.ts.snap +0 -0
  173. /package/src/libs/{agent-runtime → model-runtime}/openai/fixtures/openai-models.json +0 -0
  174. /package/src/libs/{agent-runtime → model-runtime}/openai/index.ts +0 -0
  175. /package/src/libs/{agent-runtime → model-runtime}/openrouter/__snapshots__/index.test.ts.snap +0 -0
  176. /package/src/libs/{agent-runtime → model-runtime}/openrouter/fixtures/frontendModels.json +0 -0
  177. /package/src/libs/{agent-runtime → model-runtime}/openrouter/fixtures/models.json +0 -0
  178. /package/src/libs/{agent-runtime → model-runtime}/openrouter/index.ts +0 -0
  179. /package/src/libs/{agent-runtime → model-runtime}/openrouter/type.ts +0 -0
  180. /package/src/libs/{agent-runtime → model-runtime}/perplexity/index.ts +0 -0
  181. /package/src/libs/{agent-runtime → model-runtime}/ppio/__snapshots__/index.test.ts.snap +0 -0
  182. /package/src/libs/{agent-runtime → model-runtime}/ppio/fixtures/models.json +0 -0
  183. /package/src/libs/{agent-runtime → model-runtime}/ppio/index.ts +0 -0
  184. /package/src/libs/{agent-runtime → model-runtime}/ppio/type.ts +0 -0
  185. /package/src/libs/{agent-runtime → model-runtime}/providerTestUtils.test.ts +0 -0
  186. /package/src/libs/{agent-runtime → model-runtime}/qwen/index.ts +0 -0
  187. /package/src/libs/{agent-runtime → model-runtime}/sambanova/index.ts +0 -0
  188. /package/src/libs/{agent-runtime → model-runtime}/search1api/index.ts +0 -0
  189. /package/src/libs/{agent-runtime → model-runtime}/sensenova/index.ts +0 -0
  190. /package/src/libs/{agent-runtime → model-runtime}/spark/index.ts +0 -0
  191. /package/src/libs/{agent-runtime → model-runtime}/stepfun/index.ts +0 -0
  192. /package/src/libs/{agent-runtime → model-runtime}/taichu/index.ts +0 -0
  193. /package/src/libs/{agent-runtime → model-runtime}/tencentcloud/index.ts +0 -0
  194. /package/src/libs/{agent-runtime → model-runtime}/togetherai/fixtures/models.json +0 -0
  195. /package/src/libs/{agent-runtime → model-runtime}/togetherai/index.ts +0 -0
  196. /package/src/libs/{agent-runtime → model-runtime}/togetherai/type.ts +0 -0
  197. /package/src/libs/{agent-runtime → model-runtime}/types/chat.ts +0 -0
  198. /package/src/libs/{agent-runtime → model-runtime}/types/embeddings.ts +0 -0
  199. /package/src/libs/{agent-runtime → model-runtime}/types/index.ts +0 -0
  200. /package/src/libs/{agent-runtime → model-runtime}/types/model.ts +0 -0
  201. /package/src/libs/{agent-runtime → model-runtime}/types/textToImage.ts +0 -0
  202. /package/src/libs/{agent-runtime → model-runtime}/types/tts.ts +0 -0
  203. /package/src/libs/{agent-runtime → model-runtime}/upstage/index.ts +0 -0
  204. /package/src/libs/{agent-runtime → model-runtime}/utils/anthropicHelpers.test.ts +0 -0
  205. /package/src/libs/{agent-runtime → model-runtime}/utils/anthropicHelpers.ts +0 -0
  206. /package/src/libs/{agent-runtime → model-runtime}/utils/cloudflareHelpers.test.ts +0 -0
  207. /package/src/libs/{agent-runtime → model-runtime}/utils/cloudflareHelpers.ts +0 -0
  208. /package/src/libs/{agent-runtime → model-runtime}/utils/createError.ts +0 -0
  209. /package/src/libs/{agent-runtime → model-runtime}/utils/debugStream.test.ts +0 -0
  210. /package/src/libs/{agent-runtime → model-runtime}/utils/debugStream.ts +0 -0
  211. /package/src/libs/{agent-runtime → model-runtime}/utils/desensitizeUrl.test.ts +0 -0
  212. /package/src/libs/{agent-runtime → model-runtime}/utils/desensitizeUrl.ts +0 -0
  213. /package/src/libs/{agent-runtime → model-runtime}/utils/handleOpenAIError.ts +0 -0
  214. /package/src/libs/{agent-runtime → model-runtime}/utils/openaiCompatibleFactory/index.ts +0 -0
  215. /package/src/libs/{agent-runtime → model-runtime}/utils/openaiHelpers.test.ts +0 -0
  216. /package/src/libs/{agent-runtime → model-runtime}/utils/response.ts +0 -0
  217. /package/src/libs/{agent-runtime → model-runtime}/utils/sensenovaHelpers.test.ts +0 -0
  218. /package/src/libs/{agent-runtime → model-runtime}/utils/sensenovaHelpers.ts +0 -0
  219. /package/src/libs/{agent-runtime → model-runtime}/utils/streams/__snapshots__/protocol.test.ts.snap +0 -0
  220. /package/src/libs/{agent-runtime → model-runtime}/utils/streams/anthropic.test.ts +0 -0
  221. /package/src/libs/{agent-runtime → model-runtime}/utils/streams/anthropic.ts +0 -0
  222. /package/src/libs/{agent-runtime → model-runtime}/utils/streams/bedrock/claude.ts +0 -0
  223. /package/src/libs/{agent-runtime → model-runtime}/utils/streams/bedrock/common.ts +0 -0
  224. /package/src/libs/{agent-runtime → model-runtime}/utils/streams/bedrock/index.ts +0 -0
  225. /package/src/libs/{agent-runtime → model-runtime}/utils/streams/bedrock/llama.test.ts +0 -0
  226. /package/src/libs/{agent-runtime → model-runtime}/utils/streams/bedrock/llama.ts +0 -0
  227. /package/src/libs/{agent-runtime → model-runtime}/utils/streams/google-ai.test.ts +0 -0
  228. /package/src/libs/{agent-runtime → model-runtime}/utils/streams/google-ai.ts +0 -0
  229. /package/src/libs/{agent-runtime → model-runtime}/utils/streams/index.ts +0 -0
  230. /package/src/libs/{agent-runtime → model-runtime}/utils/streams/model.ts +0 -0
  231. /package/src/libs/{agent-runtime → model-runtime}/utils/streams/ollama.test.ts +0 -0
  232. /package/src/libs/{agent-runtime → model-runtime}/utils/streams/openai.ts +0 -0
  233. /package/src/libs/{agent-runtime → model-runtime}/utils/streams/protocol.test.ts +0 -0
  234. /package/src/libs/{agent-runtime → model-runtime}/utils/streams/protocol.ts +0 -0
  235. /package/src/libs/{agent-runtime → model-runtime}/utils/streams/qwen.ts +0 -0
  236. /package/src/libs/{agent-runtime → model-runtime}/utils/streams/spark.test.ts +0 -0
  237. /package/src/libs/{agent-runtime → model-runtime}/utils/streams/spark.ts +0 -0
  238. /package/src/libs/{agent-runtime → model-runtime}/utils/streams/vertex-ai.test.ts +0 -0
  239. /package/src/libs/{agent-runtime → model-runtime}/utils/streams/vertex-ai.ts +0 -0
  240. /package/src/libs/{agent-runtime → model-runtime}/utils/uriParser.test.ts +0 -0
  241. /package/src/libs/{agent-runtime → model-runtime}/utils/uriParser.ts +0 -0
  242. /package/src/libs/{agent-runtime → model-runtime}/utils/usageConverter.test.ts +0 -0
  243. /package/src/libs/{agent-runtime → model-runtime}/utils/usageConverter.ts +0 -0
  244. /package/src/libs/{agent-runtime → model-runtime}/vertexai/index.ts +0 -0
  245. /package/src/libs/{agent-runtime → model-runtime}/vllm/index.ts +0 -0
  246. /package/src/libs/{agent-runtime → model-runtime}/volcengine/index.ts +0 -0
  247. /package/src/libs/{agent-runtime → model-runtime}/wenxin/index.ts +0 -0
  248. /package/src/libs/{agent-runtime → model-runtime}/xai/index.ts +0 -0
  249. /package/src/libs/{agent-runtime → model-runtime}/xinference/index.ts +0 -0
  250. /package/src/libs/{agent-runtime → model-runtime}/zeroone/index.ts +0 -0
  251. /package/src/libs/{agent-runtime → model-runtime}/zhipu/index.ts +0 -0
@@ -0,0 +1,47 @@
1
+ import type { ChatModelCard } from '@/types/llm';
2
+
3
+ import { ModelProvider } from '../types';
4
+ import { LobeOpenAICompatibleFactory } from '../utils/openaiCompatibleFactory';
5
+
6
+ export interface QiniuModelCard {
7
+ id: string;
8
+ }
9
+
10
+ export const LobeQiniuAI = LobeOpenAICompatibleFactory({
11
+ apiKey: 'placeholder-to-avoid-error',
12
+ baseURL: 'https://api.qnaigc.com/v1',
13
+ debug: {
14
+ chatCompletion: () => process.env.DEBUG_QINIU_CHAT_COMPLETION === '1',
15
+ },
16
+ models: async ({ client }) => {
17
+ const { LOBE_DEFAULT_MODEL_LIST } = await import('@/config/aiModels');
18
+ const { DEFAULT_MODEL_PROVIDER_LIST } = await import('@/config/modelProviders');
19
+
20
+ const modelsPage = (await client.models.list()) as any;
21
+ const modelList: QiniuModelCard[] = modelsPage.data;
22
+
23
+ return modelList
24
+ .map((model) => {
25
+ const knownModelProvlder = DEFAULT_MODEL_PROVIDER_LIST.find(
26
+ (mp) => mp.id.toLowerCase() === ModelProvider.Qiniu.toLowerCase(),
27
+ );
28
+
29
+ const knownModel = (knownModelProvlder?.chatModels ?? LOBE_DEFAULT_MODEL_LIST).find(
30
+ (m) => model.id.toLowerCase() === m.id.toLowerCase(),
31
+ );
32
+
33
+ const abilities = knownModel && 'abilities' in knownModel ? knownModel.abilities : {};
34
+ return {
35
+ contextWindowTokens: knownModel?.contextWindowTokens ?? undefined,
36
+ displayName: knownModel?.displayName ?? undefined,
37
+ enabled: knownModel?.enabled || false,
38
+ functionCall: abilities?.functionCall || false,
39
+ id: model.id,
40
+ reasoning: abilities?.reasoning || false,
41
+ vision: abilities?.vision || false,
42
+ };
43
+ })
44
+ .filter(Boolean) as ChatModelCard[];
45
+ },
46
+ provider: ModelProvider.Qiniu,
47
+ });
@@ -1,6 +1,6 @@
1
1
  // @vitest-environment node
2
- import { ModelProvider } from '@/libs/agent-runtime';
3
- import { testProvider } from '@/libs/agent-runtime/providerTestUtils';
2
+ import { ModelProvider } from '@/libs/model-runtime';
3
+ import { testProvider } from '@/libs/model-runtime/providerTestUtils';
4
4
 
5
5
  import { LobeQwenAI } from './index';
6
6
 
@@ -30,6 +30,7 @@ import { LobeOpenAI } from './openai';
30
30
  import { LobeOpenRouterAI } from './openrouter';
31
31
  import { LobePerplexityAI } from './perplexity';
32
32
  import { LobePPIOAI } from './ppio';
33
+ import { LobeQiniuAI } from './qiniu';
33
34
  import { LobeQwenAI } from './qwen';
34
35
  import { LobeSambaNovaAI } from './sambanova';
35
36
  import { LobeSearch1API } from './search1api';
@@ -82,6 +83,7 @@ export const providerRuntimeMap = {
82
83
  openrouter: LobeOpenRouterAI,
83
84
  perplexity: LobePerplexityAI,
84
85
  ppio: LobePPIOAI,
86
+ qiniu: LobeQiniuAI,
85
87
  qwen: LobeQwenAI,
86
88
  sambanova: LobeSambaNovaAI,
87
89
  search1api: LobeSearch1API,
@@ -1,6 +1,6 @@
1
1
  // @vitest-environment node
2
- import { ModelProvider } from '@/libs/agent-runtime';
3
- import { testProvider } from '@/libs/agent-runtime/providerTestUtils';
2
+ import { ModelProvider } from '@/libs/model-runtime';
3
+ import { testProvider } from '@/libs/model-runtime/providerTestUtils';
4
4
 
5
5
  import { LobeSenseNovaAI } from './index';
6
6
 
@@ -89,12 +89,7 @@ export const LobeSiliconCloudAI = LobeOpenAICompatibleFactory({
89
89
  'deepseek-ai/deepseek-vl',
90
90
  ];
91
91
 
92
- const reasoningKeywords = [
93
- 'deepseek-ai/deepseek-r1',
94
- 'qwen/qvq',
95
- 'qwen/qwq',
96
- 'qwen/qwen3',
97
- ];
92
+ const reasoningKeywords = ['deepseek-ai/deepseek-r1', 'qwen/qvq', 'qwen/qwq', 'qwen/qwen3'];
98
93
 
99
94
  const modelsPage = (await client.models.list()) as any;
100
95
  const modelList: SiliconCloudModelCard[] = modelsPage.data;
@@ -1,6 +1,6 @@
1
1
  // @vitest-environment node
2
- import { ModelProvider } from '@/libs/agent-runtime';
3
- import { testProvider } from '@/libs/agent-runtime/providerTestUtils';
2
+ import { ModelProvider } from '@/libs/model-runtime';
3
+ import { testProvider } from '@/libs/model-runtime/providerTestUtils';
4
4
 
5
5
  import { LobeSparkAI } from './index';
6
6
 
@@ -1,6 +1,6 @@
1
1
  // @vitest-environment node
2
- import { ModelProvider } from '@/libs/agent-runtime';
3
- import { testProvider } from '@/libs/agent-runtime/providerTestUtils';
2
+ import { ModelProvider } from '@/libs/model-runtime';
3
+ import { testProvider } from '@/libs/model-runtime/providerTestUtils';
4
4
 
5
5
  import { LobeStepfunAI } from './index';
6
6
 
@@ -7,8 +7,8 @@ import {
7
7
  LobeMoonshotAI,
8
8
  LobeOpenAICompatibleRuntime,
9
9
  ModelProvider,
10
- } from '@/libs/agent-runtime';
11
- import { testProvider } from '@/libs/agent-runtime/providerTestUtils';
10
+ } from '@/libs/model-runtime';
11
+ import { testProvider } from '@/libs/model-runtime/providerTestUtils';
12
12
 
13
13
  import * as debugStreamModule from '../utils/debugStream';
14
14
  import { LobeTaichuAI } from './index';
@@ -1,5 +1,5 @@
1
1
  // @vitest-environment node
2
- import { ModelProvider } from '@/libs/agent-runtime';
2
+ import { ModelProvider } from '@/libs/model-runtime';
3
3
 
4
4
  import { testProvider } from '../providerTestUtils';
5
5
  import { LobeTencentCloudAI } from './index';
@@ -1,5 +1,5 @@
1
1
  // @vitest-environment node
2
- import { testProvider } from '@/libs/agent-runtime/providerTestUtils';
2
+ import { testProvider } from '@/libs/model-runtime/providerTestUtils';
3
3
 
4
4
  import { LobeTogetherAI } from './index';
5
5
 
@@ -54,6 +54,7 @@ export enum ModelProvider {
54
54
  OpenRouter = 'openrouter',
55
55
  PPIO = 'ppio',
56
56
  Perplexity = 'perplexity',
57
+ Qiniu = 'qiniu',
57
58
  Qwen = 'qwen',
58
59
  SambaNova = 'sambanova',
59
60
  Search1API = 'search1api',
@@ -1,5 +1,5 @@
1
1
  // @vitest-environment node
2
- import { testProvider } from '@/libs/agent-runtime/providerTestUtils';
2
+ import { testProvider } from '@/libs/model-runtime/providerTestUtils';
3
3
 
4
4
  import { LobeUpstageAI } from './index';
5
5
 
@@ -9,8 +9,8 @@ import {
9
9
  ChatStreamPayload,
10
10
  LobeOpenAICompatibleRuntime,
11
11
  ModelProvider,
12
- } from '@/libs/agent-runtime';
13
- import officalOpenAIModels from '@/libs/agent-runtime/openai/fixtures/openai-models.json';
12
+ } from '@/libs/model-runtime';
13
+ import officalOpenAIModels from '@/libs/model-runtime/openai/fixtures/openai-models.json';
14
14
  import { sleep } from '@/utils/sleep';
15
15
 
16
16
  import * as debugStreamModule from '../debugStream';
@@ -1,7 +1,7 @@
1
1
  import OpenAI from 'openai';
2
2
 
3
3
  import { disableStreamModels, systemToUserModels } from '@/const/models';
4
- import { ChatStreamPayload, OpenAIChatMessage } from '@/libs/agent-runtime';
4
+ import { ChatStreamPayload, OpenAIChatMessage } from '@/libs/model-runtime';
5
5
  import { imageUrlToBase64 } from '@/utils/imageToBase64';
6
6
 
7
7
  import { parseDataUri } from './uriParser';
@@ -1,6 +1,6 @@
1
1
  import { ChatResponse } from 'ollama/browser';
2
2
 
3
- import { ChatStreamCallbacks } from '@/libs/agent-runtime';
3
+ import { ChatStreamCallbacks } from '@/libs/model-runtime';
4
4
  import { nanoid } from '@/utils/uuid';
5
5
 
6
6
  import {
@@ -1,6 +1,6 @@
1
1
  import { describe, expect, it, vi } from 'vitest';
2
2
 
3
- import { AgentRuntimeErrorType } from '@/libs/agent-runtime';
3
+ import { AgentRuntimeErrorType } from '@/libs/model-runtime';
4
4
 
5
5
  import { OpenAIStream } from './openai';
6
6
  import { FIRST_CHUNK_ERROR_KEY } from './protocol';
@@ -365,7 +365,7 @@ describe('transformQwenStream', () => {
365
365
  prompt_tokens: 100,
366
366
  total_tokens: 150,
367
367
  completion_tokens_details: {}, // Ensure these exist even if empty
368
- prompt_tokens_details: {}, // Ensure these exist even if empty
368
+ prompt_tokens_details: {}, // Ensure these exist even if empty
369
369
  },
370
370
  };
371
371
 
@@ -1,8 +1,8 @@
1
1
  // @vitest-environment node
2
2
  import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
3
3
 
4
- import { LobeOpenAICompatibleRuntime, ModelProvider } from '@/libs/agent-runtime';
5
- import { testProvider } from '@/libs/agent-runtime/providerTestUtils';
4
+ import { LobeOpenAICompatibleRuntime, ModelProvider } from '@/libs/model-runtime';
5
+ import { testProvider } from '@/libs/model-runtime/providerTestUtils';
6
6
 
7
7
  import { LobeWenxinAI } from './index';
8
8
 
@@ -1,6 +1,6 @@
1
1
  // @vitest-environment node
2
- import { ModelProvider } from '@/libs/agent-runtime';
3
- import { testProvider } from '@/libs/agent-runtime/providerTestUtils';
2
+ import { ModelProvider } from '@/libs/model-runtime';
3
+ import { testProvider } from '@/libs/model-runtime/providerTestUtils';
4
4
 
5
5
  import { LobeXAI } from './index';
6
6
 
@@ -1,5 +1,5 @@
1
1
  // @vitest-environment node
2
- import { testProvider } from '@/libs/agent-runtime/providerTestUtils';
2
+ import { testProvider } from '@/libs/model-runtime/providerTestUtils';
3
3
 
4
4
  import { LobeZeroOneAI } from './index';
5
5
 
@@ -2,8 +2,8 @@
2
2
  import { OpenAI } from 'openai';
3
3
  import { Mock, afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
4
4
 
5
- import { ChatStreamCallbacks, LobeOpenAI, LobeOpenAICompatibleRuntime } from '@/libs/agent-runtime';
6
- import * as debugStreamModule from '@/libs/agent-runtime/utils/debugStream';
5
+ import { ChatStreamCallbacks, LobeOpenAI, LobeOpenAICompatibleRuntime } from '@/libs/model-runtime';
6
+ import * as debugStreamModule from '@/libs/model-runtime/utils/debugStream';
7
7
 
8
8
  import { LobeZhipuAI } from './index';
9
9
 
@@ -3,7 +3,7 @@ import { createTRPCReact } from '@trpc/react-query';
3
3
  import superjson from 'superjson';
4
4
 
5
5
  import { isDesktop } from '@/const/version';
6
- import { ModelProvider } from '@/libs/agent-runtime';
6
+ import { ModelProvider } from '@/libs/model-runtime';
7
7
  import type { LambdaRouter } from '@/server/routers/lambda';
8
8
 
9
9
  import { ErrorResponse } from './types';
@@ -3,7 +3,7 @@ import { describe, expect, it, vi } from 'vitest';
3
3
  import { genServerLLMConfig } from './_deprecated';
4
4
 
5
5
  // Mock ModelProvider enum
6
- vi.mock('@/libs/agent-runtime', () => ({
6
+ vi.mock('@/libs/model-runtime', () => ({
7
7
  ModelProvider: {
8
8
  Azure: 'azure',
9
9
  Bedrock: 'bedrock',
@@ -1,6 +1,6 @@
1
1
  import { getLLMConfig } from '@/config/llm';
2
2
  import * as ProviderCards from '@/config/modelProviders';
3
- import { ModelProvider } from '@/libs/agent-runtime';
3
+ import { ModelProvider } from '@/libs/model-runtime';
4
4
  import { ModelProviderCard } from '@/types/llm';
5
5
  import { extractEnabledModels, transformToChatModelCards } from '@/utils/_deprecated/parseModels';
6
6
 
@@ -1,6 +1,6 @@
1
1
  import * as AiModels from '@/config/aiModels';
2
2
  import { getLLMConfig } from '@/config/llm';
3
- import { ModelProvider } from '@/libs/agent-runtime';
3
+ import { ModelProvider } from '@/libs/model-runtime';
4
4
  import { AiFullModelCard } from '@/types/aiModel';
5
5
  import { ProviderConfig } from '@/types/user/settings';
6
6
  import { extractEnabledModels, transformToAiChatModelList } from '@/utils/parseModels';
@@ -22,9 +22,9 @@ import {
22
22
  LobeZeroOneAI,
23
23
  LobeZhipuAI,
24
24
  ModelProvider,
25
- } from '@/libs/agent-runtime';
26
- import { AgentRuntime } from '@/libs/agent-runtime';
27
- import { LobeStepfunAI } from '@/libs/agent-runtime/stepfun';
25
+ } from '@/libs/model-runtime';
26
+ import { AgentRuntime } from '@/libs/model-runtime';
27
+ import { LobeStepfunAI } from '@/libs/model-runtime/stepfun';
28
28
 
29
29
  import { initAgentRuntimeWithUserPayload } from './index';
30
30
 
@@ -52,6 +52,7 @@ vi.mock('@/config/llm', () => ({
52
52
  MISTRAL_API_KEY: 'test-mistral-key',
53
53
  OPENROUTER_API_KEY: 'test-openrouter-key',
54
54
  TOGETHERAI_API_KEY: 'test-togetherai-key',
55
+ QINIU_API_KEY: 'test-qiniu-key',
55
56
  QWEN_API_KEY: 'test-qwen-key',
56
57
  STEPFUN_API_KEY: 'test-stepfun-key',
57
58
  })),
@@ -59,7 +60,7 @@ vi.mock('@/config/llm', () => ({
59
60
 
60
61
  /**
61
62
  * Test cases for function initAgentRuntimeWithUserPayload
62
- * this method will use AgentRuntime from `@/libs/agent-runtime`
63
+ * this method will use AgentRuntime from `@/libs/model-runtime`
63
64
  * and method `getLlmOptionsFromPayload` to initialize runtime
64
65
  * with user payload. Test case below will test both the methods
65
66
  */
@@ -1,6 +1,6 @@
1
1
  import { getLLMConfig } from '@/config/llm';
2
2
  import { JWTPayload } from '@/const/auth';
3
- import { AgentRuntime, ModelProvider } from '@/libs/agent-runtime';
3
+ import { AgentRuntime, ModelProvider } from '@/libs/model-runtime';
4
4
 
5
5
  import apiKeyManager from './apiKeyManager';
6
6
 
@@ -7,7 +7,7 @@ import {
7
7
  TracePayload,
8
8
  TraceTagMap,
9
9
  } from '@/const/trace';
10
- import { ChatStreamCallbacks, ChatStreamPayload } from '@/libs/agent-runtime';
10
+ import { ChatStreamCallbacks, ChatStreamPayload } from '@/libs/model-runtime';
11
11
  import { TraceClient } from '@/libs/traces';
12
12
 
13
13
  export interface AgentChatOptions {
@@ -12,7 +12,7 @@ import {
12
12
  EvalEvaluationModel,
13
13
  EvaluationRecordModel,
14
14
  } from '@/database/server/models/ragEval';
15
- import { ModelProvider } from '@/libs/agent-runtime';
15
+ import { ModelProvider } from '@/libs/model-runtime';
16
16
  import { asyncAuthedProcedure, asyncRouter as router } from '@/libs/trpc/async';
17
17
  import { initAgentRuntimeWithUserPayload } from '@/server/modules/AgentRuntime';
18
18
  import { ChunkService } from '@/server/services/chunk';
@@ -1,7 +1,7 @@
1
1
  import { act } from '@testing-library/react';
2
2
  import { describe, expect, it, vi } from 'vitest';
3
3
 
4
- import { ModelProvider } from '@/libs/agent-runtime';
4
+ import { ModelProvider } from '@/libs/model-runtime';
5
5
  import { useUserStore } from '@/store/user';
6
6
  import {
7
7
  GlobalLLMProviderKey,
@@ -24,8 +24,8 @@ import {
24
24
  LobeZeroOneAI,
25
25
  LobeZhipuAI,
26
26
  ModelProvider,
27
- } from '@/libs/agent-runtime';
28
- import { AgentRuntime } from '@/libs/agent-runtime';
27
+ } from '@/libs/model-runtime';
28
+ import { AgentRuntime } from '@/libs/model-runtime';
29
29
  import { agentChatConfigSelectors } from '@/store/agent/selectors';
30
30
  import { aiModelSelectors } from '@/store/aiInfra';
31
31
  import { useToolStore } from '@/store/tool';
@@ -1381,7 +1381,7 @@ describe('AgentRuntimeOnClient', () => {
1381
1381
 
1382
1382
  it('ZhiPu AI provider: with apiKey', async () => {
1383
1383
  // Mock the generateApiToken function
1384
- vi.mock('@/libs/agent-runtime/zhipu/authToken', () => ({
1384
+ vi.mock('@/libs/model-runtime/zhipu/authToken', () => ({
1385
1385
  generateApiToken: vi
1386
1386
  .fn()
1387
1387
  .mockResolvedValue(
@@ -1,6 +1,6 @@
1
1
  import { JWTPayload, LOBE_CHAT_AUTH_HEADER } from '@/const/auth';
2
2
  import { isDeprecatedEdition } from '@/const/version';
3
- import { ModelProvider } from '@/libs/agent-runtime';
3
+ import { ModelProvider } from '@/libs/model-runtime';
4
4
  import { aiProviderSelectors, useAiInfraStore } from '@/store/aiInfra';
5
5
  import { useUserStore } from '@/store/user';
6
6
  import { keyVaultsConfigSelectors, userProfileSelectors } from '@/store/user/selectors';
@@ -14,7 +14,7 @@ import {
14
14
  AgentRuntimeError,
15
15
  ChatCompletionErrorPayload,
16
16
  ModelProvider,
17
- } from '@/libs/agent-runtime';
17
+ } from '@/libs/model-runtime';
18
18
  import { filesPrompts } from '@/prompts/files';
19
19
  import { BuiltinSystemRolePrompts } from '@/prompts/systemRole';
20
20
  import { getAgentStoreState } from '@/store/agent';
@@ -1,4 +1,4 @@
1
- import { ModelProvider } from '@/libs/agent-runtime';
1
+ import { ModelProvider } from '@/libs/model-runtime';
2
2
  import { createHeaderWithAuth } from '@/services/_auth';
3
3
  import { OpenAIImagePayload } from '@/types/openai/image';
4
4
 
@@ -3,7 +3,7 @@ import { sha256 } from 'js-sha256';
3
3
 
4
4
  import { fileEnv } from '@/config/file';
5
5
  import { isDesktop, isServerMode } from '@/const/version';
6
- import { parseDataUri } from '@/libs/agent-runtime/utils/uriParser';
6
+ import { parseDataUri } from '@/libs/model-runtime/utils/uriParser';
7
7
  import { edgeClient } from '@/libs/trpc/client';
8
8
  import { API_ENDPOINTS } from '@/services/_url';
9
9
  import { clientS3Storage } from '@/services/file/ClientS3';
@@ -3,7 +3,7 @@ import useSWR, { SWRResponse } from 'swr';
3
3
  import type { StateCreator } from 'zustand/vanilla';
4
4
 
5
5
  import { DEFAULT_MODEL_PROVIDER_LIST } from '@/config/modelProviders';
6
- import { ModelProvider } from '@/libs/agent-runtime';
6
+ import { ModelProvider } from '@/libs/model-runtime';
7
7
  import { UserStore } from '@/store/user';
8
8
  import type { ChatModelCard, ModelProviderCard } from '@/types/llm';
9
9
  import type {
@@ -108,10 +108,13 @@ const modelProviderListForModelSelect = (s: UserStore): EnabledProviderWithModel
108
108
  source: 'builtin',
109
109
  }));
110
110
 
111
- const getModelCardById = (id: string) => (s: UserStore) => {
111
+ const getModelCardById = (id: string, provider?: GlobalLLMProviderKey) => (s: UserStore) => {
112
112
  const list = modelProviderList(s);
113
113
 
114
- return list.flatMap((i) => i.chatModels).find((m) => m.id === id);
114
+ return list
115
+ .filter((i) => !provider || i.id === provider)
116
+ .flatMap((i) => i.chatModels)
117
+ .find((m) => m.id === id);
115
118
  };
116
119
 
117
120
  const isModelEnabledFunctionCall = (id: string) => (s: UserStore) =>
@@ -1,5 +1,5 @@
1
1
  /* eslint-disable sort-keys-fix/sort-keys-fix */
2
- import { ILobeAgentRuntimeErrorType } from '@/libs/agent-runtime';
2
+ import { ILobeAgentRuntimeErrorType } from '@/libs/model-runtime';
3
3
 
4
4
  export const ChatErrorType = {
5
5
  // ******* 业务错误语义 ******* //
@@ -1,6 +1,6 @@
1
1
  import { IPluginErrorType } from '@lobehub/chat-plugin-sdk';
2
2
 
3
- import { ILobeAgentRuntimeErrorType } from '@/libs/agent-runtime';
3
+ import { ILobeAgentRuntimeErrorType } from '@/libs/model-runtime';
4
4
  import { ErrorType } from '@/types/fetch';
5
5
  import { MetaData } from '@/types/meta';
6
6
  import { MessageSemanticSearchChunk } from '@/types/rag';
@@ -67,6 +67,7 @@ export interface UserKeyVaults extends SearchEngineKeyVaults {
67
67
  password?: string;
68
68
  perplexity?: OpenAICompatibleKeyVault;
69
69
  ppio?: OpenAICompatibleKeyVault;
70
+ qiniu?: OpenAICompatibleKeyVault;
70
71
  qwen?: OpenAICompatibleKeyVault;
71
72
  sambanova?: OpenAICompatibleKeyVault;
72
73
  search1api?: OpenAICompatibleKeyVault;
@@ -1,4 +1,4 @@
1
- import { ModelProviderKey } from '@/libs/agent-runtime';
1
+ import { ModelProviderKey } from '@/libs/model-runtime';
2
2
  import { AiFullModelCard } from '@/types/aiModel';
3
3
  import { ChatModelCard } from '@/types/llm';
4
4
 
@@ -1,6 +1,6 @@
1
1
  import { describe, expect, it, vi } from 'vitest';
2
2
 
3
- import { AgentRuntimeErrorType } from '@/libs/agent-runtime';
3
+ import { AgentRuntimeErrorType } from '@/libs/model-runtime';
4
4
  import { ChatErrorType } from '@/types/fetch';
5
5
 
6
6
  import { createErrorResponse } from './errorResponse';
@@ -1,4 +1,4 @@
1
- import { AgentRuntimeErrorType, ILobeAgentRuntimeErrorType } from '@/libs/agent-runtime';
1
+ import { AgentRuntimeErrorType, ILobeAgentRuntimeErrorType } from '@/libs/model-runtime';
2
2
  import { ChatErrorType, ErrorResponse, ErrorType } from '@/types/fetch';
3
3
 
4
4
  const getStatus = (errorType: ILobeAgentRuntimeErrorType | ErrorType) => {
@@ -2,7 +2,7 @@ import { isObject } from 'lodash-es';
2
2
 
3
3
  import { MESSAGE_CANCEL_FLAT } from '@/const/message';
4
4
  import { LOBE_CHAT_OBSERVATION_ID, LOBE_CHAT_TRACE_ID } from '@/const/trace';
5
- import { parseToolCalls } from '@/libs/agent-runtime';
5
+ import { parseToolCalls } from '@/libs/model-runtime';
6
6
  import { ChatErrorType } from '@/types/fetch';
7
7
  import { SmoothingParams } from '@/types/llm';
8
8
  import {
@@ -5,7 +5,7 @@ import { ModelProviderCard } from '@/types/llm';
5
5
  import { genUserLLMConfig } from './genUserLLMConfig';
6
6
 
7
7
  // Mock ModelProvider enum
8
- vi.mock('@/libs/agent-runtime', () => ({
8
+ vi.mock('@/libs/model-runtime', () => ({
9
9
  ModelProvider: {
10
10
  Ollama: 'ollama',
11
11
  OpenAI: 'openai',
@@ -1,5 +1,5 @@
1
1
  import * as ProviderCards from '@/config/modelProviders';
2
- import { ModelProvider } from '@/libs/agent-runtime';
2
+ import { ModelProvider } from '@/libs/model-runtime';
3
3
  import { ModelProviderCard } from '@/types/llm';
4
4
  import { UserModelProviderConfig } from '@/types/user/settings';
5
5