@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.
- package/.i18nrc.js +1 -1
- package/CHANGELOG.md +50 -0
- package/changelog/v1.json +18 -0
- package/docker-compose/local/.env.example +1 -0
- package/docker-compose/local/.env.zh-CN.example +1 -0
- package/docker-compose/local/docker-compose.yml +1 -1
- package/docker-compose/local/init_data.json +994 -488
- package/docker-compose/setup.sh +3 -3
- package/locales/ar/chat.json +3 -0
- package/locales/bg-BG/chat.json +3 -0
- package/locales/de-DE/chat.json +3 -0
- package/locales/en-US/chat.json +3 -0
- package/locales/es-ES/chat.json +3 -0
- package/locales/fa-IR/chat.json +3 -0
- package/locales/fr-FR/chat.json +3 -0
- package/locales/it-IT/chat.json +3 -0
- package/locales/ja-JP/chat.json +3 -0
- package/locales/ko-KR/chat.json +3 -0
- package/locales/nl-NL/chat.json +3 -0
- package/locales/pl-PL/chat.json +3 -0
- package/locales/pt-BR/chat.json +3 -0
- package/locales/ru-RU/chat.json +3 -0
- package/locales/tr-TR/chat.json +3 -0
- package/locales/vi-VN/chat.json +3 -0
- package/locales/zh-CN/chat.json +3 -0
- package/locales/zh-TW/chat.json +3 -0
- package/package.json +3 -3
- package/packages/model-runtime/package.json +12 -0
- package/{src/libs/model-runtime → packages/model-runtime/src}/anthropic/index.ts +8 -6
- package/{src/libs/model-runtime → packages/model-runtime/src}/azureOpenai/index.ts +22 -5
- package/{src/libs/model-runtime → packages/model-runtime/src}/google/index.ts +1 -2
- package/{src/libs/model-runtime → packages/model-runtime/src}/minimax/createImage.test.ts +12 -15
- package/{src/libs/model-runtime → packages/model-runtime/src}/minimax/createImage.ts +1 -2
- package/{src/libs/model-runtime → packages/model-runtime/src}/moonshot/index.ts +1 -1
- package/{src/libs/model-runtime → packages/model-runtime/src}/openai/index.ts +4 -1
- package/{src/libs/model-runtime → packages/model-runtime/src}/qwen/createImage.ts +5 -5
- package/{src/libs/model-runtime → packages/model-runtime/src}/qwen/index.ts +2 -2
- package/{src/libs/model-runtime → packages/model-runtime/src}/sensenova/index.ts +14 -4
- package/{src/libs/model-runtime → packages/model-runtime/src}/types/chat.ts +5 -1
- package/{src/libs/model-runtime → packages/model-runtime/src}/utils/googleErrorParser.test.ts +46 -34
- package/{src/libs/model-runtime → packages/model-runtime/src}/utils/streams/openai/responsesStream.ts +14 -12
- package/{src/libs/model-runtime → packages/model-runtime/src}/utils/usageConverter.test.ts +1 -1
- package/{src/libs/model-runtime → packages/model-runtime/src}/utils/usageConverter.ts +9 -5
- package/{src/libs/model-runtime → packages/model-runtime/src}/volcengine/index.ts +4 -4
- package/packages/types/src/agent/chatConfig.ts +6 -0
- package/packages/types/src/aiModel.ts +2 -0
- package/src/app/(backend)/middleware/auth/index.test.ts +1 -1
- package/src/app/(backend)/middleware/auth/index.ts +5 -1
- package/src/app/(backend)/middleware/auth/utils.ts +1 -1
- package/src/app/(backend)/webapi/chat/[provider]/route.test.ts +1 -1
- package/src/app/(backend)/webapi/chat/[provider]/route.ts +4 -4
- package/src/app/(backend)/webapi/chat/vertexai/route.ts +2 -1
- package/src/app/(backend)/webapi/models/[provider]/pull/route.ts +1 -1
- package/src/app/(backend)/webapi/models/[provider]/route.ts +1 -1
- package/src/app/(backend)/webapi/plugin/gateway/route.ts +2 -2
- package/src/app/(backend)/webapi/text-to-image/[provider]/route.ts +1 -1
- package/src/app/[variants]/(main)/settings/llm/ProviderList/Azure/index.tsx +1 -1
- package/src/app/[variants]/(main)/settings/provider/(detail)/azure/page.tsx +1 -1
- package/src/app/[variants]/(main)/settings/provider/(detail)/azureai/page.tsx +1 -1
- package/src/components/InvalidAPIKey/APIKeyForm/Bedrock.tsx +1 -1
- package/src/components/InvalidAPIKey/APIKeyForm/index.tsx +1 -1
- package/src/config/aiModels/aihubmix.ts +10 -12
- package/src/config/aiModels/openai.ts +7 -4
- package/src/const/settings/llm.ts +2 -1
- package/src/database/models/__tests__/aiProvider.test.ts +1 -1
- package/src/database/models/aiProvider.ts +1 -1
- package/src/features/ChatInput/ActionBar/Model/ControlsForm.tsx +24 -0
- package/src/features/ChatInput/ActionBar/Model/GPT5ReasoningEffortSlider.tsx +58 -0
- package/src/features/ChatInput/ActionBar/Model/TextVerbositySlider.tsx +57 -0
- package/src/features/Conversation/Error/index.tsx +1 -1
- package/src/libs/trpc/client/lambda.ts +1 -1
- package/src/locales/default/chat.ts +3 -0
- package/src/server/globalConfig/_deprecated.test.ts +1 -1
- package/src/server/globalConfig/_deprecated.ts +2 -1
- package/src/server/globalConfig/genServerAiProviderConfig.test.ts +1 -1
- package/src/server/globalConfig/genServerAiProviderConfig.ts +2 -1
- package/src/server/modules/ModelRuntime/index.test.ts +10 -7
- package/src/server/modules/ModelRuntime/index.ts +2 -1
- package/src/server/modules/ModelRuntime/trace.ts +1 -1
- package/src/server/routers/async/ragEval.ts +1 -1
- package/src/services/__tests__/_auth.test.ts +1 -1
- package/src/services/__tests__/chat.test.ts +11 -11
- package/src/services/_auth.ts +2 -1
- package/src/services/chat.ts +14 -6
- package/src/services/textToImage.ts +2 -1
- package/src/store/image/slices/generationConfig/initialState.ts +2 -1
- package/src/store/user/slices/modelList/action.ts +1 -1
- package/src/utils/errorResponse.test.ts +1 -2
- package/src/utils/errorResponse.ts +1 -2
- package/src/utils/fetch/fetchSSE.ts +1 -1
- package/src/utils/genUserLLMConfig.test.ts +1 -1
- package/src/utils/genUserLLMConfig.ts +2 -1
- package/tsconfig.json +2 -0
- package/vitest.config.ts +1 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/BaseAI.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/ModelRuntime.test.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/ModelRuntime.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/RouterRuntime/baseRuntimeMap.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/RouterRuntime/createRuntime.test.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/RouterRuntime/createRuntime.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/RouterRuntime/index.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/UniformRuntime/index.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/ai21/index.test.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/ai21/index.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/ai302/index.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/ai360/index.test.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/ai360/index.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/aihubmix/index.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/anthropic/handleAnthropicError.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/anthropic/index.test.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/azureOpenai/index.test.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/azureai/index.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/baichuan/index.test.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/baichuan/index.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/bedrock/index.test.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/bedrock/index.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/cloudflare/index.test.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/cloudflare/index.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/cohere/index.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/deepseek/index.test.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/deepseek/index.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/error.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/fal/index.test.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/fal/index.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/fireworksai/index.test.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/fireworksai/index.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/giteeai/index.test.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/giteeai/index.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/github/index.test.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/github/index.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/google/index.test.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/groq/index.test.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/groq/index.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/helpers/index.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/helpers/parseToolCalls.test.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/helpers/parseToolCalls.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/higress/index.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/huggingface/index.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/hunyuan/index.test.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/hunyuan/index.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/index.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/infiniai/index.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/internlm/index.test.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/internlm/index.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/jina/index.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/lmstudio/index.test.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/lmstudio/index.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/minimax/index.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/mistral/index.test.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/mistral/index.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/modelscope/index.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/moonshot/index.test.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/novita/__snapshots__/index.test.ts.snap +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/novita/fixtures/models.json +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/novita/index.test.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/novita/index.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/novita/type.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/nvidia/index.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/ollama/index.test.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/ollama/index.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/ollama/type.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/openai/__snapshots__/index.test.ts.snap +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/openai/fixtures/openai-models.json +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/openai/index.test.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/openrouter/__snapshots__/index.test.ts.snap +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/openrouter/fixtures/frontendModels.json +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/openrouter/fixtures/models.json +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/openrouter/index.test.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/openrouter/index.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/openrouter/type.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/perplexity/index.test.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/perplexity/index.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/ppio/__snapshots__/index.test.ts.snap +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/ppio/fixtures/models.json +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/ppio/index.test.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/ppio/index.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/ppio/type.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/providerTestUtils.test.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/providerTestUtils.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/qiniu/index.test.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/qiniu/index.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/qwen/createImage.test.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/qwen/index.test.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/runtimeMap.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/sambanova/index.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/search1api/index.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/sensenova/index.test.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/siliconcloud/index.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/spark/index.test.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/spark/index.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/stepfun/index.test.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/stepfun/index.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/taichu/index.test.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/taichu/index.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/tencentcloud/index.test.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/tencentcloud/index.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/togetherai/fixtures/models.json +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/togetherai/index.test.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/togetherai/index.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/togetherai/type.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/types/embeddings.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/types/image.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/types/index.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/types/model.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/types/textToImage.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/types/tts.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/types/type.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/upstage/index.test.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/upstage/index.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/anthropicHelpers.test.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/anthropicHelpers.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/cloudflareHelpers.test.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/cloudflareHelpers.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/createError.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/debugStream.test.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/debugStream.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/desensitizeUrl.test.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/desensitizeUrl.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/googleErrorParser.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/handleOpenAIError.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/modelParse.test.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/modelParse.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/openaiCompatibleFactory/index.test.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/openaiCompatibleFactory/index.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/openaiHelpers.test.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/openaiHelpers.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/response.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/sensenovaHelpers.test.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/sensenovaHelpers.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/streams/__snapshots__/protocol.test.ts.snap +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/streams/anthropic.test.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/streams/anthropic.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/streams/bedrock/claude.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/streams/bedrock/common.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/streams/bedrock/index.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/streams/bedrock/llama.test.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/streams/bedrock/llama.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/streams/google-ai.test.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/streams/google-ai.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/streams/index.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/streams/model.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/streams/ollama.test.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/streams/ollama.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/streams/openai/__snapshots__/responsesStream.test.ts.snap +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/streams/openai/index.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/streams/openai/openai.test.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/streams/openai/openai.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/streams/openai/responsesStream.test.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/streams/protocol.test.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/streams/protocol.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/streams/qwen.test.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/streams/qwen.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/streams/spark.test.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/streams/spark.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/streams/utils.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/streams/vertex-ai.test.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/streams/vertex-ai.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/uriParser.test.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/utils/uriParser.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/v0/index.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/vertexai/index.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/vllm/index.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/wenxin/index.test.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/wenxin/index.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/xai/index.test.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/xai/index.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/xinference/index.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/zeroone/index.test.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/zeroone/index.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/zhipu/index.test.ts +0 -0
- /package/{src/libs/model-runtime → packages/model-runtime/src}/zhipu/index.ts +0 -0
package/docker-compose/setup.sh
CHANGED
@@ -450,7 +450,7 @@ ENV_EXAMPLES=(
|
|
450
450
|
"$SUB_DIR/.env.example"
|
451
451
|
)
|
452
452
|
# Default values
|
453
|
-
CASDOOR_PASSWORD="
|
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="
|
660
|
+
CASDOOR_PASSWORD="pswd123"
|
661
661
|
else
|
662
662
|
# replace `password` in init_data.json
|
663
|
-
sed "${SED_INPLACE_ARGS[@]}" "s/"
|
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
|
package/locales/ar/chat.json
CHANGED
package/locales/bg-BG/chat.json
CHANGED
package/locales/de-DE/chat.json
CHANGED
package/locales/en-US/chat.json
CHANGED
package/locales/es-ES/chat.json
CHANGED
package/locales/fa-IR/chat.json
CHANGED
package/locales/fr-FR/chat.json
CHANGED
package/locales/it-IT/chat.json
CHANGED
package/locales/ja-JP/chat.json
CHANGED
package/locales/ko-KR/chat.json
CHANGED
package/locales/nl-NL/chat.json
CHANGED
package/locales/pl-PL/chat.json
CHANGED
package/locales/pt-BR/chat.json
CHANGED
package/locales/ru-RU/chat.json
CHANGED
package/locales/tr-TR/chat.json
CHANGED
package/locales/vi-VN/chat.json
CHANGED
package/locales/zh-CN/chat.json
CHANGED
package/locales/zh-TW/chat.json
CHANGED
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@lobehub/chat",
|
3
|
-
"version": "1.111.
|
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.
|
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
|
-
?
|
209
|
-
|
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
|
-
|
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
|
-
...
|
70
|
+
...otherParams,
|
65
71
|
max_completion_tokens: undefined,
|
66
|
-
|
67
|
-
|
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
|
-
'
|
60
|
-
{
|
61
|
-
|
62
|
-
|
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
|
-
|
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 {
|
16
|
-
|
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
|
-
?
|
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 {
|