@lobehub/chat 1.90.4 → 1.91.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 (297) hide show
  1. package/CHANGELOG.md +58 -0
  2. package/changelog/v1.json +21 -0
  3. package/docs/changelog/2023-09-09-plugin-system.mdx +2 -3
  4. package/docs/changelog/2023-11-14-gpt4-vision.mdx +4 -6
  5. package/docs/changelog/2023-11-19-tts-stt.mdx +2 -3
  6. package/docs/changelog/2023-12-22-dalle-3.mdx +2 -5
  7. package/docs/changelog/2023-12-22-dalle-3.zh-CN.mdx +2 -2
  8. package/docs/changelog/2024-02-08-sso-oauth.mdx +2 -2
  9. package/docs/changelog/2024-06-19-lobe-chat-v1.mdx +2 -3
  10. package/docs/changelog/2024-06-19-lobe-chat-v1.zh-CN.mdx +2 -2
  11. package/docs/changelog/2024-07-19-gpt-4o-mini.mdx +2 -3
  12. package/docs/changelog/2024-07-19-gpt-4o-mini.zh-CN.mdx +2 -2
  13. package/docs/changelog/2024-08-02-lobe-chat-database-docker.mdx +2 -3
  14. package/docs/changelog/2024-08-21-file-upload-and-knowledge-base.mdx +4 -5
  15. package/docs/changelog/2024-09-13-openai-o1-models.mdx +2 -2
  16. package/docs/changelog/2024-09-20-artifacts.mdx +2 -3
  17. package/docs/changelog/2024-09-20-artifacts.zh-CN.mdx +2 -2
  18. package/docs/changelog/2024-10-27-pin-assistant.mdx +2 -3
  19. package/docs/changelog/2024-11-06-share-text-json.mdx +2 -4
  20. package/docs/changelog/2024-11-06-share-text-json.zh-CN.mdx +2 -2
  21. package/docs/changelog/2024-11-25-november-providers.mdx +2 -2
  22. package/docs/changelog/2024-11-27-forkable-chat.mdx +2 -2
  23. package/docs/changelog/2025-01-03-user-profile.mdx +2 -2
  24. package/docs/changelog/2025-01-22-new-ai-provider.mdx +2 -2
  25. package/docs/changelog/2025-02-02-deepseek-r1.mdx +4 -4
  26. package/docs/development/basic/add-new-authentication-providers.zh-CN.mdx +1 -2
  27. package/docs/development/basic/chat-api.mdx +2 -4
  28. package/docs/development/basic/chat-api.zh-CN.mdx +2 -4
  29. package/docs/development/internationalization/internationalization-implementation.mdx +10 -10
  30. package/docs/development/internationalization/internationalization-implementation.zh-CN.mdx +10 -10
  31. package/docs/self-hosting/advanced/analytics.mdx +2 -2
  32. package/docs/self-hosting/advanced/auth/clerk.mdx +2 -2
  33. package/docs/self-hosting/advanced/auth/next-auth/auth0.mdx +2 -3
  34. package/docs/self-hosting/advanced/auth/next-auth/authelia.mdx +2 -3
  35. package/docs/self-hosting/advanced/auth/next-auth/authentik.mdx +2 -3
  36. package/docs/self-hosting/advanced/auth/next-auth/casdoor.mdx +4 -7
  37. package/docs/self-hosting/advanced/auth/next-auth/casdoor.zh-CN.mdx +0 -3
  38. package/docs/self-hosting/advanced/auth/next-auth/cloudflare-zero-trust.mdx +2 -3
  39. package/docs/self-hosting/advanced/auth/next-auth/cloudflare-zero-trust.zh-CN.mdx +2 -2
  40. package/docs/self-hosting/advanced/auth/next-auth/github.mdx +2 -3
  41. package/docs/self-hosting/advanced/auth/next-auth/keycloak.mdx +12 -6
  42. package/docs/self-hosting/advanced/auth/next-auth/keycloak.zh-CN.mdx +5 -1
  43. package/docs/self-hosting/advanced/auth/next-auth/logto.mdx +8 -14
  44. package/docs/self-hosting/advanced/auth/next-auth/logto.zh-CN.mdx +6 -12
  45. package/docs/self-hosting/advanced/auth/next-auth/microsoft-entra-id.mdx +2 -3
  46. package/docs/self-hosting/advanced/auth/next-auth/wechat.mdx +2 -2
  47. package/docs/self-hosting/advanced/auth/next-auth/zitadel.mdx +2 -3
  48. package/docs/self-hosting/advanced/auth.mdx +2 -3
  49. package/docs/self-hosting/advanced/desktop.mdx +2 -1
  50. package/docs/self-hosting/advanced/desktop.zh-CN.mdx +1 -3
  51. package/docs/self-hosting/advanced/feature-flags.mdx +2 -3
  52. package/docs/self-hosting/advanced/knowledge-base.mdx +4 -3
  53. package/docs/self-hosting/advanced/model-list.mdx +11 -10
  54. package/docs/self-hosting/advanced/model-list.zh-CN.mdx +10 -9
  55. package/docs/self-hosting/advanced/observability/langfuse.mdx +2 -3
  56. package/docs/self-hosting/advanced/online-search.mdx +11 -10
  57. package/docs/self-hosting/advanced/online-search.zh-CN.mdx +7 -7
  58. package/docs/self-hosting/advanced/s3/tencent-cloud.mdx +2 -2
  59. package/docs/self-hosting/advanced/settings-url-share.mdx +2 -3
  60. package/docs/self-hosting/advanced/upstream-sync.mdx +2 -3
  61. package/docs/self-hosting/advanced/webrtc.mdx +2 -2
  62. package/docs/self-hosting/environment-variables/analytics.mdx +2 -3
  63. package/docs/self-hosting/environment-variables/auth.mdx +2 -3
  64. package/docs/self-hosting/environment-variables/basic.mdx +4 -5
  65. package/docs/self-hosting/environment-variables/basic.zh-CN.mdx +2 -2
  66. package/docs/self-hosting/environment-variables/model-provider.mdx +2 -3
  67. package/docs/self-hosting/environment-variables/s3.mdx +3 -5
  68. package/docs/self-hosting/environment-variables.mdx +2 -2
  69. package/docs/self-hosting/examples/azure-openai.mdx +2 -2
  70. package/docs/self-hosting/examples/ollama.mdx +2 -3
  71. package/docs/self-hosting/faq/no-v1-suffix.mdx +4 -4
  72. package/docs/self-hosting/faq/proxy-with-unable-to-verify-leaf-signature.mdx +2 -3
  73. package/docs/self-hosting/platform/alibaba-cloud.mdx +2 -3
  74. package/docs/self-hosting/platform/btpanel.mdx +5 -5
  75. package/docs/self-hosting/platform/btpanel.zh-CN.mdx +4 -3
  76. package/docs/self-hosting/platform/docker-compose.mdx +2 -3
  77. package/docs/self-hosting/platform/docker-compose.zh-CN.mdx +0 -2
  78. package/docs/self-hosting/platform/docker.mdx +2 -2
  79. package/docs/self-hosting/platform/netlify.mdx +2 -4
  80. package/docs/self-hosting/platform/netlify.zh-CN.mdx +2 -2
  81. package/docs/self-hosting/platform/railway.mdx +2 -3
  82. package/docs/self-hosting/platform/repocloud.mdx +2 -3
  83. package/docs/self-hosting/platform/sealos.mdx +2 -2
  84. package/docs/self-hosting/platform/tencentcloud-lighthouse.mdx +2 -3
  85. package/docs/self-hosting/platform/vercel.mdx +2 -3
  86. package/docs/self-hosting/platform/zeabur.mdx +2 -2
  87. package/docs/self-hosting/server-database/docker-compose.mdx +65 -44
  88. package/docs/self-hosting/server-database/docker-compose.zh-CN.mdx +48 -55
  89. package/docs/self-hosting/server-database/docker.mdx +2 -2
  90. package/docs/self-hosting/server-database/docker.zh-CN.mdx +2 -2
  91. package/docs/self-hosting/server-database/dokploy.mdx +4 -5
  92. package/docs/self-hosting/server-database/dokploy.zh-CN.mdx +137 -138
  93. package/docs/self-hosting/server-database/netlify.mdx +2 -2
  94. package/docs/self-hosting/server-database/netlify.zh-CN.mdx +2 -2
  95. package/docs/self-hosting/server-database/railway.mdx +2 -2
  96. package/docs/self-hosting/server-database/repocloud.mdx +2 -2
  97. package/docs/self-hosting/server-database/sealos.mdx +4 -5
  98. package/docs/self-hosting/server-database/sealos.zh-CN.mdx +18 -20
  99. package/docs/self-hosting/server-database/vercel.mdx +5 -3
  100. package/docs/self-hosting/server-database/vercel.zh-CN.mdx +2 -2
  101. package/docs/self-hosting/server-database/zeabur.mdx +2 -2
  102. package/docs/self-hosting/server-database.mdx +1 -1
  103. package/docs/self-hosting/server-database.zh-CN.mdx +2 -1
  104. package/docs/self-hosting/start.mdx +2 -2
  105. package/docs/self-hosting/start.zh-CN.mdx +2 -2
  106. package/docs/usage/agents/agent-organization.mdx +2 -2
  107. package/docs/usage/agents/concepts.mdx +4 -5
  108. package/docs/usage/agents/concepts.zh-CN.mdx +2 -2
  109. package/docs/usage/agents/custom-agent.mdx +3 -4
  110. package/docs/usage/agents/custom-agent.zh-CN.mdx +1 -1
  111. package/docs/usage/agents/model.mdx +5 -5
  112. package/docs/usage/agents/model.zh-CN.mdx +3 -5
  113. package/docs/usage/agents/prompt.mdx +4 -5
  114. package/docs/usage/agents/topics.mdx +3 -4
  115. package/docs/usage/agents/topics.zh-CN.mdx +1 -1
  116. package/docs/usage/features/agent-market.mdx +3 -11
  117. package/docs/usage/features/agent-market.zh-CN.mdx +2 -7
  118. package/docs/usage/features/artifacts.mdx +2 -2
  119. package/docs/usage/features/auth.mdx +2 -3
  120. package/docs/usage/features/cot.mdx +2 -2
  121. package/docs/usage/features/database.mdx +2 -2
  122. package/docs/usage/features/knowledge-base.mdx +4 -3
  123. package/docs/usage/features/knowledge-base.zh-CN.mdx +2 -1
  124. package/docs/usage/features/local-llm.mdx +2 -3
  125. package/docs/usage/features/mobile.mdx +2 -2
  126. package/docs/usage/features/more.mdx +2 -3
  127. package/docs/usage/features/multi-ai-providers.mdx +2 -3
  128. package/docs/usage/features/plugin-system.mdx +3 -11
  129. package/docs/usage/features/plugin-system.zh-CN.mdx +1 -8
  130. package/docs/usage/features/pwa.mdx +4 -4
  131. package/docs/usage/features/pwa.zh-CN.mdx +2 -1
  132. package/docs/usage/features/text-to-image.mdx +3 -11
  133. package/docs/usage/features/text-to-image.zh-CN.mdx +3 -10
  134. package/docs/usage/features/theme.mdx +2 -3
  135. package/docs/usage/features/tts.mdx +3 -11
  136. package/docs/usage/features/tts.zh-CN.mdx +1 -8
  137. package/docs/usage/features/vision.mdx +3 -11
  138. package/docs/usage/features/vision.zh-CN.mdx +1 -8
  139. package/docs/usage/foundation/basic.mdx +2 -3
  140. package/docs/usage/foundation/share.mdx +2 -3
  141. package/docs/usage/foundation/text2image.mdx +2 -2
  142. package/docs/usage/foundation/translate.mdx +2 -2
  143. package/docs/usage/foundation/tts-stt.mdx +2 -2
  144. package/docs/usage/foundation/vision.mdx +2 -3
  145. package/docs/usage/plugins/basic-usage.mdx +2 -3
  146. package/docs/usage/plugins/custom-plugin.mdx +2 -2
  147. package/docs/usage/plugins/development.mdx +2 -4
  148. package/docs/usage/plugins/store.mdx +2 -2
  149. package/docs/usage/providers/ai21.mdx +2 -2
  150. package/docs/usage/providers/anthropic.mdx +2 -3
  151. package/docs/usage/providers/anthropic.zh-CN.mdx +2 -2
  152. package/docs/usage/providers/azure.mdx +2 -3
  153. package/docs/usage/providers/azureai.mdx +4 -2
  154. package/docs/usage/providers/azureai.zh-CN.mdx +2 -1
  155. package/docs/usage/providers/baichuan.mdx +2 -3
  156. package/docs/usage/providers/bedrock.mdx +2 -3
  157. package/docs/usage/providers/cloudflare.mdx +3 -2
  158. package/docs/usage/providers/deepseek.mdx +2 -2
  159. package/docs/usage/providers/fireworksai.mdx +2 -2
  160. package/docs/usage/providers/giteeai.mdx +2 -2
  161. package/docs/usage/providers/github.mdx +1 -1
  162. package/docs/usage/providers/github.zh-CN.mdx +1 -1
  163. package/docs/usage/providers/google.mdx +2 -3
  164. package/docs/usage/providers/groq.mdx +2 -2
  165. package/docs/usage/providers/hunyuan.mdx +2 -2
  166. package/docs/usage/providers/infiniai.zh-CN.mdx +3 -1
  167. package/docs/usage/providers/internlm.mdx +2 -2
  168. package/docs/usage/providers/jina.mdx +4 -3
  169. package/docs/usage/providers/jina.zh-CN.mdx +2 -2
  170. package/docs/usage/providers/lmstudio.mdx +2 -2
  171. package/docs/usage/providers/lmstudio.zh-CN.mdx +2 -4
  172. package/docs/usage/providers/minimax.mdx +2 -3
  173. package/docs/usage/providers/minimax.zh-CN.mdx +2 -2
  174. package/docs/usage/providers/mistral.mdx +2 -3
  175. package/docs/usage/providers/modelscope.mdx +4 -0
  176. package/docs/usage/providers/modelscope.zh-CN.mdx +4 -0
  177. package/docs/usage/providers/moonshot.mdx +2 -3
  178. package/docs/usage/providers/novita.mdx +2 -3
  179. package/docs/usage/providers/novita.zh-CN.mdx +2 -2
  180. package/docs/usage/providers/nvidia.mdx +3 -2
  181. package/docs/usage/providers/ollama/gemma.mdx +2 -3
  182. package/docs/usage/providers/ollama/gemma.zh-CN.mdx +2 -2
  183. package/docs/usage/providers/ollama.mdx +2 -2
  184. package/docs/usage/providers/openai.mdx +5 -5
  185. package/docs/usage/providers/openai.zh-CN.mdx +3 -3
  186. package/docs/usage/providers/openrouter.mdx +2 -3
  187. package/docs/usage/providers/perplexity.mdx +2 -2
  188. package/docs/usage/providers/ppio.mdx +5 -6
  189. package/docs/usage/providers/ppio.zh-CN.mdx +6 -6
  190. package/docs/usage/providers/qiniu.mdx +6 -6
  191. package/docs/usage/providers/qiniu.zh-CN.mdx +2 -1
  192. package/docs/usage/providers/qwen.mdx +2 -4
  193. package/docs/usage/providers/sambanova.mdx +2 -1
  194. package/docs/usage/providers/sensenova.mdx +2 -2
  195. package/docs/usage/providers/siliconcloud.mdx +2 -2
  196. package/docs/usage/providers/stepfun.mdx +2 -3
  197. package/docs/usage/providers/taichu.mdx +2 -3
  198. package/docs/usage/providers/togetherai.mdx +2 -2
  199. package/docs/usage/providers/vllm.mdx +15 -12
  200. package/docs/usage/providers/vllm.zh-CN.mdx +9 -7
  201. package/docs/usage/providers/volcengine.mdx +16 -14
  202. package/docs/usage/providers/wenxin.mdx +2 -2
  203. package/docs/usage/providers/xai.mdx +2 -2
  204. package/docs/usage/providers/zeroone.mdx +2 -3
  205. package/docs/usage/providers/zeroone.zh-CN.mdx +2 -2
  206. package/docs/usage/providers/zhipu.mdx +2 -3
  207. package/docs/usage/providers/zhipu.zh-CN.mdx +1 -1
  208. package/docs/usage/providers.mdx +2 -3
  209. package/docs/usage/start.mdx +2 -3
  210. package/docs/usage/tools-calling/anthropic.mdx +2 -2
  211. package/docs/usage/tools-calling/anthropic.zh-CN.mdx +2 -2
  212. package/docs/usage/tools-calling/google.mdx +2 -2
  213. package/docs/usage/tools-calling/google.zh-CN.mdx +4 -4
  214. package/docs/usage/tools-calling/groq.zh-CN.mdx +2 -2
  215. package/docs/usage/tools-calling/openai.mdx +2 -2
  216. package/docs/usage/tools-calling/openai.zh-CN.mdx +2 -2
  217. package/package.json +1 -1
  218. package/packages/web-crawler/src/crawImpl/exa.ts +93 -0
  219. package/packages/web-crawler/src/crawImpl/firecrawl.ts +97 -0
  220. package/packages/web-crawler/src/crawImpl/index.ts +6 -0
  221. package/packages/web-crawler/src/crawImpl/tavily.ts +94 -0
  222. package/src/app/(backend)/webapi/user/avatar/[id]/[image]/route.ts +1 -1
  223. package/src/app/[variants]/(main)/repos/[id]/_layout/Mobile.tsx +7 -7
  224. package/src/config/aiModels/deepseek.ts +1 -0
  225. package/src/config/aiModels/hunyuan.ts +1 -0
  226. package/src/config/aiModels/mistral.ts +1 -2
  227. package/src/config/aiModels/modelscope.ts +3 -3
  228. package/src/config/aiModels/novita.ts +23 -22
  229. package/src/config/aiModels/openrouter.ts +1 -0
  230. package/src/config/aiModels/qwen.ts +11 -11
  231. package/src/config/aiModels/siliconcloud.ts +7 -6
  232. package/src/config/aiModels/vertexai.ts +2 -2
  233. package/src/config/aiModels/wenxin.ts +1 -2
  234. package/src/config/modelProviders/baichuan.ts +3 -0
  235. package/src/config/modelProviders/fireworksai.ts +3 -0
  236. package/src/config/modelProviders/giteeai.ts +3 -0
  237. package/src/config/modelProviders/github.ts +1 -2
  238. package/src/config/modelProviders/groq.ts +0 -3
  239. package/src/config/modelProviders/hunyuan.ts +3 -0
  240. package/src/config/modelProviders/infiniai.ts +0 -3
  241. package/src/config/modelProviders/internlm.ts +3 -0
  242. package/src/config/modelProviders/minimax.ts +3 -4
  243. package/src/config/modelProviders/modelscope.ts +3 -3
  244. package/src/config/modelProviders/moonshot.ts +0 -7
  245. package/src/config/modelProviders/novita.ts +3 -0
  246. package/src/config/modelProviders/openrouter.ts +0 -4
  247. package/src/config/modelProviders/perplexity.ts +0 -3
  248. package/src/config/modelProviders/qiniu.ts +0 -3
  249. package/src/config/modelProviders/qwen.ts +0 -3
  250. package/src/config/modelProviders/sensenova.ts +3 -0
  251. package/src/config/modelProviders/siliconcloud.ts +0 -3
  252. package/src/config/modelProviders/spark.ts +0 -5
  253. package/src/config/modelProviders/stepfun.ts +3 -6
  254. package/src/config/modelProviders/taichu.ts +3 -0
  255. package/src/config/modelProviders/tencentcloud.ts +3 -0
  256. package/src/config/modelProviders/togetherai.ts +3 -0
  257. package/src/config/modelProviders/upstage.ts +3 -0
  258. package/src/config/modelProviders/wenxin.ts +3 -4
  259. package/src/config/modelProviders/xai.ts +0 -3
  260. package/src/config/modelProviders/zhipu.ts +3 -0
  261. package/src/database/client/migrations.json +10 -0
  262. package/src/database/migrations/0023_remove_param_and_doubao.sql +6 -0
  263. package/src/database/migrations/meta/0014_snapshot.json +182 -539
  264. package/src/database/migrations/meta/0016_snapshot.json +182 -539
  265. package/src/database/migrations/meta/0023_snapshot.json +5340 -0
  266. package/src/database/migrations/meta/_journal.json +7 -0
  267. package/src/database/repositories/dataImporter/__tests__/fixtures/with-client-id.json +13 -58
  268. package/src/features/ChatInput/ActionBar/Model/ControlsForm.tsx +1 -8
  269. package/src/features/ChatInput/ActionBar/Model/index.tsx +8 -16
  270. package/src/features/ChatInput/ActionBar/Search/Controls.tsx +4 -12
  271. package/src/features/ChatInput/ActionBar/Search/FCSearchModel.tsx +1 -7
  272. package/src/features/ChatInput/ActionBar/Search/index.tsx +2 -4
  273. package/src/features/ModelSwitchPanel/index.tsx +1 -4
  274. package/src/libs/model-runtime/anthropic/index.test.ts +4 -2
  275. package/src/libs/model-runtime/utils/streams/anthropic.ts +12 -11
  276. package/src/libs/model-runtime/utils/streams/openai.ts +6 -4
  277. package/src/libs/model-runtime/utils/streams/protocol.ts +1 -1
  278. package/src/libs/model-runtime/utils/streams/spark.test.ts +1 -1
  279. package/src/libs/model-runtime/utils/streams/spark.ts +1 -2
  280. package/src/middleware.ts +1 -1
  281. package/src/server/services/search/impls/bocha/index.ts +124 -0
  282. package/src/server/services/search/impls/bocha/type.ts +47 -0
  283. package/src/server/services/search/impls/exa/index.ts +129 -0
  284. package/src/server/services/search/impls/exa/type.ts +39 -0
  285. package/src/server/services/search/impls/firecrawl/index.ts +128 -0
  286. package/src/server/services/search/impls/firecrawl/type.ts +35 -0
  287. package/src/server/services/search/impls/index.ts +31 -0
  288. package/src/server/services/search/impls/jina/index.ts +109 -0
  289. package/src/server/services/search/impls/jina/type.ts +26 -0
  290. package/src/server/services/search/impls/tavily/index.ts +124 -0
  291. package/src/server/services/search/impls/tavily/type.ts +36 -0
  292. package/src/server/services/user/index.ts +3 -4
  293. package/src/services/__tests__/assistant.test.ts +4 -6
  294. package/src/services/__tests__/tool.test.ts +3 -1
  295. package/src/store/user/slices/auth/selectors.ts +1 -1
  296. package/src/store/user/slices/common/action.test.ts +1 -1
  297. package/src/tools/web-browsing/index.ts +1 -7
@@ -1,9 +1,8 @@
1
1
  ---
2
2
  title: Using 01 AI API Key in LobeChat
3
3
  description: >-
4
- Learn how to integrate and use 01 AI in LobeChat with step-by-step
5
- instructions. Obtain an API key, configure 01 AI, and start conversations with
6
- AI models.
4
+ Learn how to integrate and use 01 AI in LobeChat with step-by-step instructions. Obtain an API key, configure 01 AI, and start conversations with AI models.
5
+
7
6
  tags:
8
7
  - 01.AI
9
8
  - Web UI
@@ -1,8 +1,8 @@
1
1
  ---
2
2
  title: 在 LobeChat 中使用 01.AI 零一万物 API Key
3
3
  description: >-
4
- 学习如何在 LobeChat 中配置并使用 01.AI 零一万物提供的 AI 模型进行对话。获取 API 密钥、填入设置项、选择模型,开始与 AI
5
- 助手交流。
4
+ 学习如何在 LobeChat 中配置并使用 01.AI 零一万物提供的 AI 模型进行对话。获取 API 密钥、填入设置项、选择模型,开始与 AI 助手交流。
5
+
6
6
  tags:
7
7
  - LobeChat
8
8
  - 01.AI
@@ -1,9 +1,8 @@
1
1
  ---
2
2
  title: Using Zhipu ChatGLM API Key in LobeChat
3
3
  description: >-
4
- Learn how to integrate and utilize Zhipu AI models in LobeChat for enhanced
5
- conversational experiences. Obtain the API key, configure settings, and start
6
- engaging with cognitive intelligence.
4
+ Learn how to integrate and utilize Zhipu AI models in LobeChat for enhanced conversational experiences. Obtain the API key, configure settings, and start engaging with cognitive intelligence.
5
+
7
6
  tags:
8
7
  - Zhipu AI
9
8
  - ChatGLM
@@ -35,7 +35,7 @@ tags:
35
35
  - 打开智谱 AI 并填入获得的 API 密钥
36
36
  - 为你的助手选择一个智谱 AI 的模型即可开始对话
37
37
 
38
- <Image alt={' 选择并使用智谱AI模型 '} inStep src={ 'https://github.com/lobehub/lobe-chat/assets/34400653/b83da559-73d1-4734-87d5-5e22955a9da2' } />
38
+ <Image alt={' 选择并使用智谱AI模型 '} inStep src={'https://github.com/lobehub/lobe-chat/assets/34400653/b83da559-73d1-4734-87d5-5e22955a9da2'} />
39
39
 
40
40
  <Callout type={'warning'}>
41
41
  在使用过程中你可能需要向 API 服务提供商付费,请参考智谱 AI 的费用政策。
@@ -1,9 +1,8 @@
1
1
  ---
2
2
  title: Enhancing LobeChat with Multiple Model Providers for AI Conversations
3
3
  description: >-
4
- Discover how LobeChat offers diverse AI conversation options by supporting
5
- multiple model providers, providing flexibility and a wide range of choices
6
- for users and developers.
4
+ Discover how LobeChat offers diverse AI conversation options by supporting multiple model providers, providing flexibility and a wide range of choices for users and developers.
5
+
7
6
  tags:
8
7
  - LobeChat
9
8
  - AI Conversations
@@ -1,9 +1,8 @@
1
1
  ---
2
2
  title: Get started with LobeChat
3
3
  description: >-
4
- Explore the exciting features in LobeChat, including Vision Model, TTS & STT,
5
- Local LLMs, and Multi AI Providers. Discover more about Agent Market, Plugin
6
- System, and Personalization.
4
+ Explore the exciting features in LobeChat, including Vision Model, TTS & STT, Local LLMs, and Multi AI Providers. Discover more about Agent Market, Plugin System, and Personalization.
5
+
7
6
  tags:
8
7
  - Feature Overview
9
8
  - Vision Model
@@ -1,8 +1,8 @@
1
1
  ---
2
2
  title: Anthropic Claude 系列 Tools Calling 评测
3
3
  description: >-
4
- 使用 LobeChat 测试 Anthropic Claude 系列模型(Claude 3.5 sonnet / Claude 3 Opus /
5
- Claude 3 haiku) 的工具调用(Function Calling)能力,并展现评测结果
4
+ 使用 LobeChat 测试 Anthropic Claude 系列模型(Claude 3.5 sonnet / Claude 3 Opus / Claude 3 haiku) 的工具调用(Function Calling)能力,并展现评测结果
5
+
6
6
  tags:
7
7
  - Tools Calling
8
8
  - Benchmark
@@ -1,8 +1,8 @@
1
1
  ---
2
2
  title: Anthropic Claude 系列 Tools Calling 评测
3
3
  description: >-
4
- 使用 LobeChat 测试 Anthropic Claude 系列模型(Claude 3.5 sonnet / Claude 3 Opus /
5
- Claude 3 haiku) 的工具调用(Function Calling)能力,并展现评测结果
4
+ 使用 LobeChat 测试 Anthropic Claude 系列模型(Claude 3.5 sonnet / Claude 3 Opus / Claude 3 haiku) 的工具调用(Function Calling)能力,并展现评测结果
5
+
6
6
  tags:
7
7
  - Tools Calling
8
8
  - Benchmark
@@ -1,8 +1,8 @@
1
1
  ---
2
2
  title: Google Gemini 系列 Tool Calling 评测
3
3
  description: >-
4
- 使用 LobeChat 测试 Google Gemini 系列模型(Gemini 1.5 Pro / Gemini 1.5 Flash)
5
- 的工具调用(Function Calling)能力,并展现评测结果
4
+ 使用 LobeChat 测试 Google Gemini 系列模型(Gemini 1.5 Pro / Gemini 1.5 Flash) 的工具调用(Function Calling)能力,并展现评测结果
5
+
6
6
  tags:
7
7
  - Tools Calling
8
8
  - Benchmark
@@ -1,8 +1,8 @@
1
1
  ---
2
2
  title: Google Gemini 系列 Tools Calling 评测
3
3
  description: >-
4
- 使用 LobeChat 测试 Google Gemini 系列模型(Gemini 1.5 Pro / Gemini 1.5
5
- Flash)的工具调用(Function Calling)能力,并展现评测结果
4
+ 使用 LobeChat 测试 Google Gemini 系列模型(Gemini 1.5 Pro / Gemini 1.5 Flash)的工具调用(Function Calling)能力,并展现评测结果
5
+
6
6
  tags:
7
7
  - Tools Calling
8
8
  - Benchmark
@@ -21,8 +21,8 @@ Google Gemini 系列模型 Tools Calling 能力一览:
21
21
  | Gemini 1.5 Flash | ❌ | ❌ | ❌ | ⛔ | ⛔ |
22
22
 
23
23
  <Callout type={'important'}>
24
- 根据我们的的实际测试,强烈建议不要给 Gemini 开启插件,因为目前(截止 2024.07.07)它的 Tools Calling
25
- 能力实在太烂了。
24
+ 根据我们的的实际测试,强烈建议不要给 Gemini 开启插件,因为目前(截止 2024.07.07)它的 Tools
25
+ Calling 能力实在太烂了。
26
26
  </Callout>
27
27
 
28
28
  ## Gemini 1.5 Pro
@@ -1,8 +1,8 @@
1
1
  ---
2
2
  title: Groq Tools Calling
3
3
  description: >-
4
- 了解 Groq 平台模型 Tools Calling的能力一览,包括LLAMA3 70B、LLAMA3
5
- 8B和Mixtral-8x7B的简单和复杂指令调用情况。
4
+ 了解 Groq 平台模型 Tools Calling的能力一览,包括LLAMA3 70B、LLAMA3 8B和Mixtral-8x7B的简单和复杂指令调用情况。
5
+
6
6
  tags:
7
7
  - Groq 平台模型
8
8
  - Tools Calling
@@ -1,8 +1,8 @@
1
1
  ---
2
2
  title: OpenAI GPT 系列 Tools Calling 评测
3
3
  description: >-
4
- 使用 LobeChat 测试 OpenAI GPT 系列模型(GPT 3.5-turbo / GPT-4 /GPT-4o) 的工具调用(Function
5
- Calling)能力,并展现评测结果
4
+ 使用 LobeChat 测试 OpenAI GPT 系列模型(GPT 3.5-turbo / GPT-4 /GPT-4o) 的工具调用(Function Calling)能力,并展现评测结果
5
+
6
6
  tags:
7
7
  - Tools Calling
8
8
  - Benchmark
@@ -1,8 +1,8 @@
1
1
  ---
2
2
  title: OpenAI GPT 系列 Tools Calling 评测
3
3
  description: >-
4
- 使用 LobeChat 测试 OpenAI GPT 系列模型(GPT 3.5-turbo / GPT-4 /GPT-4o) 的工具调用(Function
5
- Calling)能力,并展现评测结果
4
+ 使用 LobeChat 测试 OpenAI GPT 系列模型(GPT 3.5-turbo / GPT-4 /GPT-4o) 的工具调用(Function Calling)能力,并展现评测结果
5
+
6
6
  tags:
7
7
  - Tools Calling
8
8
  - Benchmark
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lobehub/chat",
3
- "version": "1.90.4",
3
+ "version": "1.91.1",
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",
@@ -0,0 +1,93 @@
1
+ import { CrawlImpl, CrawlSuccessResult } from '../type';
2
+ import { NetworkConnectionError, PageNotFoundError, TimeoutError } from '../utils/errorType';
3
+ import { DEFAULT_TIMEOUT, withTimeout } from '../utils/withTimeout';
4
+
5
+ interface ExaResults {
6
+ author?: string;
7
+ favicon?: string;
8
+ id?: string;
9
+ image?: string;
10
+ publishedDate?: string;
11
+ summary?: string;
12
+ text: string;
13
+ title: string;
14
+ url: string;
15
+ }
16
+
17
+ interface ExaResponse {
18
+ requestId?: string;
19
+ results: ExaResults[];
20
+ }
21
+
22
+ export const exa: CrawlImpl = async (url) => {
23
+ // Get API key from environment variable
24
+ const apiKey = process.env.EXA_API_KEY;
25
+
26
+ let res: Response;
27
+
28
+ try {
29
+ res = await withTimeout(
30
+ fetch('https://api.exa.ai/contents', {
31
+ body: JSON.stringify({
32
+ livecrawl: 'fallback', // always, fallback
33
+ text: true,
34
+ urls: [url],
35
+ }),
36
+ headers: {
37
+ 'Content-Type': 'application/json',
38
+ 'x-api-key': !apiKey ? '' : apiKey,
39
+ },
40
+ method: 'POST',
41
+ }),
42
+ DEFAULT_TIMEOUT,
43
+ );
44
+ } catch (e) {
45
+ const error = e as Error;
46
+ if (error.message === 'fetch failed') {
47
+ throw new NetworkConnectionError();
48
+ }
49
+
50
+ if (error instanceof TimeoutError) {
51
+ throw error;
52
+ }
53
+
54
+ throw e;
55
+ }
56
+
57
+ if (!res.ok) {
58
+ if (res.status === 404) {
59
+ throw new PageNotFoundError(res.statusText);
60
+ }
61
+
62
+ throw new Error(`Exa request failed with status ${res.status}: ${res.statusText}`);
63
+ }
64
+
65
+ try {
66
+ const data = (await res.json()) as ExaResponse;
67
+
68
+ if (!data.results || data.results.length === 0) {
69
+ console.warn( 'Exa API returned no results for URL:', url )
70
+ return
71
+ }
72
+
73
+ const firstResult = data.results[0];
74
+
75
+ // Check if content is empty or too short
76
+ if (!firstResult.text || firstResult.text.length < 100) {
77
+ return;
78
+ }
79
+
80
+ return {
81
+ content: firstResult.text,
82
+ contentType: 'text',
83
+ length: firstResult.text.length,
84
+ siteName: new URL(url).hostname,
85
+ title: firstResult.title,
86
+ url: firstResult.url || url,
87
+ } satisfies CrawlSuccessResult;
88
+ } catch (error) {
89
+ console.error(error);
90
+ }
91
+
92
+ return;
93
+ };
@@ -0,0 +1,97 @@
1
+ import { CrawlImpl, CrawlSuccessResult } from '../type';
2
+ import { NetworkConnectionError, PageNotFoundError, TimeoutError } from '../utils/errorType';
3
+ import { DEFAULT_TIMEOUT, withTimeout } from '../utils/withTimeout';
4
+
5
+ interface FirecrawlMetadata {
6
+ description: string;
7
+ keywords: string;
8
+ language: string;
9
+ ogDescription?: string;
10
+ ogImage?: string;
11
+ ogLocaleAlternate?: string[];
12
+ ogSiteName?: string;
13
+ ogTitle?: string;
14
+ ogUrl?: string;
15
+ robots: string;
16
+ statusCode: number;
17
+ sourceURL: string;
18
+ title: string;
19
+ }
20
+
21
+ interface FirecrawlResults {
22
+ html?: string;
23
+ markdown?: string;
24
+ metadata: FirecrawlMetadata;
25
+ }
26
+
27
+ interface FirecrawlResponse {
28
+ success: boolean;
29
+ data: FirecrawlResults;
30
+ }
31
+
32
+ export const firecrawl: CrawlImpl = async (url) => {
33
+ // Get API key from environment variable
34
+ const apiKey = process.env.FIRECRAWL_API_KEY;
35
+ const baseUrl = process.env.FIRECRAWL_URL || 'https://api.firecrawl.dev/v1';
36
+
37
+ let res: Response;
38
+
39
+ try {
40
+ res = await withTimeout(
41
+ fetch(`${baseUrl}/scrape`, {
42
+ body: JSON.stringify({
43
+ formats: ["markdown"], // ["markdown", "html"]
44
+ url,
45
+ }),
46
+ headers: {
47
+ 'Authorization': !apiKey ? '' : `Bearer ${apiKey}`,
48
+ 'Content-Type': 'application/json',
49
+ },
50
+ method: 'POST',
51
+ }),
52
+ DEFAULT_TIMEOUT,
53
+ );
54
+ } catch (e) {
55
+ const error = e as Error;
56
+ if (error.message === 'fetch failed') {
57
+ throw new NetworkConnectionError();
58
+ }
59
+
60
+ if (error instanceof TimeoutError) {
61
+ throw error;
62
+ }
63
+
64
+ throw e;
65
+ }
66
+
67
+ if (!res.ok) {
68
+ if (res.status === 404) {
69
+ throw new PageNotFoundError(res.statusText);
70
+ }
71
+
72
+ throw new Error(`Firecrawl request failed with status ${res.status}: ${res.statusText}`);
73
+ }
74
+
75
+ try {
76
+ const data = (await res.json()) as FirecrawlResponse;
77
+
78
+ // Check if content is empty or too short
79
+ if (!data.data.markdown || data.data.markdown.length < 100) {
80
+ return;
81
+ }
82
+
83
+ return {
84
+ content: data.data.markdown,
85
+ contentType: 'text',
86
+ description: data.data.metadata.description,
87
+ length: data.data.markdown.length,
88
+ siteName: new URL(url).hostname,
89
+ title: data.data.metadata.title,
90
+ url: url,
91
+ } satisfies CrawlSuccessResult;
92
+ } catch (error) {
93
+ console.error(error);
94
+ }
95
+
96
+ return;
97
+ };
@@ -1,13 +1,19 @@
1
1
  import { browserless } from './browserless';
2
+ import { exa } from './exa';
3
+ import { firecrawl } from './firecrawl';
2
4
  import { jina } from './jina';
3
5
  import { naive } from './naive';
4
6
  import { search1api } from './search1api';
7
+ import { tavily } from './tavily';
5
8
 
6
9
  export const crawlImpls = {
7
10
  browserless,
11
+ exa,
12
+ firecrawl,
8
13
  jina,
9
14
  naive,
10
15
  search1api,
16
+ tavily,
11
17
  };
12
18
 
13
19
  export type CrawlImplType = keyof typeof crawlImpls;
@@ -0,0 +1,94 @@
1
+ import { CrawlImpl, CrawlSuccessResult } from '../type';
2
+ import { NetworkConnectionError, PageNotFoundError, TimeoutError } from '../utils/errorType';
3
+ import { DEFAULT_TIMEOUT, withTimeout } from '../utils/withTimeout';
4
+
5
+ interface TavilyResults {
6
+ images?: string[];
7
+ raw_content: string;
8
+ url: string;
9
+ }
10
+
11
+ interface TavilyFailedResults {
12
+ error?: string;
13
+ url: string;
14
+ }
15
+
16
+ interface TavilyResponse {
17
+ base_url: string;
18
+ failed_results?: TavilyFailedResults[];
19
+ response_time: number;
20
+ results: TavilyResults[];
21
+ }
22
+
23
+ export const tavily: CrawlImpl = async (url) => {
24
+ // Get API key from environment variable
25
+ const apiKey = process.env.TAVILY_API_KEY;
26
+
27
+ let res: Response;
28
+
29
+ try {
30
+ res = await withTimeout(
31
+ fetch('https://api.tavily.com/extract', {
32
+ body: JSON.stringify({
33
+ extract_depth: process.env.TAVILY_EXTRACT_DEPTH || 'basic', // basic or advanced
34
+ include_images: false,
35
+ urls: url,
36
+ }),
37
+ headers: {
38
+ 'Authorization': !apiKey ? '' : `Bearer ${apiKey}`,
39
+ 'Content-Type': 'application/json',
40
+ },
41
+ method: 'POST',
42
+ }),
43
+ DEFAULT_TIMEOUT,
44
+ );
45
+ } catch (e) {
46
+ const error = e as Error;
47
+ if (error.message === 'fetch failed') {
48
+ throw new NetworkConnectionError();
49
+ }
50
+
51
+ if (error instanceof TimeoutError) {
52
+ throw error;
53
+ }
54
+
55
+ throw e;
56
+ }
57
+
58
+ if (!res.ok) {
59
+ if (res.status === 404) {
60
+ throw new PageNotFoundError(res.statusText);
61
+ }
62
+
63
+ throw new Error(`Tavily request failed with status ${res.status}: ${res.statusText}`);
64
+ }
65
+
66
+ try {
67
+ const data = (await res.json()) as TavilyResponse;
68
+
69
+ if (!data.results || data.results.length === 0) {
70
+ console.warn( 'Tavily API returned no results for URL:', url )
71
+ return
72
+ }
73
+
74
+ const firstResult = data.results[0];
75
+
76
+ // Check if content is empty or too short
77
+ if (!firstResult.raw_content || firstResult.raw_content.length < 100) {
78
+ return;
79
+ }
80
+
81
+ return {
82
+ content: firstResult.raw_content,
83
+ contentType: 'text',
84
+ length: firstResult.raw_content.length,
85
+ siteName: new URL(url).hostname,
86
+ title: new URL(url).hostname,
87
+ url: firstResult.url || url,
88
+ } satisfies CrawlSuccessResult;
89
+ } catch (error) {
90
+ console.error(error);
91
+ }
92
+
93
+ return;
94
+ };
@@ -2,7 +2,7 @@ import { UserService } from '@/server/services/user';
2
2
 
3
3
  export const runtime = 'nodejs';
4
4
 
5
- type Params = Promise<{ id: string , image: string }>;
5
+ type Params = Promise<{ id: string; image: string }>;
6
6
 
7
7
  // 扩展名到内容类型的映射
8
8
  const CONTENT_TYPE_MAP: Record<string, string> = {
@@ -22,13 +22,13 @@ const Layout = memo<LayoutProps>(({ children }) => {
22
22
 
23
23
  return (
24
24
  <Flexbox
25
- className={styles.main}
26
- height="100%"
27
- style={showMobileWorkspace ? { display: 'none' } : undefined}
28
- width="100%"
29
- >
30
- {children}
31
- </Flexbox>
25
+ className={styles.main}
26
+ height="100%"
27
+ style={showMobileWorkspace ? { display: 'none' } : undefined}
28
+ width="100%"
29
+ >
30
+ {children}
31
+ </Flexbox>
32
32
  );
33
33
  });
34
34
 
@@ -1,4 +1,5 @@
1
1
  import { AIChatModelCard } from '@/types/aiModel';
2
+
2
3
  // https://api-docs.deepseek.com/zh-cn/quick_start/pricing
3
4
  const deepseekChatModels: AIChatModelCard[] = [
4
5
  {
@@ -1,4 +1,5 @@
1
1
  import { AIChatModelCard } from '@/types/aiModel';
2
+
2
3
  // https://cloud.tencent.com/document/product/1729/104753
3
4
  const hunyuanChatModels: AIChatModelCard[] = [
4
5
  {
@@ -9,8 +9,7 @@ const mistralChatModels: AIChatModelCard[] = [
9
9
  functionCall: true,
10
10
  },
11
11
  contextWindowTokens: 128_000,
12
- description:
13
- 'Mistral Medium 3 以 8 倍的成本提供最先进的性能,并从根本上简化了企业部署。',
12
+ description: 'Mistral Medium 3 以 8 倍的成本提供最先进的性能,并从根本上简化了企业部署。',
14
13
  displayName: 'Mistral Medium 3',
15
14
  enabled: true,
16
15
  id: 'mistral-medium-latest',
@@ -6,10 +6,10 @@ const modelscopeChatModels: AIChatModelCard[] = [
6
6
  functionCall: true,
7
7
  },
8
8
  contextWindowTokens: 131_072,
9
- description: 'DeepSeek-V3是DeepSeek第三代模型,在多项基准测试中表现优异。',
10
- displayName: 'DeepSeek-V3-0324',
9
+ description: 'DeepSeek R1 通过利用增加的计算资源和在后训练过程中引入算法优化机制,显著提高了其推理和推断能力的深度。该模型在各种基准评估中表现出色,包括数学、编程和一般逻辑方面。其整体性能现已接近领先模型,如 O3 和 Gemini 2.5 Pro。',
10
+ displayName: 'DeepSeek-R1-0528',
11
11
  enabled: true,
12
- id: 'deepseek-ai/DeepSeek-V3-0324',
12
+ id: 'deepseek-ai/DeepSeek-R1-0528',
13
13
  type: 'chat',
14
14
  },
15
15
  {