@lobehub/chat 1.111.6 → 1.111.8

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 (271) hide show
  1. package/.i18nrc.js +1 -1
  2. package/CHANGELOG.md +50 -0
  3. package/changelog/v1.json +18 -0
  4. package/docker-compose/local/.env.example +1 -0
  5. package/docker-compose/local/.env.zh-CN.example +1 -0
  6. package/docker-compose/local/docker-compose.yml +1 -1
  7. package/docker-compose/local/init_data.json +994 -488
  8. package/docker-compose/setup.sh +3 -3
  9. package/locales/ar/chat.json +3 -0
  10. package/locales/bg-BG/chat.json +3 -0
  11. package/locales/de-DE/chat.json +3 -0
  12. package/locales/en-US/chat.json +3 -0
  13. package/locales/es-ES/chat.json +3 -0
  14. package/locales/fa-IR/chat.json +3 -0
  15. package/locales/fr-FR/chat.json +3 -0
  16. package/locales/it-IT/chat.json +3 -0
  17. package/locales/ja-JP/chat.json +3 -0
  18. package/locales/ko-KR/chat.json +3 -0
  19. package/locales/nl-NL/chat.json +3 -0
  20. package/locales/pl-PL/chat.json +3 -0
  21. package/locales/pt-BR/chat.json +3 -0
  22. package/locales/ru-RU/chat.json +3 -0
  23. package/locales/tr-TR/chat.json +3 -0
  24. package/locales/vi-VN/chat.json +3 -0
  25. package/locales/zh-CN/chat.json +3 -0
  26. package/locales/zh-TW/chat.json +3 -0
  27. package/package.json +3 -3
  28. package/packages/model-runtime/package.json +12 -0
  29. package/{src/libs/model-runtime → packages/model-runtime/src}/anthropic/index.ts +8 -6
  30. package/{src/libs/model-runtime → packages/model-runtime/src}/azureOpenai/index.ts +22 -5
  31. package/{src/libs/model-runtime → packages/model-runtime/src}/google/index.ts +1 -2
  32. package/{src/libs/model-runtime → packages/model-runtime/src}/minimax/createImage.test.ts +12 -15
  33. package/{src/libs/model-runtime → packages/model-runtime/src}/minimax/createImage.ts +1 -2
  34. package/{src/libs/model-runtime → packages/model-runtime/src}/moonshot/index.ts +1 -1
  35. package/{src/libs/model-runtime → packages/model-runtime/src}/openai/index.ts +4 -1
  36. package/{src/libs/model-runtime → packages/model-runtime/src}/qwen/createImage.ts +5 -5
  37. package/{src/libs/model-runtime → packages/model-runtime/src}/qwen/index.ts +2 -2
  38. package/{src/libs/model-runtime → packages/model-runtime/src}/sensenova/index.ts +14 -4
  39. package/{src/libs/model-runtime → packages/model-runtime/src}/types/chat.ts +5 -1
  40. package/{src/libs/model-runtime → packages/model-runtime/src}/utils/googleErrorParser.test.ts +46 -34
  41. package/{src/libs/model-runtime → packages/model-runtime/src}/utils/streams/openai/responsesStream.ts +14 -12
  42. package/{src/libs/model-runtime → packages/model-runtime/src}/utils/usageConverter.test.ts +1 -1
  43. package/{src/libs/model-runtime → packages/model-runtime/src}/utils/usageConverter.ts +9 -5
  44. package/{src/libs/model-runtime → packages/model-runtime/src}/volcengine/index.ts +4 -4
  45. package/packages/types/src/agent/chatConfig.ts +6 -0
  46. package/packages/types/src/aiModel.ts +2 -0
  47. package/src/app/(backend)/middleware/auth/index.test.ts +1 -1
  48. package/src/app/(backend)/middleware/auth/index.ts +5 -1
  49. package/src/app/(backend)/middleware/auth/utils.ts +1 -1
  50. package/src/app/(backend)/webapi/chat/[provider]/route.test.ts +1 -1
  51. package/src/app/(backend)/webapi/chat/[provider]/route.ts +4 -4
  52. package/src/app/(backend)/webapi/chat/vertexai/route.ts +2 -1
  53. package/src/app/(backend)/webapi/models/[provider]/pull/route.ts +1 -1
  54. package/src/app/(backend)/webapi/models/[provider]/route.ts +1 -1
  55. package/src/app/(backend)/webapi/plugin/gateway/route.ts +2 -2
  56. package/src/app/(backend)/webapi/text-to-image/[provider]/route.ts +1 -1
  57. package/src/app/[variants]/(main)/settings/llm/ProviderList/Azure/index.tsx +1 -1
  58. package/src/app/[variants]/(main)/settings/provider/(detail)/azure/page.tsx +1 -1
  59. package/src/app/[variants]/(main)/settings/provider/(detail)/azureai/page.tsx +1 -1
  60. package/src/components/InvalidAPIKey/APIKeyForm/Bedrock.tsx +1 -1
  61. package/src/components/InvalidAPIKey/APIKeyForm/index.tsx +1 -1
  62. package/src/config/aiModels/aihubmix.ts +10 -12
  63. package/src/config/aiModels/openai.ts +7 -4
  64. package/src/const/settings/llm.ts +2 -1
  65. package/src/database/models/__tests__/aiProvider.test.ts +1 -1
  66. package/src/database/models/aiProvider.ts +1 -1
  67. package/src/features/ChatInput/ActionBar/Model/ControlsForm.tsx +24 -0
  68. package/src/features/ChatInput/ActionBar/Model/GPT5ReasoningEffortSlider.tsx +58 -0
  69. package/src/features/ChatInput/ActionBar/Model/TextVerbositySlider.tsx +57 -0
  70. package/src/features/Conversation/Error/index.tsx +1 -1
  71. package/src/libs/trpc/client/lambda.ts +1 -1
  72. package/src/locales/default/chat.ts +3 -0
  73. package/src/server/globalConfig/_deprecated.test.ts +1 -1
  74. package/src/server/globalConfig/_deprecated.ts +2 -1
  75. package/src/server/globalConfig/genServerAiProviderConfig.test.ts +1 -1
  76. package/src/server/globalConfig/genServerAiProviderConfig.ts +2 -1
  77. package/src/server/modules/ModelRuntime/index.test.ts +10 -7
  78. package/src/server/modules/ModelRuntime/index.ts +2 -1
  79. package/src/server/modules/ModelRuntime/trace.ts +1 -1
  80. package/src/server/routers/async/ragEval.ts +1 -1
  81. package/src/services/__tests__/_auth.test.ts +1 -1
  82. package/src/services/__tests__/chat.test.ts +11 -11
  83. package/src/services/_auth.ts +2 -1
  84. package/src/services/chat.ts +14 -6
  85. package/src/services/textToImage.ts +2 -1
  86. package/src/store/image/slices/generationConfig/initialState.ts +2 -1
  87. package/src/store/user/slices/modelList/action.ts +1 -1
  88. package/src/utils/errorResponse.test.ts +1 -2
  89. package/src/utils/errorResponse.ts +1 -2
  90. package/src/utils/fetch/fetchSSE.ts +1 -1
  91. package/src/utils/genUserLLMConfig.test.ts +1 -1
  92. package/src/utils/genUserLLMConfig.ts +2 -1
  93. package/tsconfig.json +2 -0
  94. package/vitest.config.ts +1 -0
  95. /package/{src/libs/model-runtime → packages/model-runtime/src}/BaseAI.ts +0 -0
  96. /package/{src/libs/model-runtime → packages/model-runtime/src}/ModelRuntime.test.ts +0 -0
  97. /package/{src/libs/model-runtime → packages/model-runtime/src}/ModelRuntime.ts +0 -0
  98. /package/{src/libs/model-runtime → packages/model-runtime/src}/RouterRuntime/baseRuntimeMap.ts +0 -0
  99. /package/{src/libs/model-runtime → packages/model-runtime/src}/RouterRuntime/createRuntime.test.ts +0 -0
  100. /package/{src/libs/model-runtime → packages/model-runtime/src}/RouterRuntime/createRuntime.ts +0 -0
  101. /package/{src/libs/model-runtime → packages/model-runtime/src}/RouterRuntime/index.ts +0 -0
  102. /package/{src/libs/model-runtime → packages/model-runtime/src}/UniformRuntime/index.ts +0 -0
  103. /package/{src/libs/model-runtime → packages/model-runtime/src}/ai21/index.test.ts +0 -0
  104. /package/{src/libs/model-runtime → packages/model-runtime/src}/ai21/index.ts +0 -0
  105. /package/{src/libs/model-runtime → packages/model-runtime/src}/ai302/index.ts +0 -0
  106. /package/{src/libs/model-runtime → packages/model-runtime/src}/ai360/index.test.ts +0 -0
  107. /package/{src/libs/model-runtime → packages/model-runtime/src}/ai360/index.ts +0 -0
  108. /package/{src/libs/model-runtime → packages/model-runtime/src}/aihubmix/index.ts +0 -0
  109. /package/{src/libs/model-runtime → packages/model-runtime/src}/anthropic/handleAnthropicError.ts +0 -0
  110. /package/{src/libs/model-runtime → packages/model-runtime/src}/anthropic/index.test.ts +0 -0
  111. /package/{src/libs/model-runtime → packages/model-runtime/src}/azureOpenai/index.test.ts +0 -0
  112. /package/{src/libs/model-runtime → packages/model-runtime/src}/azureai/index.ts +0 -0
  113. /package/{src/libs/model-runtime → packages/model-runtime/src}/baichuan/index.test.ts +0 -0
  114. /package/{src/libs/model-runtime → packages/model-runtime/src}/baichuan/index.ts +0 -0
  115. /package/{src/libs/model-runtime → packages/model-runtime/src}/bedrock/index.test.ts +0 -0
  116. /package/{src/libs/model-runtime → packages/model-runtime/src}/bedrock/index.ts +0 -0
  117. /package/{src/libs/model-runtime → packages/model-runtime/src}/cloudflare/index.test.ts +0 -0
  118. /package/{src/libs/model-runtime → packages/model-runtime/src}/cloudflare/index.ts +0 -0
  119. /package/{src/libs/model-runtime → packages/model-runtime/src}/cohere/index.ts +0 -0
  120. /package/{src/libs/model-runtime → packages/model-runtime/src}/deepseek/index.test.ts +0 -0
  121. /package/{src/libs/model-runtime → packages/model-runtime/src}/deepseek/index.ts +0 -0
  122. /package/{src/libs/model-runtime → packages/model-runtime/src}/error.ts +0 -0
  123. /package/{src/libs/model-runtime → packages/model-runtime/src}/fal/index.test.ts +0 -0
  124. /package/{src/libs/model-runtime → packages/model-runtime/src}/fal/index.ts +0 -0
  125. /package/{src/libs/model-runtime → packages/model-runtime/src}/fireworksai/index.test.ts +0 -0
  126. /package/{src/libs/model-runtime → packages/model-runtime/src}/fireworksai/index.ts +0 -0
  127. /package/{src/libs/model-runtime → packages/model-runtime/src}/giteeai/index.test.ts +0 -0
  128. /package/{src/libs/model-runtime → packages/model-runtime/src}/giteeai/index.ts +0 -0
  129. /package/{src/libs/model-runtime → packages/model-runtime/src}/github/index.test.ts +0 -0
  130. /package/{src/libs/model-runtime → packages/model-runtime/src}/github/index.ts +0 -0
  131. /package/{src/libs/model-runtime → packages/model-runtime/src}/google/index.test.ts +0 -0
  132. /package/{src/libs/model-runtime → packages/model-runtime/src}/groq/index.test.ts +0 -0
  133. /package/{src/libs/model-runtime → packages/model-runtime/src}/groq/index.ts +0 -0
  134. /package/{src/libs/model-runtime → packages/model-runtime/src}/helpers/index.ts +0 -0
  135. /package/{src/libs/model-runtime → packages/model-runtime/src}/helpers/parseToolCalls.test.ts +0 -0
  136. /package/{src/libs/model-runtime → packages/model-runtime/src}/helpers/parseToolCalls.ts +0 -0
  137. /package/{src/libs/model-runtime → packages/model-runtime/src}/higress/index.ts +0 -0
  138. /package/{src/libs/model-runtime → packages/model-runtime/src}/huggingface/index.ts +0 -0
  139. /package/{src/libs/model-runtime → packages/model-runtime/src}/hunyuan/index.test.ts +0 -0
  140. /package/{src/libs/model-runtime → packages/model-runtime/src}/hunyuan/index.ts +0 -0
  141. /package/{src/libs/model-runtime → packages/model-runtime/src}/index.ts +0 -0
  142. /package/{src/libs/model-runtime → packages/model-runtime/src}/infiniai/index.ts +0 -0
  143. /package/{src/libs/model-runtime → packages/model-runtime/src}/internlm/index.test.ts +0 -0
  144. /package/{src/libs/model-runtime → packages/model-runtime/src}/internlm/index.ts +0 -0
  145. /package/{src/libs/model-runtime → packages/model-runtime/src}/jina/index.ts +0 -0
  146. /package/{src/libs/model-runtime → packages/model-runtime/src}/lmstudio/index.test.ts +0 -0
  147. /package/{src/libs/model-runtime → packages/model-runtime/src}/lmstudio/index.ts +0 -0
  148. /package/{src/libs/model-runtime → packages/model-runtime/src}/minimax/index.ts +0 -0
  149. /package/{src/libs/model-runtime → packages/model-runtime/src}/mistral/index.test.ts +0 -0
  150. /package/{src/libs/model-runtime → packages/model-runtime/src}/mistral/index.ts +0 -0
  151. /package/{src/libs/model-runtime → packages/model-runtime/src}/modelscope/index.ts +0 -0
  152. /package/{src/libs/model-runtime → packages/model-runtime/src}/moonshot/index.test.ts +0 -0
  153. /package/{src/libs/model-runtime → packages/model-runtime/src}/novita/__snapshots__/index.test.ts.snap +0 -0
  154. /package/{src/libs/model-runtime → packages/model-runtime/src}/novita/fixtures/models.json +0 -0
  155. /package/{src/libs/model-runtime → packages/model-runtime/src}/novita/index.test.ts +0 -0
  156. /package/{src/libs/model-runtime → packages/model-runtime/src}/novita/index.ts +0 -0
  157. /package/{src/libs/model-runtime → packages/model-runtime/src}/novita/type.ts +0 -0
  158. /package/{src/libs/model-runtime → packages/model-runtime/src}/nvidia/index.ts +0 -0
  159. /package/{src/libs/model-runtime → packages/model-runtime/src}/ollama/index.test.ts +0 -0
  160. /package/{src/libs/model-runtime → packages/model-runtime/src}/ollama/index.ts +0 -0
  161. /package/{src/libs/model-runtime → packages/model-runtime/src}/ollama/type.ts +0 -0
  162. /package/{src/libs/model-runtime → packages/model-runtime/src}/openai/__snapshots__/index.test.ts.snap +0 -0
  163. /package/{src/libs/model-runtime → packages/model-runtime/src}/openai/fixtures/openai-models.json +0 -0
  164. /package/{src/libs/model-runtime → packages/model-runtime/src}/openai/index.test.ts +0 -0
  165. /package/{src/libs/model-runtime → packages/model-runtime/src}/openrouter/__snapshots__/index.test.ts.snap +0 -0
  166. /package/{src/libs/model-runtime → packages/model-runtime/src}/openrouter/fixtures/frontendModels.json +0 -0
  167. /package/{src/libs/model-runtime → packages/model-runtime/src}/openrouter/fixtures/models.json +0 -0
  168. /package/{src/libs/model-runtime → packages/model-runtime/src}/openrouter/index.test.ts +0 -0
  169. /package/{src/libs/model-runtime → packages/model-runtime/src}/openrouter/index.ts +0 -0
  170. /package/{src/libs/model-runtime → packages/model-runtime/src}/openrouter/type.ts +0 -0
  171. /package/{src/libs/model-runtime → packages/model-runtime/src}/perplexity/index.test.ts +0 -0
  172. /package/{src/libs/model-runtime → packages/model-runtime/src}/perplexity/index.ts +0 -0
  173. /package/{src/libs/model-runtime → packages/model-runtime/src}/ppio/__snapshots__/index.test.ts.snap +0 -0
  174. /package/{src/libs/model-runtime → packages/model-runtime/src}/ppio/fixtures/models.json +0 -0
  175. /package/{src/libs/model-runtime → packages/model-runtime/src}/ppio/index.test.ts +0 -0
  176. /package/{src/libs/model-runtime → packages/model-runtime/src}/ppio/index.ts +0 -0
  177. /package/{src/libs/model-runtime → packages/model-runtime/src}/ppio/type.ts +0 -0
  178. /package/{src/libs/model-runtime → packages/model-runtime/src}/providerTestUtils.test.ts +0 -0
  179. /package/{src/libs/model-runtime → packages/model-runtime/src}/providerTestUtils.ts +0 -0
  180. /package/{src/libs/model-runtime → packages/model-runtime/src}/qiniu/index.test.ts +0 -0
  181. /package/{src/libs/model-runtime → packages/model-runtime/src}/qiniu/index.ts +0 -0
  182. /package/{src/libs/model-runtime → packages/model-runtime/src}/qwen/createImage.test.ts +0 -0
  183. /package/{src/libs/model-runtime → packages/model-runtime/src}/qwen/index.test.ts +0 -0
  184. /package/{src/libs/model-runtime → packages/model-runtime/src}/runtimeMap.ts +0 -0
  185. /package/{src/libs/model-runtime → packages/model-runtime/src}/sambanova/index.ts +0 -0
  186. /package/{src/libs/model-runtime → packages/model-runtime/src}/search1api/index.ts +0 -0
  187. /package/{src/libs/model-runtime → packages/model-runtime/src}/sensenova/index.test.ts +0 -0
  188. /package/{src/libs/model-runtime → packages/model-runtime/src}/siliconcloud/index.ts +0 -0
  189. /package/{src/libs/model-runtime → packages/model-runtime/src}/spark/index.test.ts +0 -0
  190. /package/{src/libs/model-runtime → packages/model-runtime/src}/spark/index.ts +0 -0
  191. /package/{src/libs/model-runtime → packages/model-runtime/src}/stepfun/index.test.ts +0 -0
  192. /package/{src/libs/model-runtime → packages/model-runtime/src}/stepfun/index.ts +0 -0
  193. /package/{src/libs/model-runtime → packages/model-runtime/src}/taichu/index.test.ts +0 -0
  194. /package/{src/libs/model-runtime → packages/model-runtime/src}/taichu/index.ts +0 -0
  195. /package/{src/libs/model-runtime → packages/model-runtime/src}/tencentcloud/index.test.ts +0 -0
  196. /package/{src/libs/model-runtime → packages/model-runtime/src}/tencentcloud/index.ts +0 -0
  197. /package/{src/libs/model-runtime → packages/model-runtime/src}/togetherai/fixtures/models.json +0 -0
  198. /package/{src/libs/model-runtime → packages/model-runtime/src}/togetherai/index.test.ts +0 -0
  199. /package/{src/libs/model-runtime → packages/model-runtime/src}/togetherai/index.ts +0 -0
  200. /package/{src/libs/model-runtime → packages/model-runtime/src}/togetherai/type.ts +0 -0
  201. /package/{src/libs/model-runtime → packages/model-runtime/src}/types/embeddings.ts +0 -0
  202. /package/{src/libs/model-runtime → packages/model-runtime/src}/types/image.ts +0 -0
  203. /package/{src/libs/model-runtime → packages/model-runtime/src}/types/index.ts +0 -0
  204. /package/{src/libs/model-runtime → packages/model-runtime/src}/types/model.ts +0 -0
  205. /package/{src/libs/model-runtime → packages/model-runtime/src}/types/textToImage.ts +0 -0
  206. /package/{src/libs/model-runtime → packages/model-runtime/src}/types/tts.ts +0 -0
  207. /package/{src/libs/model-runtime → packages/model-runtime/src}/types/type.ts +0 -0
  208. /package/{src/libs/model-runtime → packages/model-runtime/src}/upstage/index.test.ts +0 -0
  209. /package/{src/libs/model-runtime → packages/model-runtime/src}/upstage/index.ts +0 -0
  210. /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/anthropicHelpers.test.ts +0 -0
  211. /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/anthropicHelpers.ts +0 -0
  212. /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/cloudflareHelpers.test.ts +0 -0
  213. /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/cloudflareHelpers.ts +0 -0
  214. /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/createError.ts +0 -0
  215. /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/debugStream.test.ts +0 -0
  216. /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/debugStream.ts +0 -0
  217. /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/desensitizeUrl.test.ts +0 -0
  218. /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/desensitizeUrl.ts +0 -0
  219. /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/googleErrorParser.ts +0 -0
  220. /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/handleOpenAIError.ts +0 -0
  221. /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/modelParse.test.ts +0 -0
  222. /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/modelParse.ts +0 -0
  223. /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/openaiCompatibleFactory/index.test.ts +0 -0
  224. /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/openaiCompatibleFactory/index.ts +0 -0
  225. /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/openaiHelpers.test.ts +0 -0
  226. /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/openaiHelpers.ts +0 -0
  227. /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/response.ts +0 -0
  228. /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/sensenovaHelpers.test.ts +0 -0
  229. /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/sensenovaHelpers.ts +0 -0
  230. /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/streams/__snapshots__/protocol.test.ts.snap +0 -0
  231. /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/streams/anthropic.test.ts +0 -0
  232. /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/streams/anthropic.ts +0 -0
  233. /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/streams/bedrock/claude.ts +0 -0
  234. /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/streams/bedrock/common.ts +0 -0
  235. /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/streams/bedrock/index.ts +0 -0
  236. /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/streams/bedrock/llama.test.ts +0 -0
  237. /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/streams/bedrock/llama.ts +0 -0
  238. /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/streams/google-ai.test.ts +0 -0
  239. /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/streams/google-ai.ts +0 -0
  240. /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/streams/index.ts +0 -0
  241. /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/streams/model.ts +0 -0
  242. /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/streams/ollama.test.ts +0 -0
  243. /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/streams/ollama.ts +0 -0
  244. /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/streams/openai/__snapshots__/responsesStream.test.ts.snap +0 -0
  245. /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/streams/openai/index.ts +0 -0
  246. /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/streams/openai/openai.test.ts +0 -0
  247. /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/streams/openai/openai.ts +0 -0
  248. /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/streams/openai/responsesStream.test.ts +0 -0
  249. /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/streams/protocol.test.ts +0 -0
  250. /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/streams/protocol.ts +0 -0
  251. /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/streams/qwen.test.ts +0 -0
  252. /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/streams/qwen.ts +0 -0
  253. /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/streams/spark.test.ts +0 -0
  254. /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/streams/spark.ts +0 -0
  255. /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/streams/utils.ts +0 -0
  256. /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/streams/vertex-ai.test.ts +0 -0
  257. /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/streams/vertex-ai.ts +0 -0
  258. /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/uriParser.test.ts +0 -0
  259. /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/uriParser.ts +0 -0
  260. /package/{src/libs/model-runtime → packages/model-runtime/src}/v0/index.ts +0 -0
  261. /package/{src/libs/model-runtime → packages/model-runtime/src}/vertexai/index.ts +0 -0
  262. /package/{src/libs/model-runtime → packages/model-runtime/src}/vllm/index.ts +0 -0
  263. /package/{src/libs/model-runtime → packages/model-runtime/src}/wenxin/index.test.ts +0 -0
  264. /package/{src/libs/model-runtime → packages/model-runtime/src}/wenxin/index.ts +0 -0
  265. /package/{src/libs/model-runtime → packages/model-runtime/src}/xai/index.test.ts +0 -0
  266. /package/{src/libs/model-runtime → packages/model-runtime/src}/xai/index.ts +0 -0
  267. /package/{src/libs/model-runtime → packages/model-runtime/src}/xinference/index.ts +0 -0
  268. /package/{src/libs/model-runtime → packages/model-runtime/src}/zeroone/index.test.ts +0 -0
  269. /package/{src/libs/model-runtime → packages/model-runtime/src}/zeroone/index.ts +0 -0
  270. /package/{src/libs/model-runtime → packages/model-runtime/src}/zhipu/index.test.ts +0 -0
  271. /package/{src/libs/model-runtime → packages/model-runtime/src}/zhipu/index.ts +0 -0
@@ -450,7 +450,7 @@ ENV_EXAMPLES=(
450
450
  "$SUB_DIR/.env.example"
451
451
  )
452
452
  # Default values
453
- CASDOOR_PASSWORD="123"
453
+ CASDOOR_PASSWORD="pswd123"
454
454
  CASDOOR_SECRET="CASDOOR_SECRET"
455
455
  MINIO_ROOT_PASSWORD="YOUR_MINIO_PASSWORD"
456
456
  CASDOOR_HOST="localhost:8000"
@@ -657,10 +657,10 @@ section_regenerate_secrets() {
657
657
  CASDOOR_PASSWORD=$(generate_key 10)
658
658
  if [ $? -ne 0 ]; then
659
659
  echo $(show_message "security_secrect_regenerate_failed") "CASDOOR_PASSWORD"
660
- CASDOOR_PASSWORD="123"
660
+ CASDOOR_PASSWORD="pswd123"
661
661
  else
662
662
  # replace `password` in init_data.json
663
- sed "${SED_INPLACE_ARGS[@]}" "s/"123"/${CASDOOR_PASSWORD}/" init_data.json
663
+ sed "${SED_INPLACE_ARGS[@]}" "s/"pswd123"/${CASDOOR_PASSWORD}/" init_data.json
664
664
  if [ $? -ne 0 ]; then
665
665
  echo $(show_message "security_secrect_regenerate_failed") "CASDOOR_PASSWORD in \`init_data.json\`"
666
666
  fi
@@ -46,6 +46,9 @@
46
46
  "reasoningEffort": {
47
47
  "title": "شدة الاستدلال"
48
48
  },
49
+ "textVerbosity": {
50
+ "title": "مستوى تفصيل المخرجات النصية"
51
+ },
49
52
  "thinking": {
50
53
  "title": "مفتاح التفكير العميق"
51
54
  },
@@ -46,6 +46,9 @@
46
46
  "reasoningEffort": {
47
47
  "title": "Интензитет на разсъждение"
48
48
  },
49
+ "textVerbosity": {
50
+ "title": "Ниво на подробност на изходния текст"
51
+ },
49
52
  "thinking": {
50
53
  "title": "Превключвател за дълбоко мислене"
51
54
  },
@@ -46,6 +46,9 @@
46
46
  "reasoningEffort": {
47
47
  "title": "Argumentationsstärke"
48
48
  },
49
+ "textVerbosity": {
50
+ "title": "Detaillierungsgrad des Ausgabetextes"
51
+ },
49
52
  "thinking": {
50
53
  "title": "Tiefdenk-Schalter"
51
54
  },
@@ -46,6 +46,9 @@
46
46
  "reasoningEffort": {
47
47
  "title": "Reasoning Intensity"
48
48
  },
49
+ "textVerbosity": {
50
+ "title": "Output Text Detail Level"
51
+ },
49
52
  "thinking": {
50
53
  "title": "Deep Thinking Switch"
51
54
  },
@@ -46,6 +46,9 @@
46
46
  "reasoningEffort": {
47
47
  "title": "Intensidad de razonamiento"
48
48
  },
49
+ "textVerbosity": {
50
+ "title": "Nivel de detalle del texto de salida"
51
+ },
49
52
  "thinking": {
50
53
  "title": "Interruptor de pensamiento profundo"
51
54
  },
@@ -46,6 +46,9 @@
46
46
  "reasoningEffort": {
47
47
  "title": "شدت استدلال"
48
48
  },
49
+ "textVerbosity": {
50
+ "title": "سطح جزئیات متن خروجی"
51
+ },
49
52
  "thinking": {
50
53
  "title": "کلید تفکر عمیق"
51
54
  },
@@ -46,6 +46,9 @@
46
46
  "reasoningEffort": {
47
47
  "title": "Intensité du raisonnement"
48
48
  },
49
+ "textVerbosity": {
50
+ "title": "Niveau de détail du texte de sortie"
51
+ },
49
52
  "thinking": {
50
53
  "title": "Interrupteur de réflexion approfondie"
51
54
  },
@@ -46,6 +46,9 @@
46
46
  "reasoningEffort": {
47
47
  "title": "Intensità del ragionamento"
48
48
  },
49
+ "textVerbosity": {
50
+ "title": "Livello di dettaglio dell'output testuale"
51
+ },
49
52
  "thinking": {
50
53
  "title": "Interruttore di pensiero profondo"
51
54
  },
@@ -46,6 +46,9 @@
46
46
  "reasoningEffort": {
47
47
  "title": "推論の強度"
48
48
  },
49
+ "textVerbosity": {
50
+ "title": "出力テキストの詳細レベル"
51
+ },
49
52
  "thinking": {
50
53
  "title": "深い思考のスイッチ"
51
54
  },
@@ -46,6 +46,9 @@
46
46
  "reasoningEffort": {
47
47
  "title": "추론 강도"
48
48
  },
49
+ "textVerbosity": {
50
+ "title": "출력 텍스트 상세 수준"
51
+ },
49
52
  "thinking": {
50
53
  "title": "심층 사고 스위치"
51
54
  },
@@ -46,6 +46,9 @@
46
46
  "reasoningEffort": {
47
47
  "title": "Redeneringsinspanning"
48
48
  },
49
+ "textVerbosity": {
50
+ "title": "Gedetailleerdheid van de uitvoer"
51
+ },
49
52
  "thinking": {
50
53
  "title": "Diepdenkschakelaar"
51
54
  },
@@ -46,6 +46,9 @@
46
46
  "reasoningEffort": {
47
47
  "title": "Intensywność rozumowania"
48
48
  },
49
+ "textVerbosity": {
50
+ "title": "Poziom szczegółowości tekstu wyjściowego"
51
+ },
49
52
  "thinking": {
50
53
  "title": "Przełącznik głębokiego myślenia"
51
54
  },
@@ -46,6 +46,9 @@
46
46
  "reasoningEffort": {
47
47
  "title": "Intensidade de Raciocínio"
48
48
  },
49
+ "textVerbosity": {
50
+ "title": "Nível de detalhamento do texto de saída"
51
+ },
49
52
  "thinking": {
50
53
  "title": "Interruptor de Pensamento Profundo"
51
54
  },
@@ -46,6 +46,9 @@
46
46
  "reasoningEffort": {
47
47
  "title": "Интенсивность рассуждений"
48
48
  },
49
+ "textVerbosity": {
50
+ "title": "Уровень подробности выводимого текста"
51
+ },
49
52
  "thinking": {
50
53
  "title": "Переключатель глубокого мышления"
51
54
  },
@@ -46,6 +46,9 @@
46
46
  "reasoningEffort": {
47
47
  "title": "Akıl Yürütme Gücü"
48
48
  },
49
+ "textVerbosity": {
50
+ "title": "Çıktı metninin ayrıntı düzeyi"
51
+ },
49
52
  "thinking": {
50
53
  "title": "Derin Düşünme Anahtarı"
51
54
  },
@@ -46,6 +46,9 @@
46
46
  "reasoningEffort": {
47
47
  "title": "Cường độ suy luận"
48
48
  },
49
+ "textVerbosity": {
50
+ "title": "Mức độ chi tiết của văn bản đầu ra"
51
+ },
49
52
  "thinking": {
50
53
  "title": "Công tắc suy nghĩ sâu"
51
54
  },
@@ -46,6 +46,9 @@
46
46
  "reasoningEffort": {
47
47
  "title": "推理强度"
48
48
  },
49
+ "textVerbosity": {
50
+ "title": "输出文本详细程度"
51
+ },
49
52
  "thinking": {
50
53
  "title": "深度思考开关"
51
54
  },
@@ -46,6 +46,9 @@
46
46
  "reasoningEffort": {
47
47
  "title": "推理強度"
48
48
  },
49
+ "textVerbosity": {
50
+ "title": "輸出文本詳細程度"
51
+ },
49
52
  "thinking": {
50
53
  "title": "深度思考開關"
51
54
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lobehub/chat",
3
- "version": "1.111.6",
3
+ "version": "1.111.8",
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",
@@ -121,9 +121,8 @@
121
121
  "dependencies": {
122
122
  "@ant-design/icons": "^5.6.1",
123
123
  "@ant-design/pro-components": "^2.8.10",
124
- "@anthropic-ai/sdk": "^0.57.0",
124
+ "@anthropic-ai/sdk": "^0.59.0",
125
125
  "@auth/core": "^0.40.0",
126
- "@aws-sdk/client-bedrock-runtime": "^3.862.0",
127
126
  "@aws-sdk/client-s3": "^3.862.0",
128
127
  "@aws-sdk/s3-request-presigner": "^3.862.0",
129
128
  "@azure-rest/ai-inference": "1.0.0-beta.5",
@@ -145,6 +144,7 @@
145
144
  "@lobechat/electron-client-ipc": "workspace:*",
146
145
  "@lobechat/electron-server-ipc": "workspace:*",
147
146
  "@lobechat/file-loaders": "workspace:*",
147
+ "@lobechat/model-runtime": "workspace:*",
148
148
  "@lobechat/web-crawler": "workspace:*",
149
149
  "@lobehub/analytics": "^1.6.0",
150
150
  "@lobehub/charts": "^2.0.0",
@@ -0,0 +1,12 @@
1
+ {
2
+ "name": "@lobechat/model-runtime",
3
+ "version": "1.0.0",
4
+ "private": true,
5
+ "main": "./src/index.ts",
6
+ "dependencies": {
7
+ "@aws-sdk/client-bedrock-runtime": "^3.862.0",
8
+ "@lobechat/types": "workspace:*",
9
+ "debug": "^4.4.1",
10
+ "openai": "^4.104.0"
11
+ }
12
+ }
@@ -204,14 +204,16 @@ export class LobeAnthropicAI implements LobeRuntimeAI {
204
204
  model,
205
205
  system: systemPrompts,
206
206
  // For Opus 4.1 models: prefer temperature over top_p if both are provided
207
- temperature: isOpus41Model
208
- ? (shouldSetTemperature ? temperature / 2 : undefined)
209
- : (payload.temperature !== undefined ? temperature / 2 : undefined),
207
+ temperature: isOpus41Model
208
+ ? shouldSetTemperature
209
+ ? temperature / 2
210
+ : undefined
211
+ : payload.temperature !== undefined
212
+ ? temperature / 2
213
+ : undefined,
210
214
  tools: postTools,
211
215
  // For Opus 4.1 models: only set top_p if temperature is not set
212
- top_p: isOpus41Model
213
- ? (shouldSetTemperature ? undefined : top_p)
214
- : top_p,
216
+ top_p: isOpus41Model ? (shouldSetTemperature ? undefined : top_p) : top_p,
215
217
  } satisfies Anthropic.MessageCreateParams;
216
218
  }
217
219
 
@@ -56,16 +56,33 @@ export class LobeAzureOpenAI implements LobeRuntimeAI {
56
56
  }));
57
57
 
58
58
  try {
59
- const response = await this.client.chat.completions.create({
59
+ // Create parameters with proper typing for OpenAI SDK, handling reasoning_effort compatibility
60
+ const { reasoning_effort, ...otherParams } = params;
61
+
62
+ // Convert 'minimal' to 'low' for OpenAI SDK compatibility
63
+ const compatibleReasoningEffort = reasoning_effort === 'minimal' ? 'low' : reasoning_effort;
64
+
65
+ const baseParams = {
60
66
  messages: await convertOpenAIMessages(
61
67
  updatedMessages as OpenAI.ChatCompletionMessageParam[],
62
68
  ),
63
69
  model,
64
- ...params,
70
+ ...otherParams,
65
71
  max_completion_tokens: undefined,
66
- stream: enableStreaming,
67
- tool_choice: params.tools ? 'auto' : undefined,
68
- });
72
+ tool_choice: params.tools ? ('auto' as const) : undefined,
73
+ };
74
+
75
+ // Add reasoning_effort only if it exists and cast to proper type
76
+ const openaiParams = compatibleReasoningEffort
77
+ ? {
78
+ ...baseParams,
79
+ reasoning_effort: compatibleReasoningEffort as 'low' | 'medium' | 'high',
80
+ }
81
+ : baseParams;
82
+
83
+ const response = enableStreaming
84
+ ? await this.client.chat.completions.create({ ...openaiParams, stream: true })
85
+ : await this.client.chat.completions.create({ ...openaiParams, stream: false });
69
86
  if (enableStreaming) {
70
87
  const stream = response as Stream<OpenAI.ChatCompletionChunk>;
71
88
  const [prod, debug] = stream.tee();
@@ -511,7 +511,7 @@ export class LobeGoogleAI implements LobeRuntimeAI {
511
511
  .map(async (msg) => await this.convertOAIMessagesToGoogleMessage(msg, toolCallNameMap));
512
512
 
513
513
  const contents = await Promise.all(pools);
514
-
514
+
515
515
  // 筛除空消息: contents.parts must not be empty.
516
516
  return contents.filter((content: Content) => content.parts && content.parts.length > 0);
517
517
  };
@@ -563,7 +563,6 @@ export class LobeGoogleAI implements LobeRuntimeAI {
563
563
  },
564
564
  };
565
565
  };
566
-
567
566
  }
568
567
 
569
568
  export default LobeGoogleAI;
@@ -55,22 +55,19 @@ describe('createMiniMaxImage', () => {
55
55
 
56
56
  const result = await createMiniMaxImage(payload, mockOptions);
57
57
 
58
- expect(fetch).toHaveBeenCalledWith(
59
- 'https://api.minimaxi.com/v1/image_generation',
60
- {
61
- method: 'POST',
62
- headers: {
63
- 'Authorization': 'Bearer test-api-key',
64
- 'Content-Type': 'application/json',
65
- },
66
- body: JSON.stringify({
67
- aspect_ratio: undefined,
68
- model: 'image-01',
69
- n: 1,
70
- prompt: 'A beautiful sunset over the mountains',
71
- }),
58
+ expect(fetch).toHaveBeenCalledWith('https://api.minimaxi.com/v1/image_generation', {
59
+ method: 'POST',
60
+ headers: {
61
+ 'Authorization': 'Bearer test-api-key',
62
+ 'Content-Type': 'application/json',
72
63
  },
73
- );
64
+ body: JSON.stringify({
65
+ aspect_ratio: undefined,
66
+ model: 'image-01',
67
+ n: 1,
68
+ prompt: 'A beautiful sunset over the mountains',
69
+ }),
70
+ });
74
71
 
75
72
  expect(result).toEqual({
76
73
  imageUrl: mockImageUrl,
@@ -59,7 +59,7 @@ export async function createMiniMaxImage(
59
59
  }
60
60
 
61
61
  throw new Error(
62
- `MiniMax API error (${response.status}): ${errorData?.base_resp || response.statusText}`
62
+ `MiniMax API error (${response.status}): ${errorData?.base_resp || response.statusText}`,
63
63
  );
64
64
  }
65
65
 
@@ -92,7 +92,6 @@ export async function createMiniMaxImage(
92
92
  log('Image generated successfully: %s', imageUrl);
93
93
 
94
94
  return { imageUrl };
95
-
96
95
  } catch (error) {
97
96
  log('Error in createMiniMaxImage: %O', error);
98
97
 
@@ -14,7 +14,7 @@ export const LobeMoonshotAI = createOpenAICompatibleRuntime({
14
14
  const { enabledSearch, messages, temperature, tools, ...rest } = payload;
15
15
 
16
16
  // 为 assistant 空消息添加一个空格 (#8418)
17
- const filteredMessages = messages.map(message => {
17
+ const filteredMessages = messages.map((message) => {
18
18
  if (message.role === 'assistant' && (!message.content || message.content === '')) {
19
19
  return { ...message, content: ' ' };
20
20
  }
@@ -60,7 +60,7 @@ export const LobeOpenAI = createOpenAICompatibleRuntime({
60
60
  provider: ModelProvider.OpenAI,
61
61
  responses: {
62
62
  handlePayload: (payload) => {
63
- const { enabledSearch, model, tools, ...rest } = payload;
63
+ const { enabledSearch, model, tools, verbosity, ...rest } = payload;
64
64
 
65
65
  const openaiTools = enabledSearch
66
66
  ? [
@@ -85,6 +85,9 @@ export const LobeOpenAI = createOpenAICompatibleRuntime({
85
85
  tools: openaiTools as any,
86
86
  // computer-use series must set truncation as auto
87
87
  ...(model.startsWith('computer-use') && { truncation: 'auto' }),
88
+ text: verbosity
89
+ ? { verbosity }
90
+ : undefined,
88
91
  }) as any;
89
92
  }
90
93
 
@@ -24,7 +24,7 @@ const QwenText2ImageModels = [
24
24
  'wanx2.0-t2i',
25
25
  'wanx-v1',
26
26
  'flux',
27
- 'stable-diffusion'
27
+ 'stable-diffusion',
28
28
  ];
29
29
 
30
30
  const getModelType = (model: string): string => {
@@ -33,12 +33,12 @@ const getModelType = (model: string): string => {
33
33
  // return 'image2image';
34
34
  // }
35
35
 
36
- if (QwenText2ImageModels.some(prefix => model.startsWith(prefix))) {
36
+ if (QwenText2ImageModels.some((prefix) => model.startsWith(prefix))) {
37
37
  return 'text2image';
38
38
  }
39
39
 
40
40
  throw new Error(`Unsupported model: ${model}`);
41
- }
41
+ };
42
42
 
43
43
  /**
44
44
  * Create an image generation task with Qwen API
@@ -47,7 +47,7 @@ async function createImageTask(payload: CreateImagePayload, apiKey: string): Pro
47
47
  const { model, params } = payload;
48
48
  // I can only say that the design of Alibaba Cloud's API is really bad; each model has a different endpoint path.
49
49
  const modelType = getModelType(model);
50
- const endpoint = `https://dashscope.aliyuncs.com/api/v1/services/aigc/${modelType}/image-synthesis`
50
+ const endpoint = `https://dashscope.aliyuncs.com/api/v1/services/aigc/${modelType}/image-synthesis`;
51
51
  if (!endpoint) {
52
52
  throw new Error(`No endpoint configured for model type: ${modelType}`);
53
53
  }
@@ -66,7 +66,7 @@ async function createImageTask(payload: CreateImagePayload, apiKey: string): Pro
66
66
  ...(typeof params.seed === 'number' ? { seed: params.seed } : {}),
67
67
  ...(params.width && params.height
68
68
  ? { size: `${params.width}*${params.height}` }
69
- : params.size
69
+ : params.size
70
70
  ? { size: params.size.replaceAll('x', '*') }
71
71
  : { size: '1024*1024' }),
72
72
  },
@@ -36,8 +36,8 @@ export const LobeQwenAI = createOpenAICompatibleRuntime({
36
36
  thinking?.budget_tokens === 0 ? 0 : thinking?.budget_tokens || undefined,
37
37
  }
38
38
  : ['qwen3', 'qwen-turbo', 'qwen-plus'].some((keyword) =>
39
- model.toLowerCase().includes(keyword),
40
- )
39
+ model.toLowerCase().includes(keyword),
40
+ )
41
41
  ? {
42
42
  enable_thinking: thinking !== undefined ? thinking.type === 'enabled' : false,
43
43
  thinking_budget:
@@ -12,8 +12,16 @@ export const LobeSenseNovaAI = createOpenAICompatibleRuntime({
12
12
  baseURL: 'https://api.sensenova.cn/compatible-mode/v1',
13
13
  chatCompletion: {
14
14
  handlePayload: (payload) => {
15
- const { frequency_penalty, max_tokens, messages, model, temperature, thinking, top_p, ...rest } =
16
- payload;
15
+ const {
16
+ frequency_penalty,
17
+ max_tokens,
18
+ messages,
19
+ model,
20
+ temperature,
21
+ thinking,
22
+ top_p,
23
+ ...rest
24
+ } = payload;
17
25
 
18
26
  return {
19
27
  ...rest,
@@ -33,8 +41,10 @@ export const LobeSenseNovaAI = createOpenAICompatibleRuntime({
33
41
  temperature !== undefined && temperature > 0 && temperature <= 2
34
42
  ? temperature
35
43
  : undefined,
36
- thinking: thinking
37
- ? (model && model.includes('-V6-5-') && thinking.type === 'enabled' ? { enabled: true } : { enabled: false })
44
+ thinking: thinking
45
+ ? model && model.includes('-V6-5-') && thinking.type === 'enabled'
46
+ ? { enabled: true }
47
+ : { enabled: false }
38
48
  : undefined,
39
49
  top_p: top_p !== undefined && top_p > 0 && top_p < 1 ? top_p : undefined,
40
50
  } as any;
@@ -107,7 +107,7 @@ export interface ChatStreamPayload {
107
107
  effort?: string;
108
108
  summary?: string;
109
109
  };
110
- reasoning_effort?: 'low' | 'medium' | 'high';
110
+ reasoning_effort?: 'minimal' | 'low' | 'medium' | 'high';
111
111
  responseMode?: 'stream' | 'json';
112
112
  /**
113
113
  * @title 是否开启流式请求
@@ -119,6 +119,9 @@ export interface ChatStreamPayload {
119
119
  * @default 1
120
120
  */
121
121
  temperature: number;
122
+ text?: {
123
+ verbosity?: 'low' | 'medium' | 'high';
124
+ };
122
125
  /**
123
126
  * use for Claude and Gemini
124
127
  */
@@ -135,6 +138,7 @@ export interface ChatStreamPayload {
135
138
  */
136
139
  top_p?: number;
137
140
  truncation?: 'auto' | 'disabled';
141
+ verbosity?: 'low' | 'medium' | 'high';
138
142
  }
139
143
 
140
144
  export interface ChatMethodOptions {