@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.
- package/CHANGELOG.md +58 -0
- package/changelog/v1.json +21 -0
- package/docs/changelog/2023-09-09-plugin-system.mdx +2 -3
- package/docs/changelog/2023-11-14-gpt4-vision.mdx +4 -6
- package/docs/changelog/2023-11-19-tts-stt.mdx +2 -3
- package/docs/changelog/2023-12-22-dalle-3.mdx +2 -5
- package/docs/changelog/2023-12-22-dalle-3.zh-CN.mdx +2 -2
- package/docs/changelog/2024-02-08-sso-oauth.mdx +2 -2
- package/docs/changelog/2024-06-19-lobe-chat-v1.mdx +2 -3
- package/docs/changelog/2024-06-19-lobe-chat-v1.zh-CN.mdx +2 -2
- package/docs/changelog/2024-07-19-gpt-4o-mini.mdx +2 -3
- package/docs/changelog/2024-07-19-gpt-4o-mini.zh-CN.mdx +2 -2
- package/docs/changelog/2024-08-02-lobe-chat-database-docker.mdx +2 -3
- package/docs/changelog/2024-08-21-file-upload-and-knowledge-base.mdx +4 -5
- package/docs/changelog/2024-09-13-openai-o1-models.mdx +2 -2
- package/docs/changelog/2024-09-20-artifacts.mdx +2 -3
- package/docs/changelog/2024-09-20-artifacts.zh-CN.mdx +2 -2
- package/docs/changelog/2024-10-27-pin-assistant.mdx +2 -3
- package/docs/changelog/2024-11-06-share-text-json.mdx +2 -4
- package/docs/changelog/2024-11-06-share-text-json.zh-CN.mdx +2 -2
- package/docs/changelog/2024-11-25-november-providers.mdx +2 -2
- package/docs/changelog/2024-11-27-forkable-chat.mdx +2 -2
- package/docs/changelog/2025-01-03-user-profile.mdx +2 -2
- package/docs/changelog/2025-01-22-new-ai-provider.mdx +2 -2
- package/docs/changelog/2025-02-02-deepseek-r1.mdx +4 -4
- package/docs/development/basic/add-new-authentication-providers.zh-CN.mdx +1 -2
- package/docs/development/basic/chat-api.mdx +2 -4
- package/docs/development/basic/chat-api.zh-CN.mdx +2 -4
- package/docs/development/internationalization/internationalization-implementation.mdx +10 -10
- package/docs/development/internationalization/internationalization-implementation.zh-CN.mdx +10 -10
- package/docs/self-hosting/advanced/analytics.mdx +2 -2
- package/docs/self-hosting/advanced/auth/clerk.mdx +2 -2
- package/docs/self-hosting/advanced/auth/next-auth/auth0.mdx +2 -3
- package/docs/self-hosting/advanced/auth/next-auth/authelia.mdx +2 -3
- package/docs/self-hosting/advanced/auth/next-auth/authentik.mdx +2 -3
- package/docs/self-hosting/advanced/auth/next-auth/casdoor.mdx +4 -7
- package/docs/self-hosting/advanced/auth/next-auth/casdoor.zh-CN.mdx +0 -3
- package/docs/self-hosting/advanced/auth/next-auth/cloudflare-zero-trust.mdx +2 -3
- package/docs/self-hosting/advanced/auth/next-auth/cloudflare-zero-trust.zh-CN.mdx +2 -2
- package/docs/self-hosting/advanced/auth/next-auth/github.mdx +2 -3
- package/docs/self-hosting/advanced/auth/next-auth/keycloak.mdx +12 -6
- package/docs/self-hosting/advanced/auth/next-auth/keycloak.zh-CN.mdx +5 -1
- package/docs/self-hosting/advanced/auth/next-auth/logto.mdx +8 -14
- package/docs/self-hosting/advanced/auth/next-auth/logto.zh-CN.mdx +6 -12
- package/docs/self-hosting/advanced/auth/next-auth/microsoft-entra-id.mdx +2 -3
- package/docs/self-hosting/advanced/auth/next-auth/wechat.mdx +2 -2
- package/docs/self-hosting/advanced/auth/next-auth/zitadel.mdx +2 -3
- package/docs/self-hosting/advanced/auth.mdx +2 -3
- package/docs/self-hosting/advanced/desktop.mdx +2 -1
- package/docs/self-hosting/advanced/desktop.zh-CN.mdx +1 -3
- package/docs/self-hosting/advanced/feature-flags.mdx +2 -3
- package/docs/self-hosting/advanced/knowledge-base.mdx +4 -3
- package/docs/self-hosting/advanced/model-list.mdx +11 -10
- package/docs/self-hosting/advanced/model-list.zh-CN.mdx +10 -9
- package/docs/self-hosting/advanced/observability/langfuse.mdx +2 -3
- package/docs/self-hosting/advanced/online-search.mdx +11 -10
- package/docs/self-hosting/advanced/online-search.zh-CN.mdx +7 -7
- package/docs/self-hosting/advanced/s3/tencent-cloud.mdx +2 -2
- package/docs/self-hosting/advanced/settings-url-share.mdx +2 -3
- package/docs/self-hosting/advanced/upstream-sync.mdx +2 -3
- package/docs/self-hosting/advanced/webrtc.mdx +2 -2
- package/docs/self-hosting/environment-variables/analytics.mdx +2 -3
- package/docs/self-hosting/environment-variables/auth.mdx +2 -3
- package/docs/self-hosting/environment-variables/basic.mdx +4 -5
- package/docs/self-hosting/environment-variables/basic.zh-CN.mdx +2 -2
- package/docs/self-hosting/environment-variables/model-provider.mdx +2 -3
- package/docs/self-hosting/environment-variables/s3.mdx +3 -5
- package/docs/self-hosting/environment-variables.mdx +2 -2
- package/docs/self-hosting/examples/azure-openai.mdx +2 -2
- package/docs/self-hosting/examples/ollama.mdx +2 -3
- package/docs/self-hosting/faq/no-v1-suffix.mdx +4 -4
- package/docs/self-hosting/faq/proxy-with-unable-to-verify-leaf-signature.mdx +2 -3
- package/docs/self-hosting/platform/alibaba-cloud.mdx +2 -3
- package/docs/self-hosting/platform/btpanel.mdx +5 -5
- package/docs/self-hosting/platform/btpanel.zh-CN.mdx +4 -3
- package/docs/self-hosting/platform/docker-compose.mdx +2 -3
- package/docs/self-hosting/platform/docker-compose.zh-CN.mdx +0 -2
- package/docs/self-hosting/platform/docker.mdx +2 -2
- package/docs/self-hosting/platform/netlify.mdx +2 -4
- package/docs/self-hosting/platform/netlify.zh-CN.mdx +2 -2
- package/docs/self-hosting/platform/railway.mdx +2 -3
- package/docs/self-hosting/platform/repocloud.mdx +2 -3
- package/docs/self-hosting/platform/sealos.mdx +2 -2
- package/docs/self-hosting/platform/tencentcloud-lighthouse.mdx +2 -3
- package/docs/self-hosting/platform/vercel.mdx +2 -3
- package/docs/self-hosting/platform/zeabur.mdx +2 -2
- package/docs/self-hosting/server-database/docker-compose.mdx +65 -44
- package/docs/self-hosting/server-database/docker-compose.zh-CN.mdx +48 -55
- package/docs/self-hosting/server-database/docker.mdx +2 -2
- package/docs/self-hosting/server-database/docker.zh-CN.mdx +2 -2
- package/docs/self-hosting/server-database/dokploy.mdx +4 -5
- package/docs/self-hosting/server-database/dokploy.zh-CN.mdx +137 -138
- package/docs/self-hosting/server-database/netlify.mdx +2 -2
- package/docs/self-hosting/server-database/netlify.zh-CN.mdx +2 -2
- package/docs/self-hosting/server-database/railway.mdx +2 -2
- package/docs/self-hosting/server-database/repocloud.mdx +2 -2
- package/docs/self-hosting/server-database/sealos.mdx +4 -5
- package/docs/self-hosting/server-database/sealos.zh-CN.mdx +18 -20
- package/docs/self-hosting/server-database/vercel.mdx +5 -3
- package/docs/self-hosting/server-database/vercel.zh-CN.mdx +2 -2
- package/docs/self-hosting/server-database/zeabur.mdx +2 -2
- package/docs/self-hosting/server-database.mdx +1 -1
- package/docs/self-hosting/server-database.zh-CN.mdx +2 -1
- package/docs/self-hosting/start.mdx +2 -2
- package/docs/self-hosting/start.zh-CN.mdx +2 -2
- package/docs/usage/agents/agent-organization.mdx +2 -2
- package/docs/usage/agents/concepts.mdx +4 -5
- package/docs/usage/agents/concepts.zh-CN.mdx +2 -2
- package/docs/usage/agents/custom-agent.mdx +3 -4
- package/docs/usage/agents/custom-agent.zh-CN.mdx +1 -1
- package/docs/usage/agents/model.mdx +5 -5
- package/docs/usage/agents/model.zh-CN.mdx +3 -5
- package/docs/usage/agents/prompt.mdx +4 -5
- package/docs/usage/agents/topics.mdx +3 -4
- package/docs/usage/agents/topics.zh-CN.mdx +1 -1
- package/docs/usage/features/agent-market.mdx +3 -11
- package/docs/usage/features/agent-market.zh-CN.mdx +2 -7
- package/docs/usage/features/artifacts.mdx +2 -2
- package/docs/usage/features/auth.mdx +2 -3
- package/docs/usage/features/cot.mdx +2 -2
- package/docs/usage/features/database.mdx +2 -2
- package/docs/usage/features/knowledge-base.mdx +4 -3
- package/docs/usage/features/knowledge-base.zh-CN.mdx +2 -1
- package/docs/usage/features/local-llm.mdx +2 -3
- package/docs/usage/features/mobile.mdx +2 -2
- package/docs/usage/features/more.mdx +2 -3
- package/docs/usage/features/multi-ai-providers.mdx +2 -3
- package/docs/usage/features/plugin-system.mdx +3 -11
- package/docs/usage/features/plugin-system.zh-CN.mdx +1 -8
- package/docs/usage/features/pwa.mdx +4 -4
- package/docs/usage/features/pwa.zh-CN.mdx +2 -1
- package/docs/usage/features/text-to-image.mdx +3 -11
- package/docs/usage/features/text-to-image.zh-CN.mdx +3 -10
- package/docs/usage/features/theme.mdx +2 -3
- package/docs/usage/features/tts.mdx +3 -11
- package/docs/usage/features/tts.zh-CN.mdx +1 -8
- package/docs/usage/features/vision.mdx +3 -11
- package/docs/usage/features/vision.zh-CN.mdx +1 -8
- package/docs/usage/foundation/basic.mdx +2 -3
- package/docs/usage/foundation/share.mdx +2 -3
- package/docs/usage/foundation/text2image.mdx +2 -2
- package/docs/usage/foundation/translate.mdx +2 -2
- package/docs/usage/foundation/tts-stt.mdx +2 -2
- package/docs/usage/foundation/vision.mdx +2 -3
- package/docs/usage/plugins/basic-usage.mdx +2 -3
- package/docs/usage/plugins/custom-plugin.mdx +2 -2
- package/docs/usage/plugins/development.mdx +2 -4
- package/docs/usage/plugins/store.mdx +2 -2
- package/docs/usage/providers/ai21.mdx +2 -2
- package/docs/usage/providers/anthropic.mdx +2 -3
- package/docs/usage/providers/anthropic.zh-CN.mdx +2 -2
- package/docs/usage/providers/azure.mdx +2 -3
- package/docs/usage/providers/azureai.mdx +4 -2
- package/docs/usage/providers/azureai.zh-CN.mdx +2 -1
- package/docs/usage/providers/baichuan.mdx +2 -3
- package/docs/usage/providers/bedrock.mdx +2 -3
- package/docs/usage/providers/cloudflare.mdx +3 -2
- package/docs/usage/providers/deepseek.mdx +2 -2
- package/docs/usage/providers/fireworksai.mdx +2 -2
- package/docs/usage/providers/giteeai.mdx +2 -2
- package/docs/usage/providers/github.mdx +1 -1
- package/docs/usage/providers/github.zh-CN.mdx +1 -1
- package/docs/usage/providers/google.mdx +2 -3
- package/docs/usage/providers/groq.mdx +2 -2
- package/docs/usage/providers/hunyuan.mdx +2 -2
- package/docs/usage/providers/infiniai.zh-CN.mdx +3 -1
- package/docs/usage/providers/internlm.mdx +2 -2
- package/docs/usage/providers/jina.mdx +4 -3
- package/docs/usage/providers/jina.zh-CN.mdx +2 -2
- package/docs/usage/providers/lmstudio.mdx +2 -2
- package/docs/usage/providers/lmstudio.zh-CN.mdx +2 -4
- package/docs/usage/providers/minimax.mdx +2 -3
- package/docs/usage/providers/minimax.zh-CN.mdx +2 -2
- package/docs/usage/providers/mistral.mdx +2 -3
- package/docs/usage/providers/modelscope.mdx +4 -0
- package/docs/usage/providers/modelscope.zh-CN.mdx +4 -0
- package/docs/usage/providers/moonshot.mdx +2 -3
- package/docs/usage/providers/novita.mdx +2 -3
- package/docs/usage/providers/novita.zh-CN.mdx +2 -2
- package/docs/usage/providers/nvidia.mdx +3 -2
- package/docs/usage/providers/ollama/gemma.mdx +2 -3
- package/docs/usage/providers/ollama/gemma.zh-CN.mdx +2 -2
- package/docs/usage/providers/ollama.mdx +2 -2
- package/docs/usage/providers/openai.mdx +5 -5
- package/docs/usage/providers/openai.zh-CN.mdx +3 -3
- package/docs/usage/providers/openrouter.mdx +2 -3
- package/docs/usage/providers/perplexity.mdx +2 -2
- package/docs/usage/providers/ppio.mdx +5 -6
- package/docs/usage/providers/ppio.zh-CN.mdx +6 -6
- package/docs/usage/providers/qiniu.mdx +6 -6
- package/docs/usage/providers/qiniu.zh-CN.mdx +2 -1
- package/docs/usage/providers/qwen.mdx +2 -4
- package/docs/usage/providers/sambanova.mdx +2 -1
- package/docs/usage/providers/sensenova.mdx +2 -2
- package/docs/usage/providers/siliconcloud.mdx +2 -2
- package/docs/usage/providers/stepfun.mdx +2 -3
- package/docs/usage/providers/taichu.mdx +2 -3
- package/docs/usage/providers/togetherai.mdx +2 -2
- package/docs/usage/providers/vllm.mdx +15 -12
- package/docs/usage/providers/vllm.zh-CN.mdx +9 -7
- package/docs/usage/providers/volcengine.mdx +16 -14
- package/docs/usage/providers/wenxin.mdx +2 -2
- package/docs/usage/providers/xai.mdx +2 -2
- package/docs/usage/providers/zeroone.mdx +2 -3
- package/docs/usage/providers/zeroone.zh-CN.mdx +2 -2
- package/docs/usage/providers/zhipu.mdx +2 -3
- package/docs/usage/providers/zhipu.zh-CN.mdx +1 -1
- package/docs/usage/providers.mdx +2 -3
- package/docs/usage/start.mdx +2 -3
- package/docs/usage/tools-calling/anthropic.mdx +2 -2
- package/docs/usage/tools-calling/anthropic.zh-CN.mdx +2 -2
- package/docs/usage/tools-calling/google.mdx +2 -2
- package/docs/usage/tools-calling/google.zh-CN.mdx +4 -4
- package/docs/usage/tools-calling/groq.zh-CN.mdx +2 -2
- package/docs/usage/tools-calling/openai.mdx +2 -2
- package/docs/usage/tools-calling/openai.zh-CN.mdx +2 -2
- package/package.json +1 -1
- package/packages/web-crawler/src/crawImpl/exa.ts +93 -0
- package/packages/web-crawler/src/crawImpl/firecrawl.ts +97 -0
- package/packages/web-crawler/src/crawImpl/index.ts +6 -0
- package/packages/web-crawler/src/crawImpl/tavily.ts +94 -0
- package/src/app/(backend)/webapi/user/avatar/[id]/[image]/route.ts +1 -1
- package/src/app/[variants]/(main)/repos/[id]/_layout/Mobile.tsx +7 -7
- package/src/config/aiModels/deepseek.ts +1 -0
- package/src/config/aiModels/hunyuan.ts +1 -0
- package/src/config/aiModels/mistral.ts +1 -2
- package/src/config/aiModels/modelscope.ts +3 -3
- package/src/config/aiModels/novita.ts +23 -22
- package/src/config/aiModels/openrouter.ts +1 -0
- package/src/config/aiModels/qwen.ts +11 -11
- package/src/config/aiModels/siliconcloud.ts +7 -6
- package/src/config/aiModels/vertexai.ts +2 -2
- package/src/config/aiModels/wenxin.ts +1 -2
- package/src/config/modelProviders/baichuan.ts +3 -0
- package/src/config/modelProviders/fireworksai.ts +3 -0
- package/src/config/modelProviders/giteeai.ts +3 -0
- package/src/config/modelProviders/github.ts +1 -2
- package/src/config/modelProviders/groq.ts +0 -3
- package/src/config/modelProviders/hunyuan.ts +3 -0
- package/src/config/modelProviders/infiniai.ts +0 -3
- package/src/config/modelProviders/internlm.ts +3 -0
- package/src/config/modelProviders/minimax.ts +3 -4
- package/src/config/modelProviders/modelscope.ts +3 -3
- package/src/config/modelProviders/moonshot.ts +0 -7
- package/src/config/modelProviders/novita.ts +3 -0
- package/src/config/modelProviders/openrouter.ts +0 -4
- package/src/config/modelProviders/perplexity.ts +0 -3
- package/src/config/modelProviders/qiniu.ts +0 -3
- package/src/config/modelProviders/qwen.ts +0 -3
- package/src/config/modelProviders/sensenova.ts +3 -0
- package/src/config/modelProviders/siliconcloud.ts +0 -3
- package/src/config/modelProviders/spark.ts +0 -5
- package/src/config/modelProviders/stepfun.ts +3 -6
- package/src/config/modelProviders/taichu.ts +3 -0
- package/src/config/modelProviders/tencentcloud.ts +3 -0
- package/src/config/modelProviders/togetherai.ts +3 -0
- package/src/config/modelProviders/upstage.ts +3 -0
- package/src/config/modelProviders/wenxin.ts +3 -4
- package/src/config/modelProviders/xai.ts +0 -3
- package/src/config/modelProviders/zhipu.ts +3 -0
- package/src/database/client/migrations.json +10 -0
- package/src/database/migrations/0023_remove_param_and_doubao.sql +6 -0
- package/src/database/migrations/meta/0014_snapshot.json +182 -539
- package/src/database/migrations/meta/0016_snapshot.json +182 -539
- package/src/database/migrations/meta/0023_snapshot.json +5340 -0
- package/src/database/migrations/meta/_journal.json +7 -0
- package/src/database/repositories/dataImporter/__tests__/fixtures/with-client-id.json +13 -58
- package/src/features/ChatInput/ActionBar/Model/ControlsForm.tsx +1 -8
- package/src/features/ChatInput/ActionBar/Model/index.tsx +8 -16
- package/src/features/ChatInput/ActionBar/Search/Controls.tsx +4 -12
- package/src/features/ChatInput/ActionBar/Search/FCSearchModel.tsx +1 -7
- package/src/features/ChatInput/ActionBar/Search/index.tsx +2 -4
- package/src/features/ModelSwitchPanel/index.tsx +1 -4
- package/src/libs/model-runtime/anthropic/index.test.ts +4 -2
- package/src/libs/model-runtime/utils/streams/anthropic.ts +12 -11
- package/src/libs/model-runtime/utils/streams/openai.ts +6 -4
- package/src/libs/model-runtime/utils/streams/protocol.ts +1 -1
- package/src/libs/model-runtime/utils/streams/spark.test.ts +1 -1
- package/src/libs/model-runtime/utils/streams/spark.ts +1 -2
- package/src/middleware.ts +1 -1
- package/src/server/services/search/impls/bocha/index.ts +124 -0
- package/src/server/services/search/impls/bocha/type.ts +47 -0
- package/src/server/services/search/impls/exa/index.ts +129 -0
- package/src/server/services/search/impls/exa/type.ts +39 -0
- package/src/server/services/search/impls/firecrawl/index.ts +128 -0
- package/src/server/services/search/impls/firecrawl/type.ts +35 -0
- package/src/server/services/search/impls/index.ts +31 -0
- package/src/server/services/search/impls/jina/index.ts +109 -0
- package/src/server/services/search/impls/jina/type.ts +26 -0
- package/src/server/services/search/impls/tavily/index.ts +124 -0
- package/src/server/services/search/impls/tavily/type.ts +36 -0
- package/src/server/services/user/index.ts +3 -4
- package/src/services/__tests__/assistant.test.ts +4 -6
- package/src/services/__tests__/tool.test.ts +3 -1
- package/src/store/user/slices/auth/selectors.ts +1 -1
- package/src/store/user/slices/common/action.test.ts +1 -1
- 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
|
-
|
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
|
-
|
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={
|
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 的费用政策。
|
package/docs/usage/providers.mdx
CHANGED
@@ -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
|
-
|
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
|
package/docs/usage/start.mdx
CHANGED
@@ -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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
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: OpenAI GPT 系列 Tools Calling 评测
|
3
3
|
description: >-
|
4
|
-
使用 LobeChat 测试 OpenAI GPT 系列模型(GPT 3.5-turbo / GPT-4 /GPT-4o) 的工具调用(Function
|
5
|
-
|
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
|
-
|
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.
|
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
|
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
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
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
|
|
@@ -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
|
10
|
-
displayName: 'DeepSeek-
|
9
|
+
description: 'DeepSeek R1 通过利用增加的计算资源和在后训练过程中引入算法优化机制,显著提高了其推理和推断能力的深度。该模型在各种基准评估中表现出色,包括数学、编程和一般逻辑方面。其整体性能现已接近领先模型,如 O3 和 Gemini 2.5 Pro。',
|
10
|
+
displayName: 'DeepSeek-R1-0528',
|
11
11
|
enabled: true,
|
12
|
-
id: 'deepseek-ai/DeepSeek-
|
12
|
+
id: 'deepseek-ai/DeepSeek-R1-0528',
|
13
13
|
type: 'chat',
|
14
14
|
},
|
15
15
|
{
|