diff --git a/.env.example b/.env.example
index f41f96004f66..ae3d4067eebe 100644
--- a/.env.example
+++ b/.env.example
@@ -1,5 +1,5 @@
-# add a access code to lock your lobe-chat application, it should be a six length string
-ACCESS_CODE=lobe66
+# add a access code to lock your lobe-chat application, you can set a long password to avoid leaking. If this value contains a comma, it is a password array.
+#ACCESS_CODE=lobe66
# add your custom model name, multi model separate by comma. for example gpt-3.5-1106,gpt-4-1106
# CUSTOM_MODELS=model1,model2,model3
@@ -33,6 +33,26 @@ OPENAI_API_KEY=sk-xxxxxxxxx
# Azure's API version, follows the YYYY-MM-DD format
# AZURE_API_VERSION=2023-08-01-preview
+########################################
+############ ZhiPu AI Service ##########
+########################################
+
+#ZHIPU_API_KEY=xxxxxxxxxxxxxxxxxxx.xxxxxxxxxxxxx
+
+########################################
+############ Google AI Service ##########
+########################################
+
+#GOOGLE_API_KEY=xxxxxxxxxxxxxxxxxxx.xxxxxxxxxxxxx
+
+########################################
+############ AWS Bedrock Service ##########
+########################################
+
+#AWS_REGION=us-east-1
+#AWS_ACCESS_KEY_ID=xxxxxxxxxxxxxxxxxxx
+#AWS_SECRET_ACCESS_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+
########################################
############ Market Service ############
########################################
diff --git a/.eslintrc.js b/.eslintrc.js
index 9c44cf2458e5..999998d5e8bd 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -14,5 +14,6 @@ config.rules['unicorn/no-useless-undefined'] = 0;
config.rules['react/no-unknown-property'] = 0;
config.rules['unicorn/prefer-ternary'] = 0;
config.rules['unicorn/prefer-spread'] = 0;
+config.rules['unicorn/catch-error-name'] = 0;
module.exports = config;
diff --git a/.gitignore b/.gitignore
index 8b5c1058d48e..f7db51dcaa82 100644
--- a/.gitignore
+++ b/.gitignore
@@ -55,4 +55,4 @@ next-env.d.ts
.next
.env
public/*.js
-bun.lockb
\ No newline at end of file
+bun.lockb
diff --git a/docs/Deployment/Environment-Variable.md b/docs/Deployment/Environment-Variable.md
index 84e8ba7c1684..86aadc86eb6f 100644
--- a/docs/Deployment/Environment-Variable.md
+++ b/docs/Deployment/Environment-Variable.md
@@ -6,14 +6,13 @@ LobeChat provides additional configuration options during deployment, which can
- [General Variables](#general-variables)
- [`ACCESS_CODE`](#access_code)
+- [Model Service Providers](#model-service-providers)
+ - [OpenAI](#openai)
- [`CUSTOM_MODELS`](#custom_models)
-- [OpenAI](#openai)
- - [`OPENAI_API_KEY`](#openai_api_key)
- - [`OPENAI_PROXY_URL`](#openai_proxy_url)
-- [Azure OpenAI](#azure-openai)
- - [`USE_AZURE_OPENAI`](#use_azure_openai)
- - [`AZURE_API_KEY`](#azure_api_key)
- - [`AZURE_API_VERSION`](#azure_api_version)
+ - [Azure OpenAI](#azure-openai)
+ - [Zhipu AI](#zhipu-ai)
+ - [Google AI](#google-ai)
+ - [AWS Bedrock](#aws-bedrock)
- [Plugin Service](#plugin-service)
- [`PLUGINS_INDEX_URL`](#plugins_index_url)
- [`PLUGIN_SETTINGS`](#plugin_settings)
@@ -28,29 +27,22 @@ LobeChat provides additional configuration options during deployment, which can
### `ACCESS_CODE`
- Type: Optional
-- Description: Add a password to access the LobeChat service, ; you can set a long password to avoid leaking. If this value contains a comma, it is a password array.
+- Description: Add a password to access the LobeChat service; you can set a long password to avoid leaking. If this value contains a comma, it is a password array.
- Default: `-`
- Example: `awCTe)re_r74` or `rtrt_ewee3@09!` or `code1,code2,code3`
-### `CUSTOM_MODELS`
+## Model Service Providers
-- Type: Optional
-- Description: Used to control the model list. Use `+` to add a model, `-` to hide a model, and `model_name=display_name` to customize the display name of a model, separated by commas.
-- Default: `-`
-- Example: `+qwen-7b-chat,+glm-6b,-gpt-3.5-turbo,gpt-4-0125-preview=gpt-4-turbo`
+### OpenAI
-The above example adds `qwen-7b-chat` and `glm-6b` to the model list, removes `gpt-3.5-turbo` from the list, and displays the model name `gpt-4-0125-preview` as `gpt-4-turbo`. If you want to disable all models first and then enable specific models, you can use `-all,+gpt-3.5-turbo`, which means only `gpt-3.5-turbo` will be enabled.
-
-## OpenAI
-
-### `OPENAI_API_KEY`
+#### `OPENAI_API_KEY`
- Type: Required
- Description: This is the API key you apply for on the OpenAI account page, you can go [here][openai-api-page] to view
- Default: `-`
- Example: `sk-xxxxxx...xxxxxx`
-### `OPENAI_PROXY_URL`
+#### `OPENAI_PROXY_URL`
- Type: Optional
- Description: If you manually configure the OpenAI interface proxy, you can use this configuration item to override the default OpenAI API request base URL
@@ -70,25 +62,34 @@ Related discussions:
- [Reasons for errors when using third-party interfaces](https://github.com/lobehub/lobe-chat/discussions/734)
- [No response when filling in the proxy server address for chatting](https://github.com/lobehub/lobe-chat/discussions/1065)
-## Azure OpenAI
+### `CUSTOM_MODELS`
+
+- Type: Optional
+- Description: Used to control the model list. Use `+` to add a model, `-` to hide a model, and `model_name=display_name` to customize the display name of a model, separated by commas.
+- Default: `-`
+- Example: `+qwen-7b-chat,+glm-6b,-gpt-3.5-turbo,gpt-4-0125-preview=gpt-4-turbo`
+
+The above example adds `qwen-7b-chat` and `glm-6b` to the model list, removes `gpt-3.5-turbo` from the list, and displays the model name `gpt-4-0125-preview` as `gpt-4-turbo`. If you want to disable all models first and then enable specific models, you can use `-all,+gpt-3.5-turbo`, which means only `gpt-3.5-turbo` will be enabled.
+
+### Azure OpenAI
If you need to use Azure OpenAI to provide model services, you can refer to the [Deploy with Azure OpenAI](Deploy-with-Azure-OpenAI.zh-CN.md) section for detailed steps. Here are the environment variables related to Azure OpenAI.
-### `USE_AZURE_OPENAI`
+#### `USE_AZURE_OPENAI`
- Type: Optional
- Description: Set this value to `1` to enable Azure OpenAI configuration
- Default: `-`
- Example: `1`
-### `AZURE_API_KEY`
+#### `AZURE_API_KEY`
- Type: Optional
- Description: This is the API key you apply for on the Azure OpenAI account page
- Default: `-`
- Example: `c55168be3874490ef0565d9779ecd5a6`
-### `AZURE_API_VERSION`
+#### `AZURE_API_VERSION`
- Type: Optional
- Description: Azure's API version, following the YYYY-MM-DD format
@@ -97,6 +98,47 @@ If you need to use Azure OpenAI to provide model services, you can refer to the
+### Zhipu AI
+
+#### `ZHIPU_API_KEY`
+
+- Type: Required
+- Description: This is the API key you applied for in the Zhipu AI service
+- Default Value: -
+- Example: `4582d332441a313f5c2ed9824d1798ca.rC8EcTAhgbOuAuVT`
+
+### Google AI
+
+#### `GOOGLE_API_KEY`
+
+- Type: Required
+- Description: This is the API key you applied for on Google Cloud Platform, used to access Google AI services
+- Default Value: -
+- Example: `AIraDyDwcw254kwJaGjI9wwaHcdDCS__Vt3xQE`
+
+### AWS Bedrock
+
+#### `AWS_ACCESS_KEY_ID`
+
+- Type: Required
+- Description: The access key ID for AWS service authentication
+- Default Value: -
+- Example: `AKIA5STVRLFSB4S9HWBR`
+
+#### `AWS_SECRET_ACCESS_KEY`
+
+- Type: Required
+- Description: The secret key for AWS service authentication
+- Default Value: -
+- Example: `Th3vXxLYpuKcv2BARktPSTPxx+jbSiFT6/0w7oEC`
+
+#### `AWS_REGION`
+
+- Type: Optional
+- Description: The region setting for AWS services
+- Default Value: `us-east-1`
+- Example: `us-east-1`
+
## Plugin Service
### `PLUGINS_INDEX_URL`
diff --git a/docs/Deployment/Environment-Variable.zh-CN.md b/docs/Deployment/Environment-Variable.zh-CN.md
index 212eae9cc47d..feb4ef340fed 100644
--- a/docs/Deployment/Environment-Variable.zh-CN.md
+++ b/docs/Deployment/Environment-Variable.zh-CN.md
@@ -6,14 +6,13 @@ LobeChat 在部署时提供了一些额外的配置项,使用环境变量进
- [通用变量](#通用变量)
- [`ACCESS_CODE`](#access_code)
+- [模型服务商](#模型服务商)
+ - [OpenAI](#openai)
- [`CUSTOM_MODELS`](#custom_models)
-- [OpenAI](#openai)
- - [`OPENAI_API_KEY`](#openai_api_key)
- - [`OPENAI_PROXY_URL`](#openai_proxy_url)
-- [Azure OpenAI](#azure-openai)
- - [`USE_AZURE_OPENAI`](#use_azure_openai)
- - [`AZURE_API_KEY`](#azure_api_key)
- - [`AZURE_API_VERSION`](#azure_api_version)
+ - [Azure OpenAI](#azure-openai)
+ - [智谱 AI](#智谱-ai)
+ - [Google AI](#google-ai)
+ - [AWS Bedrock](#aws-bedrock)
- [插件服务](#插件服务)
- [`PLUGINS_INDEX_URL`](#plugins_index_url)
- [`PLUGIN_SETTINGS`](#plugin_settings)
@@ -32,25 +31,18 @@ LobeChat 在部署时提供了一些额外的配置项,使用环境变量进
- 默认值:-
- 示例:`awCTe)re_r74` or `rtrt_ewee3@09!`
-### `CUSTOM_MODELS`
-
-- 类型:可选
-- 描述:用来控制模型列表,使用 `+` 增加一个模型,使用 `-` 来隐藏一个模型,使用 `模型名=展示名` 来自定义模型的展示名,用英文逗号隔开。
-- 默认值:`-`
-- 示例:`+qwen-7b-chat,+glm-6b,-gpt-3.5-turbo,gpt-4-0125-preview=gpt-4-turbo`
-
-上面示例表示增加 `qwen-7b-chat` 和 `glm-6b` 到模型列表,而从列表中删除 `gpt-3.5-turbo`,并将 `gpt-4-0125-preview` 模型名字展示为 `gpt-4-turbo`。如果你想先禁用所有模型,再启用指定模型,可以使用 `-all,+gpt-3.5-turbo`,则表示仅启用 `gpt-3.5-turbo`。
+## 模型服务商
-## OpenAI
+### OpenAI
-### `OPENAI_API_KEY`
+#### `OPENAI_API_KEY`
- 类型:必选
- 描述:这是你在 OpenAI 账户页面申请的 API 密钥,可以前往[这里][openai-api-page]查看
- 默认值:-
- 示例:`sk-xxxxxx...xxxxxx`
-### `OPENAI_PROXY_URL`
+#### `OPENAI_PROXY_URL`
- 类型:可选
- 描述:如果你手动配置了 OpenAI 接口代理,可以使用此配置项来覆盖默认的 OpenAI API 请求基础 URL
@@ -70,31 +62,81 @@ LobeChat 在部署时提供了一些额外的配置项,使用环境变量进
- [使用第三方接口报错的原因](https://github.com/lobehub/lobe-chat/discussions/734)
- [代理服务器地址填了聊天没任何反应](https://github.com/lobehub/lobe-chat/discussions/1065)
-## Azure OpenAI
+### `CUSTOM_MODELS`
+
+- 类型:可选
+- 描述:用来控制模型列表,使用 `+` 增加一个模型,使用 `-` 来隐藏一个模型,使用 `模型名=展示名` 来自定义模型的展示名,用英文逗号隔开。
+- 默认值:`-`
+- 示例:`+qwen-7b-chat,+glm-6b,-gpt-3.5-turbo,gpt-4-0125-preview=gpt-4-turbo`
+
+上面示例表示增加 `qwen-7b-chat` 和 `glm-6b` 到模型列表,而从列表中删除 `gpt-3.5-turbo`,并将 `gpt-4-0125-preview` 模型名字展示为 `gpt-4-turbo`。如果你想先禁用所有模型,再启用指定模型,可以使用 `-all,+gpt-3.5-turbo`,则表示仅启用 `gpt-3.5-turbo`。
+
+### Azure OpenAI
如果你需要使用 Azure OpenAI 来提供模型服务,可以查阅 [使用 Azure OpenAI 部署](Deploy-with-Azure-OpenAI.zh-CN.md) 章节查看详细步骤,这里将列举和 Azure OpenAI 相关的环境变量。
-### `USE_AZURE_OPENAI`
+#### `USE_AZURE_OPENAI`
- 类型:可选
- 描述:设置该值为 `1` 开启 Azure OpenAI 配置
- 默认值:-
- 示例:`1`
-### `AZURE_API_KEY`
+#### `AZURE_API_KEY`
- 类型:可选
- 描述:这是你在 Azure OpenAI 账户页面申请的 API 密钥
- 默认值:-
- 示例:`c55168be3874490ef0565d9779ecd5a6`
-### `AZURE_API_VERSION`
+#### `AZURE_API_VERSION`
- 类型:可选
- 描述:Azure 的 API 版本,遵循 YYYY-MM-DD 格式
- 默认值:`2023-08-01-preview`
- 示例:`2023-05-15`,查阅[最新版本][azure-api-verion-url]
+### 智谱 AI
+
+#### `ZHIPU_API_KEY`
+
+- 类型:必选
+- 描述:这是你在 智谱 AI 服务中申请的 API 密钥
+- 默认值:-
+- 示例:`4582d332441a313f5c2ed9824d1798ca.rC8EcTAhgbOuAuVT`
+
+### Google AI
+
+#### `GOOGLE_API_KEY`
+
+- 类型:必选
+- 描述:这是你在 Google AI Platform 申请的 API 密钥,用于访问 Google AI 服务
+- 默认值:-
+- 示例:`AIraDyDwcw254kwJaGjI9wwaHcdDCS__Vt3xQE`
+
+### AWS Bedrock
+
+#### `AWS_ACCESS_KEY_ID`
+
+- 类型:必选
+- 描述:用于 AWS 服务认证的访问键 ID
+- 默认值:-
+- 示例:`AKIA5STVRLFSB4S9HWBR`
+
+#### `AWS_SECRET_ACCESS_KEY`
+
+- 类型:必选
+- 描述:用于 AWS 服务认证的密钥
+- 默认值:-
+- 示例:`Th3vXxLYpuKcv2BARktPSTPxx+jbSiFT6/0w7oEC`
+
+#### `AWS_REGION`
+
+- 类型:可选
+- 描述:AWS 服务的区域设置
+- 默认值:`us-east-1`
+- 示例:`us-east-1`
+
## 插件服务
### `PLUGINS_INDEX_URL`
diff --git a/locales/ar/chat.json b/locales/ar/chat.json
index 539018b4f396..66a479004c9d 100644
--- a/locales/ar/chat.json
+++ b/locales/ar/chat.json
@@ -1,4 +1,7 @@
{
+ "ModelSwitch": {
+ "title": "النموذج"
+ },
"agentDefaultMessage": "مرحبًا، أنا **{{name}}**، يمكنك البدء في الدردشة معي على الفور، أو يمكنك الانتقال إلى [إعدادات المساعد](/chat/settings#session={{id}}) لتحسين معلوماتي.",
"agentDefaultMessageWithSystemRole": "مرحبًا، أنا **{{name}}**، {{systemRole}}، دعنا نبدأ الدردشة!",
"backToBottom": "العودة إلى الأسفل",
@@ -64,7 +67,14 @@
"prettifying": "جارٍ التجميل..."
},
"temp": "مؤقت",
- "tokenDetail": "إعداد الدور: {{systemRoleToken}} · رسائل الجلسة: {{chatsToken}} · إعداد الأدوات: {{toolsToken}}",
+ "tokenDetails": {
+ "chats": "رسائل المحادثة",
+ "rest": "المتبقي",
+ "systemRole": "تعيين الدور",
+ "tools": "تعيين الإضافات",
+ "total": "الإجمالي",
+ "used": "المستخدم"
+ },
"tokenTag": {
"overload": "تجاوز الحد",
"remained": "متبقي",
@@ -102,6 +112,7 @@
"updateAgent": "تحديث معلومات المساعد",
"upload": {
"actionTooltip": "تحميل الصورة",
+ "disabled": "النموذج الحالي لا يدعم التعرف على الرؤية، يرجى تغيير النموذج المستخدم",
"dragDesc": "اسحب الملفات إلى هنا، يدعم تحميل عدة صور. اضغط على Shift لإرسال الصور مباشرة",
"dragTitle": "تحميل الصورة"
}
diff --git a/locales/ar/common.json b/locales/ar/common.json
index b7290c6c10d1..470862d7db6a 100644
--- a/locales/ar/common.json
+++ b/locales/ar/common.json
@@ -1,4 +1,12 @@
{
+ "ModelSelect": {
+ "featureTag": {
+ "custom": "نموذج مخصص، يدعم الوظائف والتعرف على الرؤية، يرجى التحقق من قدرة النموذج على القيام بذلك وفقًا للحالة الفعلية",
+ "functionCall": "يدعم هذا النموذج استدعاء الوظائف",
+ "tokens": "هذا النموذج يدعم حتى {{tokens}} رموز في جلسة واحدة",
+ "vision": "يدعم هذا النموذج التعرف على الرؤية"
+ }
+ },
"about": "حول",
"advanceSettings": "إعدادات متقدمة",
"agentMaxToken": "أقصى طول للجلسة",
@@ -89,6 +97,14 @@
"zh-TW": "الصينية التقليدية"
},
"layoutInitializing": "جاري تحميل التخطيط...",
+ "modelProvider": {
+ "azure": "أزور",
+ "bedrock": "بيدروك لأمازون ويب سيرفيس",
+ "google": "جوجل",
+ "oneapi": "وان آبي آي",
+ "openai": "أوبن إيه آي",
+ "zhipu": "زهيبو"
+ },
"noDescription": "لا توجد وصف",
"ok": "موافق",
"password": "كلمة المرور",
diff --git a/locales/ar/error.json b/locales/ar/error.json
index d4933c2f2e7a..44af22b5e95c 100644
--- a/locales/ar/error.json
+++ b/locales/ar/error.json
@@ -33,8 +33,17 @@
"502": "عذرًا، يبدو أن الخادم قد ضل الطريق ولا يمكنه حاليًا تقديم الخدمة، يرجى المحاولة مرة أخرى لاحقًا",
"503": "عذرًا، الخادم غير قادر حاليًا على معالجة طلبك، قد يكون بسبب الحمل الزائد أو الصيانة الجارية، يرجى المحاولة مرة أخرى لاحقًا",
"504": "عذرًا، الخادم لم ينتظر ردًا من الخادم الأصلي، يرجى المحاولة مرة أخرى لاحقًا",
- "InvalidAccessCode": "كلمة المرور غير صحيحة أو فارغة، يرجى إدخال كلمة مرور الوصول الصحيحة أو إضافة مفتاح API الخاص بك",
- "NoAPIKey": "مفتاح API الخاص بـ OpenAI فارغ، يرجى إضافة مفتاح API الخاص بـ OpenAI",
+ "AgentRuntimeError": "حدث خطأ في تشغيل نموذج Lobe اللغوي، يرجى التحقق من المعلومات التالية أو إعادة المحاولة",
+ "AzureBizError": "حدث خطأ في طلب خدمة Azure AI، يرجى التحقق من المعلومات التالية أو إعادة المحاولة",
+ "BedrockBizError": "حدث خطأ في طلب خدمة Bedrock، يرجى التحقق من المعلومات التالية أو إعادة المحاولة",
+ "GoogleBizError": "حدث خطأ في طلب خدمة Google، يرجى التحقق من المعلومات التالية أو إعادة المحاولة",
+ "InvalidAccessCode": "كلمة المرور غير صحيحة أو فارغة، يرجى إدخال كلمة مرور الوصول الصحيحة أو إضافة مفتاح API مخصص",
+ "InvalidAzureAPIKey": "مفتاح Azure API غير صحيح أو فارغ، يرجى التحقق من مفتاح Azure API وإعادة المحاولة",
+ "InvalidBedrockCredentials": "فشلت مصادقة Bedrock، يرجى التحقق من AccessKeyId/SecretAccessKey وإعادة المحاولة",
+ "InvalidGoogleAPIKey": "مفتاح Google API غير صحيح أو فارغ، يرجى التحقق من مفتاح Google API وإعادة المحاولة",
+ "InvalidZhipuAPIKey": "مفتاح Zhipu API غير صحيح أو فارغ، يرجى التحقق من مفتاح Zhipu API وإعادة المحاولة",
+ "LocationNotSupportError": "عذرًا، لا يدعم موقعك الحالي خدمة هذا النموذج، قد يكون ذلك بسبب قيود المنطقة أو عدم توفر الخدمة. يرجى التحقق مما إذا كان الموقع الحالي يدعم استخدام هذه الخدمة، أو محاولة استخدام معلومات الموقع الأخرى.",
+ "NoOpenAIAPIKey": "مفتاح API الخاص بـ OpenAI فارغ، يرجى إضافة مفتاح API الخاص بـ OpenAI",
"OpenAIBizError": "حدث خطأ في طلب خدمة OpenAI، يرجى التحقق من المعلومات أدناه وإعادة المحاولة",
"PluginApiNotFound": "عذرًا، لا يوجد API للإضافة في وصف الإضافة، يرجى التحقق من تطابق طريقة الطلب الخاصة بك مع API الوصف",
"PluginApiParamsError": "عذرًا، فشلت التحقق من صحة معلمات الطلب للإضافة، يرجى التحقق من تطابق المعلمات مع معلومات الوصف",
@@ -47,7 +56,8 @@
"PluginMetaNotFound": "عذرًا، لم يتم العثور على معلومات تكوين الإضافة في الفهرس",
"PluginOpenApiInitError": "عذرًا، فشل تهيئة عميل OpenAPI، يرجى التحقق من معلومات تكوين OpenAPI",
"PluginServerError": "خطأ في استجابة الخادم لطلب الإضافة، يرجى التحقق من ملف وصف الإضافة وتكوين الإضافة وتنفيذ الخادم وفقًا لمعلومات الخطأ أدناه",
- "PluginSettingsInvalid": "تحتاج هذه الإضافة إلى تكوين صحيح قبل الاستخدام، يرجى التحقق من صحة تكوينك"
+ "PluginSettingsInvalid": "تحتاج هذه الإضافة إلى تكوين صحيح قبل الاستخدام، يرجى التحقق من صحة تكوينك",
+ "ZhipuBizError": "حدث خطأ في طلب خدمة Zhipu، يرجى التحقق من المعلومات التالية أو إعادة المحاولة"
},
"stt": {
"responseError": "فشل طلب الخدمة، يرجى التحقق من الإعدادات أو إعادة المحاولة"
@@ -57,9 +67,24 @@
},
"unlock": {
"apikey": {
- "addProxyUrl": "إضافة عنوان الوكيل لـ OpenAI (اختياري)",
- "description": "قم بإدخال مفتاح OpenAI API الخاص بك لبدء الجلسة. لن يتم تسجيل مفتاح الخاص بك من قبل التطبيق",
- "title": "استخدام مفتاح API مخصص"
+ "Bedrock": {
+ "customRegion": "منطقة خدمة مخصصة",
+ "description": "أدخل مفتاح الوصول الخاص بك لـ Aws AccessKeyId / SecretAccessKey لبدء الجلسة. لن يقوم التطبيق بتسجيل تكوين المصادقة الخاص بك",
+ "title": "استخدام معلومات مصادقة Bedrock المخصصة"
+ },
+ "Google": {
+ "description": "أدخل مفتاح Google API الخاص بك لبدء الجلسة. لن يقوم التطبيق بتسجيل مفتاح الواجهة البرمجية الخاص بك",
+ "title": "استخدام مفتاح Google API المخصص"
+ },
+ "OpenAI": {
+ "addProxyUrl": "إضافة عنوان وكيل OpenAI (اختياري)",
+ "description": "أدخل مفتاح OpenAI API الخاص بك لبدء الجلسة. لن يقوم التطبيق بتسجيل مفتاح الواجهة البرمجية الخاص بك",
+ "title": "استخدام مفتاح OpenAI API المخصص"
+ },
+ "Zhipu": {
+ "description": "أدخل مفتاح Zhipu API الخاص بك لبدء الجلسة. لن يقوم التطبيق بتسجيل مفتاح الواجهة البرمجية الخاص بك",
+ "title": "استخدام مفتاح Zhipu API المخصص"
+ }
},
"closeMessage": "إغلاق الرسالة",
"confirm": "تأكيد وإعادة المحاولة",
@@ -67,6 +92,10 @@
"description": "قام المسؤول بتشفير التطبيق، قم بإدخال كلمة مرور التطبيق لفتح التطبيق. يتعين إدخال كلمة المرور مرة واحدة فقط",
"placeholder": "الرجاء إدخال كلمة المرور",
"title": "إدخال كلمة المرور لفتح التطبيق"
+ },
+ "tabs": {
+ "apiKey": "مفتاح واجهة برمجة التطبيقات المخصص",
+ "password": "كلمة المرور"
}
}
}
diff --git a/locales/ar/setting.json b/locales/ar/setting.json
index 0f04aca8c438..b679da721648 100644
--- a/locales/ar/setting.json
+++ b/locales/ar/setting.json
@@ -22,6 +22,15 @@
},
"llm": {
"AzureOpenAI": {
+ "azureApiVersion": {
+ "desc": "إصدار واجهة برمجة التطبيقات لـ Azure، يتبع تنسيق YYYY-MM-DD، راجع [أحدث الإصدار](https://learn.microsoft.com/zh-cn/azure/ai-services/openai/reference#chat-completions)",
+ "fetch": "الحصول على قائمة",
+ "title": "إصدار واجهة برمجة التطبيقات لـ Azure"
+ },
+ "deployments": {
+ "desc": "املأ نموذج نشرك باستخدام بنية id=name (مثل اسم النشر والنموذج متطابقان، يمكنك ملء اسم النموذج فقط)، استخدم فاصلة (,) للنماذج المتعددة",
+ "title": "قائمة نماذج النشر لـ Azure"
+ },
"endpoint": {
"desc": "يمكن العثور على هذه القيمة في قسم 'المفتاح والنقطة النهائية' عند التحقق من الموارد في بوابة Azure",
"placeholder": "https://docs-test-001.openai.azure.com",
@@ -38,18 +47,41 @@
"title": "مفتاح واجهة برمجة التطبيقات"
}
},
+ "Bedrock": {
+ "accessKeyId": {
+ "desc": "املأ معرف مفتاح الوصول لـ Aws",
+ "placeholder": "معرف مفتاح الوصول لـ Aws",
+ "title": "معرف مفتاح الوصول لـ Aws"
+ },
+ "checker": {
+ "desc": "اختبار ما إذا كان معرف الوصول / مفتاح الوصول السري مملوء بشكل صحيح"
+ },
+ "region": {
+ "desc": "املأ منطقة Aws",
+ "placeholder": "منطقة Aws",
+ "title": "منطقة Aws"
+ },
+ "secretAccessKey": {
+ "desc": "املأ مفتاح الوصول السري لـ Aws",
+ "placeholder": "مفتاح الوصول السري لـ Aws",
+ "title": "مفتاح الوصول السري لـ Aws"
+ },
+ "title": "Bedrock"
+ },
+ "Google": {
+ "title": "Google",
+ "token": {
+ "desc": "املأ مفتاح واجهة برمجة التطبيقات الخاص بك من Google",
+ "placeholder": "مفتاح واجهة برمجة التطبيقات الخاص بـ Google",
+ "title": "مفتاح واجهة برمجة التطبيقات"
+ }
+ },
"OpenAI": {
"azureApiVersion": {
"desc": "إصدار واجهة برمجة التطبيقات لـ Azure، يتبع تنسيق YYYY-MM-DD، اطلع على [أحدث الإصدارات](https://learn.microsoft.com/zh-cn/azure/ai-services/openai/reference#chat-completions)",
"fetch": "الحصول على القائمة",
"title": "إصدار واجهة برمجة التطبيقات لـ Azure"
},
- "check": {
- "button": "فحص",
- "desc": "اختبار مفتاح واجهة البرمجة التطبيقية وعنوان الوكيل للتأكد من ملئهما بشكل صحيح",
- "pass": "تم الفحص بنجاح",
- "title": "فحص الاتصال"
- },
"customModelName": {
"desc": "إضافة نموذج مخصص، يمكن استخدام فاصلة (,) للنماذج المتعددة",
"placeholder": "نموذج1،نموذج2،نموذج3",
@@ -82,6 +114,20 @@
"title": "استخدام Azure OpenAI"
}
},
+ "Zhipu": {
+ "title": "智谱",
+ "token": {
+ "desc": "املأ مفتاح واجهة برمجة التطبيقات الخاص بـ Zhipu",
+ "placeholder": "مفتاح واجهة برمجة التطبيقات الخاص بـ Zhipu",
+ "title": "مفتاح واجهة برمجة التطبيقات"
+ }
+ },
+ "checker": {
+ "button": "فحص",
+ "desc": "اختبار ما إذا كان مفتاح واجهة البرمجة وعنوان الوكيل مملوء بشكل صحيح",
+ "pass": "تمت المراقبة",
+ "title": "فحص الاتصال"
+ },
"waitingForMore": "يتم <1>التخطيط لتوفير1> المزيد من النماذج، ترقبوا المزيد ✨"
},
"plugin": {
@@ -293,6 +339,7 @@
"builtins": {
"groupName": "الامتدادات المدمجة"
},
+ "disabled": "النموذج الحالي لا يدعم استدعاء الوظائف، ولا يمكن استخدام الإضافة",
"plugins": {
"enabled": "ممكّنة {{num}}",
"groupName": "الإضافات",
diff --git a/locales/de-DE/chat.json b/locales/de-DE/chat.json
index b83dd89d8ef9..61e33467c4c7 100644
--- a/locales/de-DE/chat.json
+++ b/locales/de-DE/chat.json
@@ -1,4 +1,7 @@
{
+ "ModelSwitch": {
+ "title": "Modell"
+ },
"agentDefaultMessage": "Hallo, ich bin **{{name}}**. Du kannst sofort mit mir chatten oder gehe zu [Assistenteneinstellungen](/chat/settings#session={{id}}), um meine Informationen zu vervollständigen.",
"agentDefaultMessageWithSystemRole": "Hallo, ich bin **{{name}}**, {{systemRole}}. Lass uns chatten!",
"backToBottom": "Zurück zum Ende",
@@ -64,7 +67,14 @@
"prettifying": "Verschönern..."
},
"temp": "Temporär",
- "tokenDetail": "Rollen-Einstellung: {{systemRoleToken}} · Chat-Nachrichten: {{chatsToken}}",
+ "tokenDetails": {
+ "chats": "Chats",
+ "rest": "Verbleibend",
+ "systemRole": "Systemrolle",
+ "tools": "Werkzeuge",
+ "total": "Insgesamt",
+ "used": "Verwendet"
+ },
"tokenTag": {
"overload": "Überlastung",
"remained": "Verbleibend",
@@ -102,6 +112,7 @@
"updateAgent": "Assistenteninformationen aktualisieren",
"upload": {
"actionTooltip": "Bild hochladen",
+ "disabled": "Das aktuelle Modell unterstützt keine visuelle Erkennung. Bitte wechseln Sie das Modell, um es zu verwenden.",
"dragDesc": "Dateien hierher ziehen, um mehrere Bilder hochzuladen. Halte die Umschalttaste gedrückt, um Bilder direkt zu senden.",
"dragTitle": "Bild hochladen"
}
diff --git a/locales/de-DE/common.json b/locales/de-DE/common.json
index 724e10b6b1bb..0661cbdc7cf8 100644
--- a/locales/de-DE/common.json
+++ b/locales/de-DE/common.json
@@ -1,4 +1,12 @@
{
+ "ModelSelect": {
+ "featureTag": {
+ "custom": "Benutzerdefiniertes Modell, das standardmäßig sowohl Funktionsaufrufe als auch visuelle Erkennung unterstützt. Bitte überprüfen Sie die Verfügbarkeit dieser Fähigkeiten basierend auf den tatsächlichen Anforderungen.",
+ "functionCall": "Dieses Modell unterstützt Funktionsaufrufe (Function Call).",
+ "tokens": "Dieses Modell unterstützt maximal {{tokens}} Tokens pro einzelner Sitzung.",
+ "vision": "Dieses Modell unterstützt visuelle Erkennung."
+ }
+ },
"about": "Über",
"advanceSettings": "Erweiterte Einstellungen",
"agentMaxToken": "Maximale Sitzungslänge",
@@ -89,6 +97,14 @@
"zh-TW": "Chinesisch (traditionell)"
},
"layoutInitializing": "Layout wird geladen...",
+ "modelProvider": {
+ "azure": "Azure",
+ "bedrock": "AWS Bedrock",
+ "google": "Google",
+ "oneapi": "One API",
+ "openai": "OpenAI",
+ "zhipu": "Zhipu AI"
+ },
"noDescription": "Keine Beschreibung vorhanden",
"ok": "OK",
"password": "Passwort",
diff --git a/locales/de-DE/error.json b/locales/de-DE/error.json
index dee7547aca91..a5aa6409ff6d 100644
--- a/locales/de-DE/error.json
+++ b/locales/de-DE/error.json
@@ -33,8 +33,17 @@
"502": "Entschuldigung, der Server scheint die Orientierung verloren zu haben und kann vorübergehend keinen Service bereitstellen. Bitte versuchen Sie es später erneut",
"503": "Entschuldigung, der Server kann Ihre Anfrage derzeit nicht verarbeiten. Möglicherweise aufgrund von Überlastung oder Wartungsarbeiten. Bitte versuchen Sie es später erneut",
"504": "Entschuldigung, der Server hat keine Antwort vom Upstream-Server erhalten. Bitte versuchen Sie es später erneut",
- "InvalidAccessCode": "Falsches oder leeres Passwort. Bitte geben Sie das richtige Zugangspasswort ein oder fügen Sie einen benutzerdefinierten OpenAI-API-Schlüssel hinzu",
- "NoAPIKey": "Der OpenAI-API-Schlüssel ist leer. Bitte fügen Sie einen benutzerdefinierten OpenAI-API-Schlüssel hinzu",
+ "AgentRuntimeError": "Es ist ein Fehler bei der Ausführung des Lobe-Sprachmodells aufgetreten. Bitte überprüfen Sie die folgenden Informationen oder versuchen Sie es erneut.",
+ "AzureBizError": "Es ist ein Fehler bei der Anforderung des Azure AI-Dienstes aufgetreten. Bitte überprüfen Sie die folgenden Informationen oder versuchen Sie es erneut.",
+ "BedrockBizError": "Es ist ein Fehler bei der Anforderung des Bedrock-Dienstes aufgetreten. Bitte überprüfen Sie die folgenden Informationen oder versuchen Sie es erneut.",
+ "GoogleBizError": "Es ist ein Fehler bei der Anforderung des Google-Dienstes aufgetreten. Bitte überprüfen Sie die folgenden Informationen oder versuchen Sie es erneut.",
+ "InvalidAccessCode": "Das Passwort ist ungültig oder leer. Bitte geben Sie das richtige Zugangspasswort ein oder fügen Sie einen benutzerdefinierten API-Schlüssel hinzu.",
+ "InvalidAzureAPIKey": "Der Azure API-Schlüssel ist ungültig oder leer. Bitte überprüfen Sie den Azure API-Schlüssel und versuchen Sie es erneut.",
+ "InvalidBedrockCredentials": "Die Bedrock-Authentifizierung ist fehlgeschlagen. Bitte überprüfen Sie AccessKeyId/SecretAccessKey und versuchen Sie es erneut.",
+ "InvalidGoogleAPIKey": "Der Google API-Schlüssel ist ungültig oder leer. Bitte überprüfen Sie den Google API-Schlüssel und versuchen Sie es erneut.",
+ "InvalidZhipuAPIKey": "Der Zhipu API-Schlüssel ist ungültig oder leer. Bitte überprüfen Sie den Zhipu API-Schlüssel und versuchen Sie es erneut.",
+ "LocationNotSupportError": "Entschuldigung, Ihr Standort unterstützt diesen Modellservice möglicherweise aufgrund von regionalen Einschränkungen oder nicht aktivierten Diensten nicht. Bitte überprüfen Sie, ob der aktuelle Standort die Verwendung dieses Dienstes unterstützt, oder versuchen Sie, andere Standortinformationen zu verwenden.",
+ "NoOpenAIAPIKey": "Der OpenAI-API-Schlüssel ist leer. Bitte fügen Sie einen benutzerdefinierten OpenAI-API-Schlüssel hinzu",
"OpenAIBizError": "Fehler bei der OpenAI-Serviceanfrage. Bitte überprüfen Sie die folgenden Informationen oder versuchen Sie es erneut",
"PluginApiNotFound": "Entschuldigung, das API des Plugins im Plugin-Manifest existiert nicht. Bitte überprüfen Sie, ob Ihre Anfragemethode mit dem Plugin-Manifest-API übereinstimmt",
"PluginApiParamsError": "Entschuldigung, die Eingabeüberprüfung der Plugin-Anfrage ist fehlgeschlagen. Bitte überprüfen Sie, ob die Eingabe mit den API-Beschreibungsinformationen übereinstimmt",
@@ -47,7 +56,8 @@
"PluginMetaNotFound": "Entschuldigung, das Plugin wurde im Index nicht gefunden. Bitte überprüfen Sie die Konfigurationsinformationen des Plugins im Index",
"PluginOpenApiInitError": "Entschuldigung, die Initialisierung des OpenAPI-Clients ist fehlgeschlagen. Bitte überprüfen Sie die Konfigurationsinformationen des OpenAPI auf Richtigkeit",
"PluginServerError": "Fehler bei der Serveranfrage des Plugins. Bitte überprüfen Sie die Fehlerinformationen unten in Ihrer Plugin-Beschreibungsdatei, Plugin-Konfiguration oder Serverimplementierung",
- "PluginSettingsInvalid": "Das Plugin muss korrekt konfiguriert werden, um verwendet werden zu können. Bitte überprüfen Sie Ihre Konfiguration auf Richtigkeit"
+ "PluginSettingsInvalid": "Das Plugin muss korrekt konfiguriert werden, um verwendet werden zu können. Bitte überprüfen Sie Ihre Konfiguration auf Richtigkeit",
+ "ZhipuBizError": "Es ist ein Fehler bei der Anforderung des Zhipu-Dienstes aufgetreten. Bitte überprüfen Sie die folgenden Informationen oder versuchen Sie es erneut."
},
"stt": {
"responseError": "Serviceanfrage fehlgeschlagen. Bitte überprüfen Sie die Konfiguration oder versuchen Sie es erneut"
@@ -57,9 +67,24 @@
},
"unlock": {
"apikey": {
- "addProxyUrl": "Proxy-URL hinzufügen (optional)",
- "description": "Gib deinen OpenAI API-Schlüssel ein, um eine Sitzung zu starten. Die App speichert deinen API-Schlüssel nicht.",
- "title": "Benutzerdefinierten API-Schlüssel verwenden"
+ "Bedrock": {
+ "customRegion": "Benutzerdefinierte Region",
+ "description": "Geben Sie Ihre Aws AccessKeyId / SecretAccessKey ein, um die Sitzung zu starten. Die Anwendung speichert Ihre Authentifizierungsinformationen nicht.",
+ "title": "Verwenden von benutzerdefinierten Bedrock-Authentifizierungsinformationen"
+ },
+ "Google": {
+ "description": "Geben Sie Ihren Google API-Schlüssel ein, um die Sitzung zu starten. Die Anwendung speichert Ihren API-Schlüssel nicht.",
+ "title": "Verwenden von benutzerdefinierten Google API-Schlüssel"
+ },
+ "OpenAI": {
+ "addProxyUrl": "Proxy-URL hinzufügen (optional)",
+ "description": "Geben Sie Ihren OpenAI API-Schlüssel ein, um die Sitzung zu starten. Die Anwendung speichert Ihren API-Schlüssel nicht.",
+ "title": "Verwenden von benutzerdefinierten OpenAI API-Schlüssel"
+ },
+ "Zhipu": {
+ "description": "Geben Sie Ihren Zhipu API-Schlüssel ein, um die Sitzung zu starten. Die Anwendung speichert Ihren API-Schlüssel nicht.",
+ "title": "Verwenden von benutzerdefinierten Zhipu API-Schlüssel"
+ }
},
"closeMessage": "Hinweis schließen",
"confirm": "Bestätigen und erneut versuchen",
@@ -67,6 +92,10 @@
"description": "Der Administrator hat die App-Verschlüsselung aktiviert. Gib das App-Passwort ein, um die App zu entsperren. Das Passwort muss nur einmal eingegeben werden.",
"placeholder": "Passwort eingeben",
"title": "App entsperren durch Passworteingabe"
+ },
+ "tabs": {
+ "apiKey": "Benutzerdefinierter API-Schlüssel",
+ "password": "Passwort"
}
}
}
diff --git a/locales/de-DE/setting.json b/locales/de-DE/setting.json
index fc79285e883d..4b199d1d207a 100644
--- a/locales/de-DE/setting.json
+++ b/locales/de-DE/setting.json
@@ -22,6 +22,15 @@
},
"llm": {
"AzureOpenAI": {
+ "azureApiVersion": {
+ "desc": "Die API-Version von Azure, die dem Format JJJJ-MM-TT folgt. Siehe [Neueste Version](https://learn.microsoft.com/de-de/azure/ai-services/openai/reference#chat-completions)",
+ "fetch": "Abrufen",
+ "title": "Azure API-Version"
+ },
+ "deployments": {
+ "desc": "Geben Sie Ihre Bereitstellungsmodelle mit der Syntax id=name ein (z. B. wenn Bereitstellung und Modell den gleichen Namen haben, können Sie nur den Modellnamen eingeben). Verwenden Sie ein Komma (,) zur Trennung mehrerer Modelle.",
+ "title": "Azure Bereitstellungsmodelle"
+ },
"endpoint": {
"desc": "Diesen Wert finden Sie im Abschnitt „Schlüssel und Endpunkte“, wenn Sie Ressourcen im Azure-Portal überprüfen",
"placeholder": "https://docs-test-001.openai.azure.com",
@@ -38,18 +47,41 @@
"title": "API Schlüssel"
}
},
+ "Bedrock": {
+ "accessKeyId": {
+ "desc": "Geben Sie die AWS Access Key ID ein",
+ "placeholder": "AWS Access Key ID",
+ "title": "AWS Access Key ID"
+ },
+ "checker": {
+ "desc": "Überprüfen Sie, ob AccessKeyId / SecretAccessKey korrekt eingegeben wurden"
+ },
+ "region": {
+ "desc": "Geben Sie die AWS-Region ein",
+ "placeholder": "AWS-Region",
+ "title": "AWS-Region"
+ },
+ "secretAccessKey": {
+ "desc": "Geben Sie den AWS Secret Access Key ein",
+ "placeholder": "AWS Secret Access Key",
+ "title": "AWS Secret Access Key"
+ },
+ "title": "Bedrock"
+ },
+ "Google": {
+ "title": "Google",
+ "token": {
+ "desc": "Geben Sie den API-Schlüssel von Google ein",
+ "placeholder": "Google API Key",
+ "title": "API-Schlüssel"
+ }
+ },
"OpenAI": {
"azureApiVersion": {
"desc": "Die API-Version von Azure, im Format YYYY-MM-DD. Siehe [Neueste Version](https://learn.microsoft.com/de-de/azure/ai-services/openai/reference#chat-completions)",
"fetch": "Liste abrufen",
"title": "Azure API Version"
},
- "check": {
- "button": "Überprüfen",
- "desc": "Überprüfen Sie, ob der API-Schlüssel und die Proxy-Adresse korrekt eingegeben wurden",
- "pass": "Überprüfung erfolgreich",
- "title": "Verbindungstest"
- },
"customModelName": {
"desc": "Fügen Sie benutzerdefinierte Modelle hinzu. Mehrere Modelle werden durch Kommas (,) getrennt",
"placeholder": "Modell1,Modell2,Modell3",
@@ -82,6 +114,20 @@
"title": "Azure OpenAI verwenden"
}
},
+ "Zhipu": {
+ "title": "智谱",
+ "token": {
+ "desc": "Geben Sie den API-Schlüssel von Zhipu ein",
+ "placeholder": "Zhipu API Key",
+ "title": "API-Schlüssel"
+ }
+ },
+ "checker": {
+ "button": "Überprüfen",
+ "desc": "Überprüfen Sie, ob der API-Schlüssel und die Proxy-Adresse korrekt eingegeben wurden",
+ "pass": "Überprüfung bestanden",
+ "title": "Konnektivitätsprüfung"
+ },
"waitingForMore": "Weitere Modelle werden <1>geplant1>, bitte freuen Sie sich auf weitere Updates ✨"
},
"plugin": {
@@ -293,6 +339,7 @@
"builtins": {
"groupName": "Integriert"
},
+ "disabled": "Das aktuelle Modell unterstützt keine Funktionsaufrufe und kann keine Plugins verwenden",
"plugins": {
"enabled": "Aktiviert: {{num}}",
"groupName": "Plugins",
diff --git a/locales/en-US/chat.json b/locales/en-US/chat.json
index 6c148749fb4c..790d41706a87 100644
--- a/locales/en-US/chat.json
+++ b/locales/en-US/chat.json
@@ -1,4 +1,7 @@
{
+ "ModelSwitch": {
+ "title": "Model"
+ },
"agentDefaultMessage": "Hello, I'm **{{name}}**. You can start chatting with me right away, or go to [Agent Settings](/chat/settings#session={{id}}) to complete my information.",
"agentDefaultMessageWithSystemRole": "Hello, I'm **{{name}}**, {{systemRole}}. Let's start chatting!",
"backToBottom": "Back to bottom",
@@ -37,7 +40,7 @@
"sendPlaceholder": "Type your message here...",
"sessionGroup": {
"config": "Group Management",
- "confirmRemoveGroupAlert": "This group is about to be deleted. After deletion, the assistants in this group will be moved to the default list. Please confirm your operation.",
+ "confirmRemoveGroupAlert": "This group is about to be deleted. After deletion, the agents in this group will be moved to the default list. Please confirm your operation.",
"createGroup": "Add New Group",
"createSuccess": "Created successfully",
"inputPlaceholder": "Please enter group name...",
@@ -64,7 +67,14 @@
"prettifying": "Polishing..."
},
"temp": "Temporary",
- "tokenDetail": "Role Setting: {{systemRoleToken}} · Chat History: {{chatsToken}}",
+ "tokenDetails": {
+ "chats": "Chat Messages",
+ "rest": "Remaining",
+ "systemRole": "Role Settings",
+ "tools": "Plugin Settings",
+ "total": "Total Available",
+ "used": "Total Used"
+ },
"tokenTag": {
"overload": "Exceeded Limit",
"remained": "Remaining",
@@ -102,6 +112,7 @@
"updateAgent": "Update Agent Information",
"upload": {
"actionTooltip": "Upload Image",
+ "disabled": "The current model does not support visual recognition. Please switch models to use this feature.",
"dragDesc": "Drag and drop files here, support uploading multiple images. Hold down Shift to send images directly.",
"dragTitle": "Upload Image"
}
diff --git a/locales/en-US/common.json b/locales/en-US/common.json
index 7f39eda271b2..f796658c11f4 100644
--- a/locales/en-US/common.json
+++ b/locales/en-US/common.json
@@ -1,4 +1,12 @@
{
+ "ModelSelect": {
+ "featureTag": {
+ "custom": "Custom model, by default, supports both function call and visual recognition. Please verify the availability of the above capabilities based on actual situations.",
+ "functionCall": "This model supports function call.",
+ "tokens": "This model supports a maximum of {{tokens}} tokens per session.",
+ "vision": "This model supports visual recognition."
+ }
+ },
"about": "About",
"advanceSettings": "Advanced Settings",
"agentMaxToken": "Max Session Length",
@@ -89,6 +97,14 @@
"zh-TW": "Traditional Chinese"
},
"layoutInitializing": "Initializing layout...",
+ "modelProvider": {
+ "azure": "Azure",
+ "bedrock": "AWS Bedrock",
+ "google": "Google",
+ "oneapi": "One API",
+ "openai": "OpenAI",
+ "zhipu": "Zhipu AI"
+ },
"noDescription": "No description available",
"ok": "OK",
"password": "Password",
diff --git a/locales/en-US/error.json b/locales/en-US/error.json
index 0e49c1be8574..9f1d835f4127 100644
--- a/locales/en-US/error.json
+++ b/locales/en-US/error.json
@@ -33,8 +33,17 @@
"502": "Sorry, the server seems to be lost and is temporarily unable to provide service. Please try again later.",
"503": "Sorry, the server is currently unable to process your request, possibly due to overload or maintenance. Please try again later.",
"504": "Sorry, the server did not receive a response from the upstream server. Please try again later.",
- "InvalidAccessCode": "The password is incorrect or empty. Please enter the correct access password or add a custom OpenAI API Key.",
- "NoAPIKey": "OpenAI API Key is empty, please add a custom OpenAI API Key",
+ "AgentRuntimeError": "Lobe language model runtime execution error. Please troubleshoot or retry based on the following information.",
+ "AzureBizError": "Error requesting Azure AI service. Please troubleshoot or retry based on the following information.",
+ "BedrockBizError": "Error requesting Bedrock service. Please troubleshoot or retry based on the following information.",
+ "GoogleBizError": "Error requesting Google service. Please troubleshoot or retry based on the following information.",
+ "InvalidAccessCode": "Invalid access code or empty. Please enter the correct access code or add a custom API Key.",
+ "InvalidAzureAPIKey": "Azure API Key is incorrect or empty. Please check the Azure API Key and retry.",
+ "InvalidBedrockCredentials": "Bedrock authentication failed. Please check the AccessKeyId/SecretAccessKey and retry.",
+ "InvalidGoogleAPIKey": "Google API Key is incorrect or empty. Please check the Google API Key and retry.",
+ "InvalidZhipuAPIKey": "Zhipu API Key is incorrect or empty. Please check the Zhipu API Key and retry.",
+ "LocationNotSupportError": "We're sorry, your current location does not support this model service. This may be due to regional restrictions or the service not being available. Please confirm if the current location supports using this service, or try using a different location.",
+ "NoOpenAIAPIKey": "OpenAI API Key is empty, please add a custom OpenAI API Key",
"OpenAIBizError": "Error requesting OpenAI service. Please troubleshoot or retry based on the following information.",
"PluginApiNotFound": "Sorry, the API does not exist in the plugin's manifest. Please check if your request method matches the plugin manifest API",
"PluginApiParamsError": "Sorry, the input parameter validation for the plugin request failed. Please check if the input parameters match the API description",
@@ -47,7 +56,8 @@
"PluginMetaNotFound": "Sorry, the plugin was not found in the index. Please check the plugin's configuration information in the index",
"PluginOpenApiInitError": "Sorry, the OpenAPI client failed to initialize. Please check if the OpenAPI configuration information is correct.",
"PluginServerError": "Plugin server request returned an error. Please check your plugin manifest file, plugin configuration, or server implementation based on the error information below",
- "PluginSettingsInvalid": "This plugin needs to be correctly configured before it can be used. Please check if your configuration is correct"
+ "PluginSettingsInvalid": "This plugin needs to be correctly configured before it can be used. Please check if your configuration is correct",
+ "ZhipuBizError": "Error requesting Zhipu service. Please troubleshoot or retry based on the following information."
},
"stt": {
"responseError": "Service request failed, please check the configuration or try again"
@@ -57,9 +67,24 @@
},
"unlock": {
"apikey": {
- "addProxyUrl": "Add OpenAI Proxy URL (optional)",
- "description": "Enter your OpenAI API Key to start the conversation. The application will not record your API Key.",
- "title": "Use Custom API Key"
+ "Bedrock": {
+ "customRegion": "Custom service region",
+ "description": "Enter your Aws AccessKeyId / SecretAccessKey to start the session. The app will not store your authentication configuration.",
+ "title": "Use custom Bedrock authentication information"
+ },
+ "Google": {
+ "description": "Enter your Google API Key to start the session. The app will not store your API Key.",
+ "title": "Use custom Google API Key"
+ },
+ "OpenAI": {
+ "addProxyUrl": "Add OpenAI proxy address (optional)",
+ "description": "Enter your OpenAI API Key to start the session. The app will not store your API Key.",
+ "title": "Use custom OpenAI API Key"
+ },
+ "Zhipu": {
+ "description": "Enter your Zhipu API Key to start the session. The app will not store your API Key.",
+ "title": "Use custom Zhipu API Key"
+ }
},
"closeMessage": "Close message",
"confirm": "Confirm and Retry",
@@ -67,6 +92,10 @@
"description": "The application encryption has been enabled by the administrator. Enter the application password to unlock the application. The password only needs to be filled in once.",
"placeholder": "Please enter password",
"title": "Enter Password to Unlock Application"
+ },
+ "tabs": {
+ "apiKey": "Custom API Key",
+ "password": "Password"
}
}
}
diff --git a/locales/en-US/setting.json b/locales/en-US/setting.json
index 1af6c7cdfa06..d5ece14f89d3 100644
--- a/locales/en-US/setting.json
+++ b/locales/en-US/setting.json
@@ -22,6 +22,15 @@
},
"llm": {
"AzureOpenAI": {
+ "azureApiVersion": {
+ "desc": "The API version of Azure, following the format YYYY-MM-DD. Check the [latest version](https://learn.microsoft.com/en-us/azure/ai-services/openai/reference#chat-completions)",
+ "fetch": "Fetch List",
+ "title": "Azure API Version"
+ },
+ "deployments": {
+ "desc": "Fill in your deployment model using the syntax id=name (e.g. if the deployment name is the same as the model name, you can just fill in the model name). Use commas (,) to separate multiple models",
+ "title": "Azure Deployment Models List"
+ },
"endpoint": {
"desc": "This value can be found in the 'Keys and Endpoints' section when checking the resource on the Azure portal",
"placeholder": "https://docs-test-001.openai.azure.com",
@@ -38,18 +47,41 @@
"title": "API Key"
}
},
+ "Bedrock": {
+ "accessKeyId": {
+ "desc": "Enter your Aws Access Key Id",
+ "placeholder": "Aws Access Key Id",
+ "title": "Aws Access Key Id"
+ },
+ "checker": {
+ "desc": "Test if AccessKeyId / SecretAccessKey are filled in correctly"
+ },
+ "region": {
+ "desc": "Enter Aws Region",
+ "placeholder": "Aws Region",
+ "title": "Aws Region"
+ },
+ "secretAccessKey": {
+ "desc": "Enter Aws Secret Access Key",
+ "placeholder": "Aws Secret Access Key",
+ "title": "Aws Secret Access Key"
+ },
+ "title": "Bedrock"
+ },
+ "Google": {
+ "title": "Google",
+ "token": {
+ "desc": "Enter the API Key from Google",
+ "placeholder": "Google API Key",
+ "title": "API Key"
+ }
+ },
"OpenAI": {
"azureApiVersion": {
"desc": "The API version for Azure, following the format YYYY-MM-DD, check the [latest version](https://learn.microsoft.com/en-us/azure/ai-services/openai/reference#chat-completions)",
"fetch": "Fetch List",
"title": "Azure API Version"
},
- "check": {
- "button": "Check",
- "desc": "Test if the Api Key and proxy address are filled in correctly",
- "pass": "Check Passed",
- "title": "Connectivity Check"
- },
"customModelName": {
"desc": "Add custom models, separate multiple models with commas (,)",
"placeholder": "model1,model2,model3",
@@ -82,6 +114,20 @@
"title": "Azure OpenAI"
}
},
+ "Zhipu": {
+ "title": "Zhipu",
+ "token": {
+ "desc": "Enter the API Key from Zhipu",
+ "placeholder": "Zhipu API Key",
+ "title": "API Key"
+ }
+ },
+ "checker": {
+ "button": "Check",
+ "desc": "Test if the Api Key and proxy address are filled in correctly",
+ "pass": "Check Passed",
+ "title": "Connectivity Check"
+ },
"waitingForMore": "More models are <1>planned to be added1>, stay tuned ✨"
},
"plugin": {
@@ -293,6 +339,7 @@
"builtins": {
"groupName": "Built-ins"
},
+ "disabled": "The current model does not support function calls and cannot use the plugin",
"plugins": {
"enabled": "Enabled: {{num}}",
"groupName": "Plugins",
diff --git a/locales/es-ES/chat.json b/locales/es-ES/chat.json
index 2d72259f73ed..d6ddc6b8eea9 100644
--- a/locales/es-ES/chat.json
+++ b/locales/es-ES/chat.json
@@ -1,4 +1,7 @@
{
+ "ModelSwitch": {
+ "title": "Cambiar modelo"
+ },
"agentDefaultMessage": "Hola, soy **{{name}}**, puedes comenzar a chatear conmigo de inmediato o ir a [Configuración del asistente](/chat/settings#session={{id}}) para completar mi información.",
"agentDefaultMessageWithSystemRole": "Hola, soy **{{name}}**, {{systemRole}}, ¡comencemos a chatear!",
"backToBottom": "Volver al fondo",
@@ -64,7 +67,14 @@
"prettifying": "Embelleciendo..."
},
"temp": "Temporal",
- "tokenDetail": "Configuración de rol: {{systemRoleToken}} · Mensajes de sesión: {{chatsToken}}",
+ "tokenDetails": {
+ "chats": "Mensajes de chat",
+ "rest": "Restante",
+ "systemRole": "Rol del sistema",
+ "tools": "Herramientas",
+ "total": "Total",
+ "used": "Utilizado"
+ },
"tokenTag": {
"overload": "Excedido",
"remained": "Restante",
@@ -102,6 +112,7 @@
"updateAgent": "Actualizar información del asistente",
"upload": {
"actionTooltip": "Subir imagen",
+ "disabled": "El modelo actual no admite reconocimiento visual. Por favor, cambia de modelo para usar esta función",
"dragDesc": "Arrastra y suelta archivos aquí, admite la carga de varias imágenes. Mantén presionada la tecla Shift para enviar las imágenes directamente.",
"dragTitle": "Subir imagen"
}
diff --git a/locales/es-ES/common.json b/locales/es-ES/common.json
index 8df4f44c717f..29aaa862f842 100644
--- a/locales/es-ES/common.json
+++ b/locales/es-ES/common.json
@@ -1,4 +1,12 @@
{
+ "ModelSelect": {
+ "featureTag": {
+ "custom": "Modelo personalizado: admite tanto la llamada de funciones como el reconocimiento visual. Por favor, verifique la disponibilidad de estas capacidades según sea necesario.",
+ "functionCall": "Este modelo admite la llamada de funciones (Function Call).",
+ "tokens": "Este modelo admite un máximo de {{tokens}} tokens por sesión.",
+ "vision": "Este modelo admite el reconocimiento visual."
+ }
+ },
"about": "Acerca de",
"advanceSettings": "Configuración avanzada",
"agentMaxToken": "Máximo de tokens de sesión",
@@ -89,6 +97,14 @@
"zh-TW": "Chino tradicional"
},
"layoutInitializing": "Inicializando diseño...",
+ "modelProvider": {
+ "azure": "Azure",
+ "bedrock": "AWS Bedrock",
+ "google": "Google",
+ "oneapi": "One API",
+ "openai": "OpenAI",
+ "zhipu": "Zhipu AI"
+ },
"noDescription": "Sin descripción",
"ok": "Aceptar",
"password": "Contraseña",
diff --git a/locales/es-ES/error.json b/locales/es-ES/error.json
index 74ec9e7a39a9..1f597862bc28 100644
--- a/locales/es-ES/error.json
+++ b/locales/es-ES/error.json
@@ -33,8 +33,17 @@
"502": "Lo sentimos, el servidor parece estar desorientado y no puede proporcionar servicio en este momento. Por favor, inténtelo de nuevo más tarde",
"503": "Lo sentimos, el servidor no puede procesar su solicitud en este momento, posiblemente debido a una sobrecarga o mantenimiento. Por favor, inténtelo de nuevo más tarde",
"504": "Lo sentimos, el servidor no recibió respuesta del servidor upstream. Por favor, inténtelo de nuevo más tarde",
- "InvalidAccessCode": "La contraseña es incorrecta o está vacía. Ingrese la contraseña de acceso correcta o agregue una clave de API de OpenAI personalizada",
- "NoAPIKey": "La clave de API de OpenAI está vacía. Agregue una clave de API de OpenAI personalizada",
+ "AgentRuntimeError": "Se produjo un error en la ejecución del tiempo de ejecución del modelo de lenguaje Lobe, por favor, verifica la siguiente información o inténtalo de nuevo",
+ "AzureBizError": "Se produjo un error al solicitar el servicio de Azure AI, por favor, verifica la siguiente información o inténtalo de nuevo",
+ "BedrockBizError": "Se produjo un error al solicitar el servicio de Bedrock, por favor, verifica la siguiente información o inténtalo de nuevo",
+ "GoogleBizError": "Se produjo un error al solicitar el servicio de Google, por favor, verifica la siguiente información o inténtalo de nuevo",
+ "InvalidAccessCode": "La contraseña no es válida o está vacía. Por favor, introduce una contraseña de acceso válida o añade una clave API personalizada",
+ "InvalidAzureAPIKey": "La clave de API de Azure es incorrecta o está vacía, por favor, verifica la clave de API de Azure e inténtalo de nuevo",
+ "InvalidBedrockCredentials": "La autenticación de Bedrock no se ha completado con éxito, por favor, verifica AccessKeyId/SecretAccessKey e inténtalo de nuevo",
+ "InvalidGoogleAPIKey": "La clave de API de Google es incorrecta o está vacía, por favor, verifica la clave de API de Google e inténtalo de nuevo",
+ "InvalidZhipuAPIKey": "La clave de API de Zhipu es incorrecta o está vacía, por favor, verifica la clave de API de Zhipu e inténtalo de nuevo",
+ "LocationNotSupportError": "Lo sentimos, tu ubicación actual no es compatible con este servicio de modelo, puede ser debido a restricciones geográficas o a que el servicio no está disponible. Por favor, verifica si tu ubicación actual es compatible con este servicio o intenta usar otra información de ubicación.",
+ "NoOpenAIAPIKey": "La clave de API de OpenAI está vacía. Agregue una clave de API de OpenAI personalizada",
"OpenAIBizError": "Error al solicitar el servicio OpenAI. Depure o reintente según la siguiente información",
"PluginApiNotFound": "Lo sentimos, el API especificado no existe en el manifiesto del complemento. Verifique si su método de solicitud coincide con el API del manifiesto del complemento",
"PluginApiParamsError": "Lo sentimos, la validación de los parámetros de entrada de la solicitud del complemento no ha pasado. Verifique si los parámetros de entrada coinciden con la información de descripción del API",
@@ -47,7 +56,8 @@
"PluginMetaNotFound": "Lo sentimos, no se encontró la meta del complemento en el índice. Verifique la información de configuración del complemento en el índice",
"PluginOpenApiInitError": "Lo sentimos, la inicialización del cliente OpenAPI ha fallado. Verifique si la información de configuración de OpenAPI es correcta",
"PluginServerError": "Error al recibir la respuesta del servidor del complemento. Verifique el archivo de descripción del complemento, la configuración del complemento o la implementación del servidor según la información de error a continuación",
- "PluginSettingsInvalid": "Este complemento necesita una configuración correcta antes de poder usarse. Verifique si su configuración es correcta"
+ "PluginSettingsInvalid": "Este complemento necesita una configuración correcta antes de poder usarse. Verifique si su configuración es correcta",
+ "ZhipuBizError": "Se produjo un error al solicitar el servicio Zhipu, por favor, verifica la siguiente información o inténtalo de nuevo"
},
"stt": {
"responseError": "Error en la solicitud de servicio. Verifique la configuración o reintente"
@@ -57,9 +67,24 @@
},
"unlock": {
"apikey": {
- "addProxyUrl": "Añadir URL de proxy de OpenAI (opcional)",
- "description": "Ingresa tu clave de API de OpenAI para comenzar la sesión. La aplicación no guardará tu clave de API",
- "title": "Usar clave de API personalizada"
+ "Bedrock": {
+ "customRegion": "Región de servicio personalizada",
+ "description": "Ingresa tu AccessKeyId/SecretAccessKey de Aws para comenzar la sesión. La aplicación no guardará tu configuración de autenticación",
+ "title": "Usar información de autenticación personalizada de Bedrock"
+ },
+ "Google": {
+ "description": "Ingresa tu clave de API de Google para comenzar la sesión. La aplicación no guardará tu clave de API",
+ "title": "Usar clave de API personalizada de Google"
+ },
+ "OpenAI": {
+ "addProxyUrl": "Agregar dirección de proxy de OpenAI (opcional)",
+ "description": "Ingresa tu clave de API de OpenAI para comenzar la sesión. La aplicación no guardará tu clave de API",
+ "title": "Usar clave de API personalizada de OpenAI"
+ },
+ "Zhipu": {
+ "description": "Ingresa tu clave de API de Zhipu para comenzar la sesión. La aplicación no guardará tu clave de API",
+ "title": "Usar clave de API personalizada de Zhipu"
+ }
},
"closeMessage": "Cerrar mensaje",
"confirm": "Confirmar y volver a intentar",
@@ -67,6 +92,10 @@
"description": "El administrador ha activado el cifrado de la aplicación. Ingresa la contraseña de la aplicación para desbloquearla. La contraseña solo se necesita ingresar una vez",
"placeholder": "Ingresa la contraseña",
"title": "Ingresar contraseña para desbloquear la aplicación"
+ },
+ "tabs": {
+ "apiKey": "Clave de API personalizada",
+ "password": "Contraseña"
}
}
}
diff --git a/locales/es-ES/setting.json b/locales/es-ES/setting.json
index 9d7cb6176d9a..2d65832fd5ba 100644
--- a/locales/es-ES/setting.json
+++ b/locales/es-ES/setting.json
@@ -22,6 +22,15 @@
},
"llm": {
"AzureOpenAI": {
+ "azureApiVersion": {
+ "desc": "Versión de la API de Azure, en formato YYYY-MM-DD. Consulta la [última versión](https://learn.microsoft.com/es-es/azure/ai-services/openai/reference#chat-completions)",
+ "fetch": "Obtener lista",
+ "title": "Versión de la API de Azure"
+ },
+ "deployments": {
+ "desc": "Especifica los modelos de implementación utilizando la sintaxis id=nombre (por ejemplo, si el nombre del modelo y el de la implementación son iguales, puedes especificar solo el nombre del modelo). Para varios modelos, utiliza comas (,) para separarlos",
+ "title": "Lista de implementaciones de Azure"
+ },
"endpoint": {
"desc": "Puedes encontrar este valor en la sección 'Claves y puntos de conexión' al revisar los recursos en el portal de Azure",
"placeholder": "https://docs-test-001.openai.azure.com",
@@ -38,18 +47,41 @@
"title": "Clave de la API"
}
},
+ "Bedrock": {
+ "accessKeyId": {
+ "desc": "Ingresa el ID de clave de acceso de AWS",
+ "placeholder": "ID de clave de acceso de AWS",
+ "title": "ID de clave de acceso de AWS"
+ },
+ "checker": {
+ "desc": "Comprueba si la clave de acceso/clave de acceso secreta de AWS está escrita correctamente"
+ },
+ "region": {
+ "desc": "Ingresa la región de AWS",
+ "placeholder": "Región de AWS",
+ "title": "Región de AWS"
+ },
+ "secretAccessKey": {
+ "desc": "Ingresa la clave de acceso secreta de AWS",
+ "placeholder": "Clave de acceso secreta de AWS",
+ "title": "Clave de acceso secreta de AWS"
+ },
+ "title": "Bedrock"
+ },
+ "Google": {
+ "title": "Google",
+ "token": {
+ "desc": "Ingresa la clave API de Google",
+ "placeholder": "Clave API de Google",
+ "title": "Clave API"
+ }
+ },
"OpenAI": {
"azureApiVersion": {
"desc": "Versión de la API de Azure, sigue el formato YYYY-MM-DD, consulta la [última versión](https://learn.microsoft.com/es-es/azure/ai-services/openai/reference#chat-completions)",
"fetch": "Obtener lista",
"title": "Versión de la API de Azure"
},
- "check": {
- "button": "Comprobar",
- "desc": "Comprueba si la clave de la API y la dirección del proxy están escritas correctamente",
- "pass": "Comprobación exitosa",
- "title": "Comprobación de conectividad"
- },
"customModelName": {
"desc": "Añade modelos personalizados, separados por comas (,)",
"placeholder": "modelo1,modelo2,modelo3",
@@ -82,6 +114,20 @@
"title": "Azure OpenAI"
}
},
+ "Zhipu": {
+ "title": "智谱",
+ "token": {
+ "desc": "Ingresa la clave API de Zhipu",
+ "placeholder": "Clave API de Zhipu",
+ "title": "Clave API"
+ }
+ },
+ "checker": {
+ "button": "Comprobar",
+ "desc": "Comprueba si la clave API y la dirección del proxy están escritas correctamente",
+ "pass": "Comprobación exitosa",
+ "title": "Comprobación de conectividad"
+ },
"waitingForMore": "Más modelos están en <1>planificación para su incorporación1>, ¡estén atentos! ✨"
},
"plugin": {
@@ -293,6 +339,7 @@
"builtins": {
"groupName": "Incorporados"
},
+ "disabled": "El modelo actual no admite llamadas de función y no se puede utilizar el complemento",
"plugins": {
"enabled": "Habilitados {{num}}",
"groupName": "Complementos",
diff --git a/locales/fr-FR/chat.json b/locales/fr-FR/chat.json
index 0f31e51e323f..3ffbc81d2e01 100644
--- a/locales/fr-FR/chat.json
+++ b/locales/fr-FR/chat.json
@@ -1,4 +1,7 @@
{
+ "ModelSwitch": {
+ "title": "Modèle"
+ },
"agentDefaultMessage": "Bonjour, je suis **{{name}}**. Vous pouvez commencer à discuter avec moi dès maintenant ou aller dans [Paramètres de l'agent](/chat/settings#session={{id}}) pour compléter mes informations.",
"agentDefaultMessageWithSystemRole": "Bonjour, je suis **{{name}}**, {{systemRole}}. Commençons la conversation !",
"backToBottom": "Retour en bas",
@@ -37,7 +40,7 @@
"sendPlaceholder": "Saisissez votre message...",
"sessionGroup": {
"config": "Gestion des groupes",
- "confirmRemoveGroupAlert": "Vous êtes sur le point de supprimer ce groupe. Une fois supprimé, les assistants de ce groupe seront déplacés vers la liste par défaut. Veuillez confirmer votre action.",
+ "confirmRemoveGroupAlert": "Vous êtes sur le point de supprimer ce groupe. Une fois supprimé, les agents de ce groupe seront déplacés vers la liste par défaut. Veuillez confirmer votre action.",
"createGroup": "Créer un nouveau groupe",
"createSuccess": "Création réussie",
"inputPlaceholder": "Veuillez saisir le nom du groupe...",
@@ -64,7 +67,14 @@
"prettifying": "En cours d'embellissement..."
},
"temp": "Temporaire",
- "tokenDetail": "Rôle : {{systemRoleToken}} · Messages archivés : {{chatsToken}}",
+ "tokenDetails": {
+ "chats": "Messages de discussion",
+ "rest": "Restant disponible",
+ "systemRole": "Rôle système",
+ "tools": "Paramètres du plugin",
+ "total": "Total disponible",
+ "used": "Total utilisé"
+ },
"tokenTag": {
"overload": "Dépassement de limite",
"remained": "Restant",
@@ -102,6 +112,7 @@
"updateAgent": "Mettre à jour les informations de l'agent",
"upload": {
"actionTooltip": "Télécharger une image",
+ "disabled": "Le modèle actuel ne prend pas en charge la reconnaissance visuelle. Veuillez changer de modèle pour utiliser cette fonctionnalité.",
"dragDesc": "Faites glisser les fichiers ici pour télécharger plusieurs images. Maintenez la touche Maj enfoncée pour envoyer directement les images.",
"dragTitle": "Télécharger une image"
}
diff --git a/locales/fr-FR/common.json b/locales/fr-FR/common.json
index d47aee87d00d..d4fcccd5585a 100644
--- a/locales/fr-FR/common.json
+++ b/locales/fr-FR/common.json
@@ -1,4 +1,12 @@
{
+ "ModelSelect": {
+ "featureTag": {
+ "custom": "Modèle personnalisé, par défaut prend en charge à la fois l'appel de fonction et la reconnaissance visuelle. Veuillez vérifier la disponibilité de ces capacités selon les besoins réels.",
+ "functionCall": "Ce modèle prend en charge l'appel de fonction (Function Call).",
+ "tokens": "Ce modèle prend en charge jusqu'à {{tokens}} jetons par session.",
+ "vision": "Ce modèle prend en charge la reconnaissance visuelle."
+ }
+ },
"about": "À propos",
"advanceSettings": "Paramètres avancés",
"agentMaxToken": "Longueur maximale de la session",
@@ -89,6 +97,14 @@
"zh-TW": "Chinois traditionnel"
},
"layoutInitializing": "Initialisation de la mise en page en cours...",
+ "modelProvider": {
+ "azure": "Azure",
+ "bedrock": "AWS Bedrock",
+ "google": "Google",
+ "oneapi": "One API",
+ "openai": "OpenAI",
+ "zhipu": "Zhipu AI"
+ },
"noDescription": "Aucune description disponible",
"ok": "OK",
"password": "Mot de passe",
diff --git a/locales/fr-FR/error.json b/locales/fr-FR/error.json
index 29e9b41a9e8b..11389c2a80b2 100644
--- a/locales/fr-FR/error.json
+++ b/locales/fr-FR/error.json
@@ -33,8 +33,17 @@
"502": "Désolé, le serveur semble perdu et ne peut temporairement pas fournir de service. Veuillez réessayer plus tard",
"503": "Désolé, le serveur ne peut actuellement pas traiter votre requête, probablement en raison d'une surcharge ou de travaux de maintenance. Veuillez réessayer plus tard",
"504": "Désolé, le serveur n'a pas reçu de réponse de la part du serveur amont. Veuillez réessayer plus tard",
- "InvalidAccessCode": "Mot de passe incorrect ou vide. Veuillez saisir un mot de passe d'accès correct ou ajouter une clé API OpenAI personnalisée",
- "NoAPIKey": "La clé API OpenAI est vide. Veuillez ajouter une clé API OpenAI personnalisée",
+ "AgentRuntimeError": "Erreur d'exécution du modèle linguistique Lobe, veuillez vérifier les informations ci-dessous ou réessayer",
+ "AzureBizError": "Erreur lors de la demande de service Azure AI, veuillez vérifier les informations ci-dessous ou réessayer",
+ "BedrockBizError": "Erreur lors de la demande de service Bedrock, veuillez vérifier les informations ci-dessous ou réessayer",
+ "GoogleBizError": "Erreur lors de la demande de service Google, veuillez vérifier les informations ci-dessous ou réessayer",
+ "InvalidAccessCode": "Le mot de passe est incorrect ou vide. Veuillez saisir le mot de passe d'accès correct ou ajouter une clé API personnalisée.",
+ "InvalidAzureAPIKey": "Clé API Azure incorrecte ou vide, veuillez vérifier la clé API Azure et réessayer",
+ "InvalidBedrockCredentials": "L'authentification Bedrock a échoué, veuillez vérifier AccessKeyId/SecretAccessKey et réessayer",
+ "InvalidGoogleAPIKey": "Clé API Google incorrecte ou vide, veuillez vérifier la clé API Google et réessayer",
+ "InvalidZhipuAPIKey": "Clé API Zhipu incorrecte ou vide, veuillez vérifier la clé API Zhipu et réessayer",
+ "LocationNotSupportError": "Désolé, votre emplacement actuel ne prend pas en charge ce service de modèle, peut-être en raison de restrictions géographiques ou de services non disponibles. Veuillez vérifier si votre emplacement actuel prend en charge ce service ou essayer avec une autre localisation.",
+ "NoOpenAIAPIKey": "La clé API OpenAI est vide. Veuillez ajouter une clé API OpenAI personnalisée",
"OpenAIBizError": "Erreur de service OpenAI. Veuillez diagnostiquer ou réessayer en fonction des informations ci-dessous",
"PluginApiNotFound": "Désolé, l'API spécifiée n'existe pas dans le manifeste du plugin. Veuillez vérifier que votre méthode de requête correspond à l'API du manifeste du plugin",
"PluginApiParamsError": "Désolé, la validation des paramètres d'entrée de la requête de ce plugin a échoué. Veuillez vérifier que les paramètres d'entrée correspondent aux informations de l'API",
@@ -47,7 +56,8 @@
"PluginMetaNotFound": "Désolé, aucune métadonnée de plugin n'a été trouvée dans l'index",
"PluginOpenApiInitError": "Désolé, l'initialisation du client OpenAPI a échoué. Veuillez vérifier les informations de configuration d'OpenAPI.",
"PluginServerError": "Erreur de réponse du serveur du plugin. Veuillez vérifier le fichier de description du plugin, la configuration du plugin ou la mise en œuvre côté serveur en fonction des informations d'erreur ci-dessous",
- "PluginSettingsInvalid": "Ce plugin doit être correctement configuré avant de pouvoir être utilisé. Veuillez vérifier votre configuration"
+ "PluginSettingsInvalid": "Ce plugin doit être correctement configuré avant de pouvoir être utilisé. Veuillez vérifier votre configuration",
+ "ZhipuBizError": "Erreur lors de la demande de service Zhipu, veuillez vérifier les informations ci-dessous ou réessayer"
},
"stt": {
"responseError": "Échec de la requête de service. Veuillez vérifier la configuration ou réessayer"
@@ -57,9 +67,24 @@
},
"unlock": {
"apikey": {
- "addProxyUrl": "Ajouter l'URL du proxy OpenAI (optionnel)",
- "description": "Entrez votre clé API OpenAI pour commencer la session. L'application ne stockera pas votre clé API.",
- "title": "Utiliser une clé API personnalisée"
+ "Bedrock": {
+ "customRegion": "Région de service personnalisée",
+ "description": "Entrez votre AccessKeyId/SecretAccessKey AWS pour commencer la session. L'application ne conservera pas votre configuration d'authentification",
+ "title": "Utiliser des informations d'authentification personnalisées Bedrock"
+ },
+ "Google": {
+ "description": "Entrez votre clé API Google pour commencer la session. L'application ne conservera pas votre clé API",
+ "title": "Utiliser une clé API Google personnalisée"
+ },
+ "OpenAI": {
+ "addProxyUrl": "Ajouter une adresse proxy OpenAI (facultatif)",
+ "description": "Entrez votre clé API OpenAI pour commencer la session. L'application ne conservera pas votre clé API",
+ "title": "Utiliser une clé API OpenAI personnalisée"
+ },
+ "Zhipu": {
+ "description": "Entrez votre clé API Zhipu pour commencer la session. L'application ne conservera pas votre clé API",
+ "title": "Utiliser une clé API Zhipu personnalisée"
+ }
},
"closeMessage": "Fermer le message",
"confirm": "Confirmer et réessayer",
@@ -67,6 +92,10 @@
"description": "L'administrateur a activé le cryptage de l'application. Entrez le mot de passe de l'application pour déverrouiller. Le mot de passe ne doit être saisi qu'une seule fois.",
"placeholder": "Entrez le mot de passe",
"title": "Entrez le mot de passe pour déverrouiller l'application"
+ },
+ "tabs": {
+ "apiKey": "Clé API personnalisée",
+ "password": "Mot de passe"
}
}
}
diff --git a/locales/fr-FR/setting.json b/locales/fr-FR/setting.json
index 5266ec61daad..3e97ff44f976 100644
--- a/locales/fr-FR/setting.json
+++ b/locales/fr-FR/setting.json
@@ -22,6 +22,15 @@
},
"llm": {
"AzureOpenAI": {
+ "azureApiVersion": {
+ "desc": "Version de l'API Azure, au format YYYY-MM-DD. Consultez la [dernière version](https://learn.microsoft.com/fr-fr/azure/ai-services/openai/reference#chat-completions)",
+ "fetch": "Récupérer la liste",
+ "title": "Version de l'API Azure"
+ },
+ "deployments": {
+ "desc": "Utilisez la syntaxe id=nom pour spécifier vos déploiements de modèle (par exemple, si le nom du déploiement est identique au nom du modèle, vous pouvez simplement spécifier le nom du modèle). Utilisez une virgule (,) pour séparer plusieurs modèles",
+ "title": "Liste des déploiements Azure"
+ },
"endpoint": {
"desc": "Lors de la vérification des ressources dans le portail Azure, vous pouvez trouver cette valeur dans la section \"Clés et points de terminaison\"",
"placeholder": "https://docs-test-001.openai.azure.com",
@@ -38,18 +47,41 @@
"title": "Clé API"
}
},
+ "Bedrock": {
+ "accessKeyId": {
+ "desc": "Entrez l'identifiant de clé d'accès AWS",
+ "placeholder": "Identifiant de clé d'accès AWS",
+ "title": "Identifiant de clé d'accès AWS"
+ },
+ "checker": {
+ "desc": "Vérifie si l'AccessKeyId / SecretAccessKey est correctement renseigné"
+ },
+ "region": {
+ "desc": "Entrez la région AWS",
+ "placeholder": "Région AWS",
+ "title": "Région AWS"
+ },
+ "secretAccessKey": {
+ "desc": "Entrez la clé d'accès secrète AWS",
+ "placeholder": "Clé d'accès secrète AWS",
+ "title": "Clé d'accès secrète AWS"
+ },
+ "title": "Bedrock"
+ },
+ "Google": {
+ "title": "Google",
+ "token": {
+ "desc": "Entrez la clé API de Google",
+ "placeholder": "Clé API Google",
+ "title": "Clé API"
+ }
+ },
"OpenAI": {
"azureApiVersion": {
"desc": "Version de l'API Azure, au format YYYY-MM-DD, consultez la [dernière version](https://learn.microsoft.com/zh-cn/azure/ai-services/openai/reference#chat-completions)",
"fetch": "Obtenir la liste",
"title": "Version de l'API Azure"
},
- "check": {
- "button": "Vérifier",
- "desc": "Vérifiez si la clé API et l'adresse du proxy sont correctement renseignées",
- "pass": "Vérification réussie",
- "title": "Vérification de la connectivité"
- },
"customModelName": {
"desc": "Ajoutez des modèles personnalisés, séparés par des virgules (,)",
"placeholder": "modèle1,modèle2,modèle3",
@@ -82,6 +114,20 @@
"title": "Azure OpenAI"
}
},
+ "Zhipu": {
+ "title": "智谱",
+ "token": {
+ "desc": "Entrez la clé API de Zhipu",
+ "placeholder": "Clé API Zhipu",
+ "title": "Clé API"
+ }
+ },
+ "checker": {
+ "button": "Vérifier",
+ "desc": "Vérifie si la clé API et l'adresse du proxy sont correctement renseignées",
+ "pass": "Vérification réussie",
+ "title": "Vérification de la connectivité"
+ },
"waitingForMore": "Plus de modèles sont en cours de <1>planification pour être ajoutés1>, restez à l'écoute ✨"
},
"plugin": {
@@ -293,6 +339,7 @@
"builtins": {
"groupName": "Intégré"
},
+ "disabled": "Ce modèle ne prend pas en charge les appels de fonction et ne peut pas utiliser de plugins",
"plugins": {
"enabled": "Activé {{num}}",
"groupName": "Plugins",
diff --git a/locales/it-IT/chat.json b/locales/it-IT/chat.json
index 875e7f305751..07794d06027d 100644
--- a/locales/it-IT/chat.json
+++ b/locales/it-IT/chat.json
@@ -1,4 +1,7 @@
{
+ "ModelSwitch": {
+ "title": "Modelli"
+ },
"agentDefaultMessage": "Ciao, sono **{{name}}**, puoi iniziare a chattare con me subito o andare a [impostazioni assistente](/chat/settings#session={{id}}) per completare le mie informazioni.",
"agentDefaultMessageWithSystemRole": "Ciao, sono **{{name}}**, {{systemRole}}, iniziamo a chattare!",
"backToBottom": "Torna in fondo",
@@ -64,7 +67,14 @@
"prettifying": "Miglioramento in corso..."
},
"temp": "Temporaneo",
- "tokenDetail": "Impostazione ruolo: {{systemRoleToken}} · Messaggi di sessione: {{chatsToken}} · Impostazione strumenti: {{toolsToken}}",
+ "tokenDetails": {
+ "chats": "Chat",
+ "rest": "Rimanenti",
+ "systemRole": "Ruolo di sistema",
+ "tools": "Strumenti",
+ "total": "Totale",
+ "used": "Utilizzati"
+ },
"tokenTag": {
"overload": "Superamento limite",
"remained": "Rimasti",
@@ -102,6 +112,7 @@
"updateAgent": "Aggiorna informazioni assistente",
"upload": {
"actionTooltip": "Carica immagine",
+ "disabled": "Il modello attuale non supporta il riconoscimento visivo, si prega di cambiare modello prima di utilizzarlo",
"dragDesc": "Trascina i file qui, supporta il caricamento di più immagini. Tieni premuto Shift per inviare direttamente le immagini",
"dragTitle": "Carica immagine"
}
diff --git a/locales/it-IT/common.json b/locales/it-IT/common.json
index 7e4de01f1451..eefcc2586da0 100644
--- a/locales/it-IT/common.json
+++ b/locales/it-IT/common.json
@@ -1,4 +1,12 @@
{
+ "ModelSelect": {
+ "featureTag": {
+ "custom": "Modello personalizzato, di default supporta sia la chiamata di funzioni che il riconoscimento visivo. Si prega di verificare l'effettiva disponibilità di tali funzionalità in base alle esigenze specifiche.",
+ "functionCall": "Questo modello supporta la chiamata di funzioni (Function Call)",
+ "tokens": "Questo modello supporta un massimo di {{tokens}} token per singola sessione",
+ "vision": "Questo modello supporta il riconoscimento visivo"
+ }
+ },
"about": "Informazioni",
"advanceSettings": "Impostazioni avanzate",
"agentMaxToken": "Massima lunghezza della sessione",
@@ -89,6 +97,14 @@
"zh-TW": "Cinese tradizionale"
},
"layoutInitializing": "Inizializzazione layout in corso...",
+ "modelProvider": {
+ "azure": "Azure",
+ "bedrock": "AWS Bedrock",
+ "google": "Google",
+ "oneapi": "One API",
+ "openai": "OpenAI",
+ "zhipu": "Zhipu AI"
+ },
"noDescription": "Nessuna descrizione disponibile",
"ok": "OK",
"password": "Password",
diff --git a/locales/it-IT/error.json b/locales/it-IT/error.json
index 48047a0c60b5..32dcc6e65453 100644
--- a/locales/it-IT/error.json
+++ b/locales/it-IT/error.json
@@ -33,8 +33,17 @@
"502": "Spiacenti, il server sembra smarrito e non può fornire servizio al momento. Riprova più tardi",
"503": "Spiacenti, il server non può elaborare la tua richiesta al momento, probabilmente a causa di sovraccarico o manutenzione in corso. Riprova più tardi",
"504": "Spiacenti, il server non ha ricevuto risposta dal server upstream. Riprova più tardi",
- "InvalidAccessCode": "Password non corretta o vuota. Inserisci una password di accesso corretta o aggiungi una chiave API personalizzata OpenAI",
- "NoAPIKey": "La chiave API OpenAI è vuota. Aggiungi una chiave API personalizzata OpenAI",
+ "AgentRuntimeError": "Errore di esecuzione del modello linguistico Lobe, controlla le informazioni seguenti o riprova",
+ "AzureBizError": "Errore nella richiesta del servizio Azure AI, controlla le informazioni seguenti o riprova",
+ "BedrockBizError": "Errore nella richiesta del servizio Bedrock, controlla le informazioni seguenti o riprova",
+ "GoogleBizError": "Errore nella richiesta del servizio Google, controlla le informazioni seguenti o riprova",
+ "InvalidAccessCode": "Password incorrect or empty, please enter the correct access password, or add a custom API Key",
+ "InvalidAzureAPIKey": "Chiave API Azure non corretta o vuota, controlla la chiave API Azure e riprova",
+ "InvalidBedrockCredentials": "Autenticazione Bedrock non riuscita, controlla AccessKeyId/SecretAccessKey e riprova",
+ "InvalidGoogleAPIKey": "Chiave API Google non corretta o vuota, controlla la chiave API Google e riprova",
+ "InvalidZhipuAPIKey": "Chiave API Zhipu non corretta o vuota, controlla la chiave API Zhipu e riprova",
+ "LocationNotSupportError": "Spiacenti, la tua posizione attuale non supporta questo servizio modello, potrebbe essere a causa di restrizioni geografiche o servizi non attivati. Verifica se la posizione attuale supporta l'uso di questo servizio o prova a utilizzare un'altra posizione.",
+ "NoOpenAIAPIKey": "La chiave API OpenAI è vuota. Aggiungi una chiave API personalizzata OpenAI",
"OpenAIBizError": "Errore nella richiesta del servizio OpenAI. Segui le informazioni seguenti per individuare e riprovare",
"PluginApiNotFound": "Spiacenti, l'API specificata non esiste nel manifesto del plugin. Verifica che il metodo di richiesta corrisponda all'API del manifesto del plugin",
"PluginApiParamsError": "Spiacenti, la convalida dei parametri di input della richiesta del plugin non è riuscita. Verifica che i parametri di input corrispondano alle informazioni dell'API",
@@ -47,7 +56,8 @@
"PluginMetaNotFound": "Spiacenti, il plugin non è stato trovato nell'indice. Verifica che le informazioni di configurazione del plugin siano presenti nell'indice",
"PluginOpenApiInitError": "Spiacenti, inizializzazione fallita del client OpenAPI. Verifica che le informazioni di configurazione di OpenAPI siano corrette",
"PluginServerError": "Errore nella risposta del server del plugin. Verifica il file descrittivo del plugin, la configurazione del plugin o l'implementazione del server",
- "PluginSettingsInvalid": "Il plugin deve essere configurato correttamente prima di poter essere utilizzato. Verifica che la tua configurazione sia corretta"
+ "PluginSettingsInvalid": "Il plugin deve essere configurato correttamente prima di poter essere utilizzato. Verifica che la tua configurazione sia corretta",
+ "ZhipuBizError": "Errore nella richiesta del servizio Zhipu, controlla le informazioni seguenti o riprova"
},
"stt": {
"responseError": "Errore nella richiesta del servizio. Verifica la configurazione o riprova"
@@ -57,9 +67,24 @@
},
"unlock": {
"apikey": {
- "addProxyUrl": "Aggiungi URL del proxy OpenAI (opzionale)",
- "description": "Inserisci la tua chiave API OpenAI per iniziare la sessione. L'applicazione non memorizzerà la tua chiave API.",
- "title": "Utilizza una chiave API personalizzata"
+ "Bedrock": {
+ "customRegion": "Regione del servizio personalizzata",
+ "description": "Inserisci il tuo Aws AccessKeyId / SecretAccessKey per iniziare la sessione. L'applicazione non memorizzerà la tua configurazione di autenticazione",
+ "title": "Utilizza le informazioni di autenticazione personalizzate di Bedrock"
+ },
+ "Google": {
+ "description": "Inserisci la tua chiave API Google per iniziare la sessione. L'applicazione non memorizzerà la tua chiave API",
+ "title": "Utilizza la chiave API Google personalizzata"
+ },
+ "OpenAI": {
+ "addProxyUrl": "Aggiungi l'indirizzo del proxy OpenAI (opzionale)",
+ "description": "Inserisci la tua chiave API OpenAI per iniziare la sessione. L'applicazione non memorizzerà la tua chiave API",
+ "title": "Utilizza la chiave API OpenAI personalizzata"
+ },
+ "Zhipu": {
+ "description": "Inserisci la tua chiave API Zhipu per iniziare la sessione. L'applicazione non memorizzerà la tua chiave API",
+ "title": "Utilizza la chiave API Zhipu personalizzata"
+ }
},
"closeMessage": "Chiudi messaggio",
"confirm": "Conferma e riprova",
@@ -67,6 +92,10 @@
"description": "L'amministratore ha attivato la crittografia dell'applicazione. Inserisci la password dell'applicazione per sbloccarla. La password va inserita solo una volta.",
"placeholder": "Inserisci la password",
"title": "Inserisci la password per sbloccare l'applicazione"
+ },
+ "tabs": {
+ "apiKey": "Chiave API personalizzata",
+ "password": "Password"
}
}
}
diff --git a/locales/it-IT/setting.json b/locales/it-IT/setting.json
index 59c20179b4f4..7dbc29ca42a9 100644
--- a/locales/it-IT/setting.json
+++ b/locales/it-IT/setting.json
@@ -22,6 +22,15 @@
},
"llm": {
"AzureOpenAI": {
+ "azureApiVersion": {
+ "desc": "Versione dell'API di Azure, nel formato YYYY-MM-DD, consulta la [versione più recente](https://learn.microsoft.com/it-it/azure/ai-services/openai/reference#chat-completions)",
+ "fetch": "Ottieni elenco",
+ "title": "Versione dell'API di Azure"
+ },
+ "deployments": {
+ "desc": "Inserisci i tuoi modelli di distribuzione utilizzando la sintassi id=nome (ad esempio, se il nome del modello e della distribuzione sono gli stessi, è possibile inserire solo il nome del modello). Per più modelli, separali con virgola (,)",
+ "title": "Elenco dei modelli di distribuzione di Azure"
+ },
"endpoint": {
"desc": "Puoi trovarlo nella sezione 'Chiavi e endpoint' quando controlli le risorse su Azure Portal",
"placeholder": "https://docs-test-001.openai.azure.com",
@@ -38,18 +47,41 @@
"title": "Chiave API"
}
},
+ "Bedrock": {
+ "accessKeyId": {
+ "desc": "Inserisci Aws Access Key Id",
+ "placeholder": "Aws Access Key Id",
+ "title": "Aws Access Key Id"
+ },
+ "checker": {
+ "desc": "Verifica se AccessKeyId / SecretAccessKey sono stati inseriti correttamente"
+ },
+ "region": {
+ "desc": "Inserisci Aws Region",
+ "placeholder": "Aws Region",
+ "title": "Aws Region"
+ },
+ "secretAccessKey": {
+ "desc": "Inserisci Aws Secret Access Key",
+ "placeholder": "Aws Secret Access Key",
+ "title": "Aws Secret Access Key"
+ },
+ "title": "Bedrock"
+ },
+ "Google": {
+ "title": "Google",
+ "token": {
+ "desc": "Inserisci la chiave API da Google",
+ "placeholder": "Chiave API Google",
+ "title": "Chiave API"
+ }
+ },
"OpenAI": {
"azureApiVersion": {
"desc": "Versione dell'API di Azure, nel formato YYYY-MM-DD, consulta [ultima versione](https://learn.microsoft.com/it-it/azure/ai-services/openai/reference#chat-completions)",
"fetch": "Ottieni elenco",
"title": "Versione API di Azure"
},
- "check": {
- "button": "Controlla",
- "desc": "Verifica se la chiave API e l'indirizzo del proxy sono compilati correttamente",
- "pass": "Controllo superato",
- "title": "Controllo di connettività"
- },
"customModelName": {
"desc": "Aggiungi modelli personalizzati, separati da virgola (,)",
"placeholder": "modello1, modello2, modello3",
@@ -82,6 +114,20 @@
"title": "Usa Azure OpenAI"
}
},
+ "Zhipu": {
+ "title": "智谱",
+ "token": {
+ "desc": "Inserisci la chiave API da Zhipu",
+ "placeholder": "Chiave API Zhipu",
+ "title": "Chiave API"
+ }
+ },
+ "checker": {
+ "button": "Verifica",
+ "desc": "Verifica se la chiave API e l'indirizzo del proxy sono stati inseriti correttamente",
+ "pass": "Verifica superata",
+ "title": "Verifica di connettività"
+ },
"waitingForMore": "Altri modelli sono in fase di <1> pianificazione per l'integrazione 1>, resta sintonizzato ✨"
},
"plugin": {
@@ -293,6 +339,7 @@
"builtins": {
"groupName": "Predefiniti"
},
+ "disabled": "Il modello attuale non supporta le chiamate di funzione e non è possibile utilizzare il plugin",
"plugins": {
"enabled": "Abilitato {{num}}",
"groupName": "Plugin",
diff --git a/locales/ja-JP/chat.json b/locales/ja-JP/chat.json
index bd0d412e3af3..90e58d4fc33f 100644
--- a/locales/ja-JP/chat.json
+++ b/locales/ja-JP/chat.json
@@ -1,4 +1,7 @@
{
+ "ModelSwitch": {
+ "title": "モデル"
+ },
"agentDefaultMessage": "こんにちは、私は **{{name}}** です。すぐにチャットを開始するか、[エージェント設定](/chat/settings#session={{id}}) に移動して私の情報を完全にすることができます。",
"agentDefaultMessageWithSystemRole": "こんにちは、私は **{{name}}** です、{{systemRole}}、さあ、チャットを始めましょう!",
"backToBottom": "現在に戻る",
@@ -64,7 +67,14 @@
"prettifying": "整形中..."
},
"temp": "一時的",
- "tokenDetail": "役割設定: {{systemRoleToken}} · チャット履歴: {{chatsToken}}",
+ "tokenDetails": {
+ "chats": "チャットメッセージ",
+ "rest": "残り利用可能",
+ "systemRole": "システムロール設定",
+ "tools": "ツール設定",
+ "total": "合計利用可能",
+ "used": "合計使用"
+ },
"tokenTag": {
"overload": "制限を超えています",
"remained": "残り",
@@ -102,6 +112,7 @@
"updateAgent": "エージェント情報を更新",
"upload": {
"actionTooltip": "画像をアップロード",
+ "disabled": "現在のモデルはビジュアル認識をサポートしていません。モデルを切り替えて使用してください",
"dragDesc": "ファイルをここにドラッグしてください。複数の画像をアップロードできます。Shift キーを押しながら画像を直接送信することもできます。",
"dragTitle": "画像をアップロード"
}
diff --git a/locales/ja-JP/common.json b/locales/ja-JP/common.json
index d4fb6ccc522e..1e870b334257 100644
--- a/locales/ja-JP/common.json
+++ b/locales/ja-JP/common.json
@@ -1,4 +1,12 @@
{
+ "ModelSelect": {
+ "featureTag": {
+ "custom": "カスタムモデル、デフォルトでは関数呼び出しとビジョン認識の両方をサポートしています。上記の機能の有効性を実際の状況で検証してください。",
+ "functionCall": "このモデルは関数呼び出し(Function Call)をサポートしています。",
+ "tokens": "このモデルは1つのセッションあたり最大{{tokens}}トークンをサポートしています。",
+ "vision": "このモデルはビジョン認識をサポートしています。"
+ }
+ },
"about": "概要",
"advanceSettings": "高度な設定",
"agentMaxToken": "エージェントの最大トークン数",
@@ -89,6 +97,14 @@
"zh-TW": "繁体字中国語"
},
"layoutInitializing": "レイアウトを初期化中...",
+ "modelProvider": {
+ "azure": "Azure",
+ "bedrock": "AWSベッドロック",
+ "google": "Google",
+ "oneapi": "One API",
+ "openai": "OpenAI",
+ "zhipu": "智譜AI"
+ },
"noDescription": "説明はありません",
"ok": "OK",
"password": "パスワード",
diff --git a/locales/ja-JP/error.json b/locales/ja-JP/error.json
index 024fc9fe2255..94a15e1e825e 100644
--- a/locales/ja-JP/error.json
+++ b/locales/ja-JP/error.json
@@ -33,8 +33,17 @@
"502": "申し訳ありませんが、サーバーは一時的にサービスを提供できません。しばらくしてから再試行してください",
"503": "申し訳ありませんが、サーバーは現在、リクエストを処理できません。オーバーロードまたはメンテナンス中の可能性があります。しばらくしてから再試行してください",
"504": "申し訳ありませんが、サーバーは上位サーバーからの応答を待っていません。しばらくしてから再試行してください",
- "InvalidAccessCode": "パスワードが正しくないか空です。正しいアクセスパスワードを入力するか、カスタムのOpenAI APIキーを追加してください",
- "NoAPIKey": "OpenAI APIキーが空です。カスタムOpenAI APIキーを追加してください。",
+ "AgentRuntimeError": "Lobe言語モデルの実行時にエラーが発生しました。以下の情報に基づいてトラブルシューティングを行うか、再試行してください。",
+ "AzureBizError": "Azure AIサービスのリクエストでエラーが発生しました。以下の情報に基づいてトラブルシューティングを行うか、再試行してください。",
+ "BedrockBizError": "Bedrockサービスのリクエストでエラーが発生しました。以下の情報に基づいてトラブルシューティングを行うか、再試行してください。",
+ "GoogleBizError": "Googleサービスのリクエストでエラーが発生しました。以下の情報に基づいてトラブルシューティングを行うか、再試行してください。",
+ "InvalidAccessCode": "パスワードが正しくないか空です。正しいアクセスパスワードを入力するか、カスタムAPIキーを追加してください",
+ "InvalidAzureAPIKey": "Azure APIキーが正しくないか空です。Azure APIキーを確認してから再試行してください。",
+ "InvalidBedrockCredentials": "Bedrockの認証に失敗しました。AccessKeyId/SecretAccessKeyを確認してから再試行してください。",
+ "InvalidGoogleAPIKey": "Google APIキーが正しくないか空です。Google APIキーを確認してから再試行してください。",
+ "InvalidZhipuAPIKey": "Zhipu APIキーが正しくないか空です。Zhipu APIキーを確認してから再試行してください。",
+ "LocationNotSupportError": "申し訳ありませんが、お住まいの地域ではこのモデルサービスをサポートしていません。地域制限またはサービスが利用できない可能性があります。現在の位置がこのサービスをサポートしているかどうかを確認するか、他の位置情報を使用してみてください。",
+ "NoOpenAIAPIKey": "OpenAI APIキーが空です。カスタムOpenAI APIキーを追加してください。",
"OpenAIBizError": "OpenAIサービスのリクエストエラーが発生しました。以下の情報に基づいて問題を解決したり、再試行したりしてください",
"PluginApiNotFound": "申し訳ありませんが、プラグインのマニフェストに指定されたAPIが見つかりませんでした。リクエストメソッドとプラグインのマニフェストのAPIが一致しているかどうかを確認してください",
"PluginApiParamsError": "申し訳ありませんが、プラグインのリクエストパラメータの検証に失敗しました。パラメータとAPIの説明が一致しているかどうか確認してください",
@@ -47,7 +56,8 @@
"PluginMetaNotFound": "申し訳ありませんが、インデックスでプラグインが見つかりませんでした。プラグインの設定情報をインデックスで確認してください",
"PluginOpenApiInitError": "申し訳ありませんが、OpenAPIクライアントの初期化に失敗しました。OpenAPIの設定情報を確認してください。",
"PluginServerError": "プラグインサーバーのリクエストエラーが発生しました。以下のエラーメッセージを参考に、プラグインのマニフェストファイル、設定、サーバー実装を確認してください",
- "PluginSettingsInvalid": "このプラグインを使用するには、正しい設定が必要です。設定が正しいかどうか確認してください"
+ "PluginSettingsInvalid": "このプラグインを使用するには、正しい設定が必要です。設定が正しいかどうか確認してください",
+ "ZhipuBizError": "Zhipuサービスのリクエストでエラーが発生しました。以下の情報に基づいてトラブルシューティングを行うか、再試行してください。"
},
"stt": {
"responseError": "サービスリクエストが失敗しました。設定を確認するか、もう一度お試しください"
@@ -57,9 +67,24 @@
},
"unlock": {
"apikey": {
- "addProxyUrl": "OpenAIプロキシURLを追加(オプション)",
- "description": "OpenAI APIキーを入力すると、会話を開始できます。アプリはあなたのAPIキーを記録しません。",
- "title": "カスタムAPIキーの使用"
+ "Bedrock": {
+ "customRegion": "自定义服务区域",
+ "description": "Aws AccessKeyId / SecretAccessKeyを入力してセッションを開始します。アプリは認証構成を記録しません。",
+ "title": "カスタムBedrock認証情報を使用"
+ },
+ "Google": {
+ "description": "Google APIキーを入力してセッションを開始します。アプリはAPIキーを記録しません。",
+ "title": "カスタムGoogle APIキーを使用"
+ },
+ "OpenAI": {
+ "addProxyUrl": "OpenAIプロキシアドレスを追加(オプション)",
+ "description": "OpenAI APIキーを入力してセッションを開始します。アプリはAPIキーを記録しません。",
+ "title": "カスタムOpenAI APIキーを使用"
+ },
+ "Zhipu": {
+ "description": "Zhipu APIキーを入力してセッションを開始します。アプリはAPIキーを記録しません。",
+ "title": "カスタムZhipu APIキーを使用"
+ }
},
"closeMessage": "ヒントを閉じる",
"confirm": "確認して再試行",
@@ -67,6 +92,10 @@
"description": "管理者によってアプリが暗号化されました。アプリをロック解除するには、アプリのパスワードを入力してください。パスワードは1回だけ入力すればよいです",
"placeholder": "パスワードを入力してください",
"title": "パスワードを入力してアプリをロック解除"
+ },
+ "tabs": {
+ "apiKey": "カスタムAPIキー",
+ "password": "パスワード"
}
}
}
diff --git a/locales/ja-JP/setting.json b/locales/ja-JP/setting.json
index 144de2765218..b415fc4a4603 100644
--- a/locales/ja-JP/setting.json
+++ b/locales/ja-JP/setting.json
@@ -22,6 +22,15 @@
},
"llm": {
"AzureOpenAI": {
+ "azureApiVersion": {
+ "desc": "AzureのAPIバージョン。YYYY-MM-DD形式に従う。[最新バージョン](https://learn.microsoft.com/zh-cn/azure/ai-services/openai/reference#chat-completions)を参照",
+ "fetch": "リストを取得",
+ "title": "Azure APIバージョン"
+ },
+ "deployments": {
+ "desc": "id=nameの構文を使用して、デプロイモデルを記入します(デプロイ名とモデルが同じ場合、モデル名のみを記入できます)。複数のモデルは、カンマ(,)で区切ります",
+ "title": "Azureデプロイリスト"
+ },
"endpoint": {
"desc": "Azure ポータルでリソースを確認すると、この値は「キーとエンドポイント」セクションで見つけることができます",
"placeholder": "https://docs-test-001.openai.azure.com",
@@ -38,18 +47,41 @@
"title": "API キー"
}
},
+ "Bedrock": {
+ "accessKeyId": {
+ "desc": "Aws Access Key Idを入力",
+ "placeholder": "Aws Access Key Id",
+ "title": "Aws Access Key Id"
+ },
+ "checker": {
+ "desc": "AccessKeyId / SecretAccessKeyが正しく記入されているかをテスト"
+ },
+ "region": {
+ "desc": "Aws Regionを入力",
+ "placeholder": "Aws Region",
+ "title": "Aws Region"
+ },
+ "secretAccessKey": {
+ "desc": "Aws Secret Access Keyを入力",
+ "placeholder": "Aws Secret Access Key",
+ "title": "Aws Secret Access Key"
+ },
+ "title": "Bedrock"
+ },
+ "Google": {
+ "title": "Google",
+ "token": {
+ "desc": "Googleから取得したAPIキーを入力",
+ "placeholder": "Google API Key",
+ "title": "APIキー"
+ }
+ },
"OpenAI": {
"azureApiVersion": {
"desc": "Azure の API バージョンは YYYY-MM-DD 形式に従い、[最新バージョン](https://learn.microsoft.com/zh-cn/azure/ai-services/openai/reference#chat-completions)を参照してください",
"fetch": "リストを取得",
"title": "Azure API バージョン"
},
- "check": {
- "button": "チェック",
- "desc": "API キーとプロキシアドレスが正しく入力されているかをテストします",
- "pass": "チェックに合格",
- "title": "接続性チェック"
- },
"customModelName": {
"desc": "カスタムモデルを追加し、複数のモデルはカンマ(,)で区切って使用します",
"placeholder": "model1,model2,model3",
@@ -82,6 +114,20 @@
"title": "Azure OpenAI を使用"
}
},
+ "Zhipu": {
+ "title": "智谱",
+ "token": {
+ "desc": "智谱から取得したAPIキーを入力",
+ "placeholder": "Zhipu API Key",
+ "title": "APIキー"
+ }
+ },
+ "checker": {
+ "button": "チェック",
+ "desc": "APIキーとプロキシアドレスが正しく記入されているかをテスト",
+ "pass": "チェック合格",
+ "title": "接続性チェック"
+ },
"waitingForMore": "さらに多くのモデルが <1>計画されています1>。お楽しみに ✨"
},
"plugin": {
@@ -293,6 +339,7 @@
"builtins": {
"groupName": "組み込み"
},
+ "disabled": "現在のモデルは関数呼び出しをサポートしていません。プラグインを使用できません",
"plugins": {
"enabled": "{{num}} が有効",
"groupName": "プラグイン",
diff --git a/locales/ko-KR/chat.json b/locales/ko-KR/chat.json
index c2eafa9922d6..b84d9a0723b3 100644
--- a/locales/ko-KR/chat.json
+++ b/locales/ko-KR/chat.json
@@ -1,4 +1,7 @@
{
+ "ModelSwitch": {
+ "title": "모델"
+ },
"agentDefaultMessage": "안녕하세요, 저는 **{{name}}**입니다. 지금 즉시 대화를 시작하거나 [도우미 설정](/chat/settings#session={{id}})으로 이동하여 내 정보를 완성할 수 있습니다.",
"agentDefaultMessageWithSystemRole": "안녕하세요, 저는 **{{name}}**입니다. {{systemRole}}입니다. 대화를 시작해 봅시다!",
"backToBottom": "하단으로 이동",
@@ -64,7 +67,14 @@
"prettifying": "정제 중..."
},
"temp": "임시",
- "tokenDetail": "역할 설정: {{systemRoleToken}} · 대화 기록: {{chatsToken}}",
+ "tokenDetails": {
+ "chats": "채팅 메시지",
+ "rest": "남은 사용량",
+ "systemRole": "시스템 역할",
+ "tools": "도구 설정",
+ "total": "총 사용량",
+ "used": "총 사용"
+ },
"tokenTag": {
"overload": "한도 초과",
"remained": "남음",
@@ -102,6 +112,7 @@
"updateAgent": "도우미 정보 업데이트",
"upload": {
"actionTooltip": "이미지 업로드",
+ "disabled": "현재 모델은 시각 인식을 지원하지 않습니다. 모델을 전환한 후 사용해주세요.",
"dragDesc": "여기로 파일을 끌어다 놓거나 여러 이미지를 업로드할 수 있습니다. Shift를 누른 채로 이미지를 직접 보내기",
"dragTitle": "이미지 업로드"
}
diff --git a/locales/ko-KR/common.json b/locales/ko-KR/common.json
index 1ab0d9b17e7f..14d9ccd7d307 100644
--- a/locales/ko-KR/common.json
+++ b/locales/ko-KR/common.json
@@ -1,4 +1,12 @@
{
+ "ModelSelect": {
+ "featureTag": {
+ "custom": "사용자 정의 모델, 기본적으로 함수 호출 및 시각 인식을 모두 지원하며, 상기 기능의 가용성을 실제로 확인하십시오",
+ "functionCall": "이 모델은 함수 호출을 지원합니다",
+ "tokens": "이 모델은 단일 세션당 최대 {{tokens}} 토큰을 지원합니다",
+ "vision": "이 모델은 시각 인식을 지원합니다"
+ }
+ },
"about": "소개",
"advanceSettings": "고급 설정",
"agentMaxToken": "최대 대화 길이",
@@ -89,6 +97,14 @@
"zh-TW": "중국어(번체)"
},
"layoutInitializing": "레이아웃을 불러오는 중...",
+ "modelProvider": {
+ "azure": "Azure",
+ "bedrock": "AWS Bedrock",
+ "google": "Google",
+ "oneapi": "One API",
+ "openai": "OpenAI",
+ "zhipu": "지푸 AI"
+ },
"noDescription": "설명 없음",
"ok": "확인",
"password": "비밀번호",
diff --git a/locales/ko-KR/error.json b/locales/ko-KR/error.json
index 192bc6586a28..1a80ada524b5 100644
--- a/locales/ko-KR/error.json
+++ b/locales/ko-KR/error.json
@@ -33,8 +33,17 @@
"502": "죄송합니다. 서버가 잠시 서비스를 제공할 수 없는 상태입니다. 잠시 후에 다시 시도해주세요.",
"503": "죄송합니다. 서버가 현재 요청을 처리할 수 없습니다. 과부하 또는 유지 보수 중일 수 있습니다. 잠시 후에 다시 시도해주세요.",
"504": "죄송합니다. 서버가 상위 서버의 응답을 기다리지 못했습니다. 잠시 후에 다시 시도해주세요.",
- "InvalidAccessCode": "암호가 올바르지 않거나 비어 있습니다. 올바른 액세스 암호를 입력하거나 사용자 지정 OpenAI API 키를 추가해주세요.",
- "NoAPIKey": "OpenAI API 키가 비어 있습니다. 사용자 정의 OpenAI API 키를 추가해주세요.",
+ "AgentRuntimeError": "Lobe 언어 모델 실행 중 오류가 발생했습니다. 아래 정보를 확인하고 다시 시도하십시오.",
+ "AzureBizError": "Azure AI 서비스 요청 중 오류가 발생했습니다. 아래 정보를 확인하고 다시 시도하십시오.",
+ "BedrockBizError": "Bedrock 서비스 요청 중 오류가 발생했습니다. 아래 정보를 확인하고 다시 시도하십시오.",
+ "GoogleBizError": "Google 서비스 요청 중 오류가 발생했습니다. 아래 정보를 확인하고 다시 시도하십시오.",
+ "InvalidAccessCode": "액세스 코드가 잘못되었거나 비어 있습니다. 올바른 액세스 코드를 입력하거나 사용자 지정 API 키를 추가하십시오.",
+ "InvalidAzureAPIKey": "잘못된 또는 비어 있는 Azure API Key입니다. Azure API Key를 확인한 후 다시 시도하십시오.",
+ "InvalidBedrockCredentials": "Bedrock 인증에 실패했습니다. AccessKeyId/SecretAccessKey를 확인한 후 다시 시도하십시오.",
+ "InvalidGoogleAPIKey": "잘못된 또는 비어 있는 Google API Key입니다. Google API Key를 확인한 후 다시 시도하십시오.",
+ "InvalidZhipuAPIKey": "잘못된 또는 비어 있는 Zhipu API Key입니다. Zhipu API Key를 확인한 후 다시 시도하십시오.",
+ "LocationNotSupportError": "죄송합니다. 귀하의 현재 위치는 해당 모델 서비스를 지원하지 않습니다. 지역 제한 또는 서비스 미개통으로 인한 것일 수 있습니다. 현재 위치가 해당 서비스를 지원하는지 확인하거나 다른 위치 정보를 사용해 보십시오.",
+ "NoOpenAIAPIKey": "OpenAI API 키가 비어 있습니다. 사용자 정의 OpenAI API 키를 추가해주세요.",
"OpenAIBizError": "OpenAI 서비스 요청 중 오류가 발생했습니다. 아래 정보를 확인하고 문제를 해결하거나 다시 시도해주세요.",
"PluginApiNotFound": "죄송합니다. 플러그인 설명서에 해당 API가 없습니다. 요청 메서드와 플러그인 설명서 API가 일치하는지 확인해주세요.",
"PluginApiParamsError": "죄송합니다. 플러그인 요청의 입력 매개변수 유효성 검사에 실패했습니다. 입력 매개변수와 API 설명 정보가 일치하는지 확인해주세요.",
@@ -47,7 +56,8 @@
"PluginMetaNotFound": "죄송합니다. 인덱스에서 해당 플러그인을 찾을 수 없습니다. 플러그인의 구성 정보를 인덱스에서 확인해주세요.",
"PluginOpenApiInitError": "죄송합니다. OpenAPI 클라이언트 초기화에 실패했습니다. OpenAPI 구성 정보를 확인해주세요.",
"PluginServerError": "플러그인 서버 요청이 오류로 반환되었습니다. 플러그인 설명 파일, 플러그인 구성 또는 서버 구현을 확인해주세요.",
- "PluginSettingsInvalid": "플러그인을 사용하려면 올바른 구성이 필요합니다. 구성이 올바른지 확인해주세요."
+ "PluginSettingsInvalid": "플러그인을 사용하려면 올바른 구성이 필요합니다. 구성이 올바른지 확인해주세요.",
+ "ZhipuBizError": "Zhipu 서비스 요청 중 오류가 발생했습니다. 아래 정보를 확인하고 다시 시도하십시오."
},
"stt": {
"responseError": "서비스 요청이 실패했습니다. 구성을 확인하거나 다시 시도해주세요."
@@ -57,9 +67,24 @@
},
"unlock": {
"apikey": {
- "addProxyUrl": "OpenAI 프록시 주소 추가하기 (선택 사항)",
- "description": "OpenAI API 키를 입력하면 대화를 시작할 수 있습니다. 애플리케이션은 API 키를 기록하지 않습니다.",
- "title": "사용자 정의 API 키 사용"
+ "Bedrock": {
+ "customRegion": "사용자 정의 서비스 지역",
+ "description": "Aws AccessKeyId / SecretAccessKey를 입력하여 세션을 시작합니다. 앱은 귀하의 인증 구성을 기록하지 않습니다.",
+ "title": "사용자 정의 Bedrock 인증 정보 사용"
+ },
+ "Google": {
+ "description": "Google API Key를 입력하여 세션을 시작합니다. 앱은 귀하의 API Key를 기록하지 않습니다.",
+ "title": "사용자 정의 Google API Key 사용"
+ },
+ "OpenAI": {
+ "addProxyUrl": "OpenAI 프록시 주소 추가(선택 사항)",
+ "description": "OpenAI API Key를 입력하여 세션을 시작합니다. 앱은 귀하의 API Key를 기록하지 않습니다.",
+ "title": "사용자 정의 OpenAI API Key 사용"
+ },
+ "Zhipu": {
+ "description": "Zhipu API Key를 입력하여 세션을 시작합니다. 앱은 귀하의 API Key를 기록하지 않습니다.",
+ "title": "사용자 정의 Zhipu API Key 사용"
+ }
},
"closeMessage": "알림 닫기",
"confirm": "확인 및 다시 시도",
@@ -67,6 +92,10 @@
"description": "관리자가 애플리케이션 암호화를 활성화했습니다. 애플리케이션을 잠금 해제하려면 애플리케이션 비밀번호를 입력하십시오. 비밀번호는 한 번만 입력하면 됩니다.",
"placeholder": "비밀번호를 입력하세요",
"title": "암호 입력하여 애플리케이션 잠금 해제"
+ },
+ "tabs": {
+ "apiKey": "사용자 정의 API Key",
+ "password": "비밀번호"
}
}
}
diff --git a/locales/ko-KR/setting.json b/locales/ko-KR/setting.json
index fac702ab1eed..b361a2168cf9 100644
--- a/locales/ko-KR/setting.json
+++ b/locales/ko-KR/setting.json
@@ -22,6 +22,15 @@
},
"llm": {
"AzureOpenAI": {
+ "azureApiVersion": {
+ "desc": "Azure의 API 버전은 YYYY-MM-DD 형식을 따르며, [최신 버전](https://learn.microsoft.com/zh-cn/azure/ai-services/openai/reference#chat-completions)을 확인하세요.",
+ "fetch": "목록 가져오기",
+ "title": "Azure API 버전"
+ },
+ "deployments": {
+ "desc": "id=name 구문을 사용하여 배포 모델을 작성합니다(예: 배포 이름과 모델이 동일한 경우 모델 이름만 작성할 수 있습니다). 여러 모델은 쉼표(,)로 구분합니다.",
+ "title": "Azure 배포 모델 목록"
+ },
"endpoint": {
"desc": "Azure 포털에서 리소스를 확인할 때 이 값을“키 및 엔드포인트” 섹션에서 찾을 수 있습니다",
"placeholder": "https://docs-test-001.openai.azure.com",
@@ -38,18 +47,41 @@
"title": "API 키"
}
},
+ "Bedrock": {
+ "accessKeyId": {
+ "desc": "Aws Access Key Id를 입력하세요",
+ "placeholder": "Aws Access Key Id",
+ "title": "Aws Access Key Id"
+ },
+ "checker": {
+ "desc": "AccessKeyId / SecretAccessKey를 올바르게 입력했는지 테스트합니다"
+ },
+ "region": {
+ "desc": "Aws 지역을 입력하세요",
+ "placeholder": "Aws Region",
+ "title": "Aws 지역"
+ },
+ "secretAccessKey": {
+ "desc": "Aws Secret Access Key를 입력하세요",
+ "placeholder": "Aws Secret Access Key",
+ "title": "Aws Secret Access Key"
+ },
+ "title": "Bedrock"
+ },
+ "Google": {
+ "title": "Google",
+ "token": {
+ "desc": "Google의 API Key를 입력하세요",
+ "placeholder": "Google API Key",
+ "title": "API Key"
+ }
+ },
"OpenAI": {
"azureApiVersion": {
"desc": "Azure의 API 버전으로 YYYY-MM-DD 형식을 따르며 [최신 버전](https://learn.microsoft.com/zh-cn/azure/ai-services/openai/reference#chat-completions)을 확인하세요",
"fetch": "목록 가져오기",
"title": "Azure API 버전"
},
- "check": {
- "button": "확인",
- "desc": "API 키 및 프록시 주소가 올바르게 입력되었는지 테스트합니다",
- "pass": "확인 완료",
- "title": "연결성 확인"
- },
"customModelName": {
"desc": "사용자 정의 모델 추가, 여러 모델은 쉼표(,)로 구분합니다",
"placeholder": "모델1,모델2,모델3",
@@ -82,6 +114,20 @@
"title": "Azure OpenAI"
}
},
+ "Zhipu": {
+ "title": "智谱",
+ "token": {
+ "desc": "智谱의 API Key를 입력하세요",
+ "placeholder": "Zhipu API Key",
+ "title": "API Key"
+ }
+ },
+ "checker": {
+ "button": "확인",
+ "desc": "API Key 및 프록시 주소가 올바르게 입력되었는지 테스트합니다",
+ "pass": "확인 통과",
+ "title": "연결성 확인"
+ },
"waitingForMore": "<1>계획에 따라 더 많은 모델이 추가될 예정1>이니 기대해 주세요 ✨"
},
"plugin": {
@@ -293,6 +339,7 @@
"builtins": {
"groupName": "내장"
},
+ "disabled": "현재 모델은 함수 호출을 지원하지 않으며 플러그인을 사용할 수 없습니다",
"plugins": {
"enabled": "활성화됨 {{num}}",
"groupName": "플러그인",
diff --git a/locales/nl-NL/chat.json b/locales/nl-NL/chat.json
index 4dad69d748ec..8bb0a6039f19 100644
--- a/locales/nl-NL/chat.json
+++ b/locales/nl-NL/chat.json
@@ -1,4 +1,7 @@
{
+ "ModelSwitch": {
+ "title": "Modelen"
+ },
"agentDefaultMessage": "Hallo, ik ben **{{name}}**. Je kunt meteen met me praten of naar [Assistentinstellingen](/chat/settings#session={{id}}) gaan om mijn informatie aan te vullen.",
"agentDefaultMessageWithSystemRole": "Hallo, ik ben **{{name}}**, {{systemRole}}, laten we beginnen met praten!",
"backToBottom": "Terug naar onderen",
@@ -64,7 +67,14 @@
"prettifying": "Aan het verfraaien..."
},
"temp": "Tijdelijk",
- "tokenDetail": "Rolinstelling: {{systemRoleToken}} · Chatbericht: {{chatsToken}} · Toolinstelling: {{toolsToken}}",
+ "tokenDetails": {
+ "chats": "Chats",
+ "rest": "Rust",
+ "systemRole": "Systeemrol",
+ "tools": "Tools",
+ "total": "Totaal",
+ "used": "Gebruikt"
+ },
"tokenTag": {
"overload": "Overschrijding van limiet",
"remained": "Resterend",
@@ -102,6 +112,7 @@
"updateAgent": "Assistentgegevens bijwerken",
"upload": {
"actionTooltip": "Upload afbeelding",
+ "disabled": "Het huidige model ondersteunt geen visuele herkenning. Schakel over naar een ander model om dit te gebruiken.",
"dragDesc": "Sleep bestanden hierheen om meerdere afbeeldingen te uploaden. Houd Shift ingedrukt om afbeeldingen direct te verzenden",
"dragTitle": "Upload afbeelding"
}
diff --git a/locales/nl-NL/common.json b/locales/nl-NL/common.json
index 2f650bcde44e..02386155193d 100644
--- a/locales/nl-NL/common.json
+++ b/locales/nl-NL/common.json
@@ -1,4 +1,12 @@
{
+ "ModelSelect": {
+ "featureTag": {
+ "custom": "Aangepast model, standaard ingesteld om zowel functieoproep als visuele herkenning te ondersteunen. Verifieer de beschikbaarheid van deze mogelijkheden op basis van de werkelijke situatie.",
+ "functionCall": "Dit model ondersteunt functieoproep (Function Call).",
+ "tokens": "Dit model ondersteunt maximaal {{tokens}} tokens per sessie.",
+ "vision": "Dit model ondersteunt visuele herkenning."
+ }
+ },
"about": "Over",
"advanceSettings": "Geavanceerde instellingen",
"agentMaxToken": "Maximale sessielengte",
@@ -89,6 +97,14 @@
"zh-TW": "Traditioneel Chinees"
},
"layoutInitializing": "Lay-out wordt geladen...",
+ "modelProvider": {
+ "azure": "Azure",
+ "bedrock": "AWS Bedrock",
+ "google": "Google",
+ "oneapi": "One API",
+ "openai": "OpenAI",
+ "zhipu": "智谱AI"
+ },
"noDescription": "Geen beschrijving beschikbaar",
"ok": "Oké",
"password": "Wachtwoord",
diff --git a/locales/nl-NL/error.json b/locales/nl-NL/error.json
index 8694d594491b..0553fed04525 100644
--- a/locales/nl-NL/error.json
+++ b/locales/nl-NL/error.json
@@ -33,8 +33,17 @@
"502": "Sorry, de server lijkt de weg kwijt te zijn en kan tijdelijk geen service verlenen. Probeer het later opnieuw",
"503": "Sorry, de server kan uw verzoek momenteel niet verwerken vanwege overbelasting of onderhoud. Probeer het later opnieuw",
"504": "Sorry, de server heeft geen reactie ontvangen van de upstream server. Probeer het later opnieuw",
- "InvalidAccessCode": "Ongeldige of lege toegangscode. Voer de juiste toegangscode in of voeg een aangepaste OpenAI API-sleutel toe",
- "NoAPIKey": "OpenAI API-sleutel ontbreekt. Voeg een aangepaste OpenAI API-sleutel toe",
+ "AgentRuntimeError": "Lobe language model runtime execution error, please troubleshoot or retry based on the following information",
+ "AzureBizError": "Error requesting Azure AI service, please troubleshoot or retry based on the following information",
+ "BedrockBizError": "Error requesting Bedrock service, please troubleshoot or retry based on the following information",
+ "GoogleBizError": "Error requesting Google service, please troubleshoot or retry based on the following information",
+ "InvalidAccessCode": "Ongeldige toegangscode: het wachtwoord is onjuist of leeg. Voer de juiste toegangscode in of voeg een aangepaste API-sleutel toe.",
+ "InvalidAzureAPIKey": "Incorrect or empty Azure API Key, please check the Azure API Key and retry",
+ "InvalidBedrockCredentials": "Bedrock authentication failed, please check AccessKeyId/SecretAccessKey and retry",
+ "InvalidGoogleAPIKey": "Incorrect or empty Google API Key, please check the Google API Key and retry",
+ "InvalidZhipuAPIKey": "Incorrect or empty Zhipu API Key, please check the Zhipu API Key and retry",
+ "LocationNotSupportError": "Sorry, your current location does not support this model service, possibly due to regional restrictions or service not being available. Please confirm if the current location supports using this service, or try using other location information.",
+ "NoOpenAIAPIKey": "OpenAI API-sleutel ontbreekt. Voeg een aangepaste OpenAI API-sleutel toe",
"OpenAIBizError": "Fout bij het aanvragen van OpenAI-service. Controleer de onderstaande informatie voor probleemoplossing of probeer opnieuw",
"PluginApiNotFound": "Sorry, de API van de plug-inbeschrijvingslijst bestaat niet. Controleer of uw verzoeksmethode overeenkomt met de plug-inbeschrijvingslijst API",
"PluginApiParamsError": "Sorry, de validatie van de invoerparameters van de plug-in is mislukt. Controleer of de invoerparameters overeenkomen met de API-beschrijving",
@@ -47,7 +56,8 @@
"PluginMetaNotFound": "Sorry, de plug-in is niet gevonden in de index. Controleer of de plug-inconfiguratie in de index staat",
"PluginOpenApiInitError": "Sorry, initialisatie van de OpenAPI-client is mislukt. Controleer of de configuratie van OpenAPI juist is",
"PluginServerError": "Fout bij serverrespons voor plug-in. Controleer de foutinformatie hieronder voor uw plug-inbeschrijvingsbestand, plug-inconfiguratie of serverimplementatie",
- "PluginSettingsInvalid": "Deze plug-in moet correct geconfigureerd zijn voordat deze kan worden gebruikt. Controleer of uw configuratie juist is"
+ "PluginSettingsInvalid": "Deze plug-in moet correct geconfigureerd zijn voordat deze kan worden gebruikt. Controleer of uw configuratie juist is",
+ "ZhipuBizError": "Error requesting Zhipu service, please troubleshoot or retry based on the following information"
},
"stt": {
"responseError": "Serviceverzoek mislukt. Controleer de configuratie of probeer opnieuw"
@@ -57,9 +67,24 @@
},
"unlock": {
"apikey": {
- "addProxyUrl": "Voeg optionele OpenAI-proxyadres toe",
- "description": "Voer uw OpenAI API-sleutel in om een sessie te starten. De app slaat uw API-sleutel niet op.",
- "title": "Gebruik aangepaste API-sleutel"
+ "Bedrock": {
+ "customRegion": "Custom service region",
+ "description": "Enter your Aws AccessKeyId / SecretAccessKey to start the session. The app will not record your authentication configuration",
+ "title": "Use custom Bedrock authentication information"
+ },
+ "Google": {
+ "description": "Enter your Google API Key to start the session. The app will not record your API Key",
+ "title": "Use custom Google API Key"
+ },
+ "OpenAI": {
+ "addProxyUrl": "Add OpenAI proxy address (optional)",
+ "description": "Enter your OpenAI API Key to start the session. The app will not record your API Key",
+ "title": "Use custom OpenAI API Key"
+ },
+ "Zhipu": {
+ "description": "Enter your Zhipu API Key to start the session. The app will not record your API Key",
+ "title": "Use custom Zhipu API Key"
+ }
},
"closeMessage": "Sluit bericht",
"confirm": "Bevestigen en opnieuw proberen",
@@ -67,6 +92,10 @@
"description": "De beheerder heeft app-encryptie ingeschakeld. Voer het app-wachtwoord in om de app te ontgrendelen. Het wachtwoord hoeft slechts één keer te worden ingevoerd.",
"placeholder": "Voer het wachtwoord in",
"title": "Voer het wachtwoord in om de app te ontgrendelen"
+ },
+ "tabs": {
+ "apiKey": "Custom API Key",
+ "password": "Password"
}
}
}
diff --git a/locales/nl-NL/setting.json b/locales/nl-NL/setting.json
index 5791bfc244e3..e794fc4b48b3 100644
--- a/locales/nl-NL/setting.json
+++ b/locales/nl-NL/setting.json
@@ -22,6 +22,15 @@
},
"llm": {
"AzureOpenAI": {
+ "azureApiVersion": {
+ "desc": "Azure API-versie, in het formaat YYYY-MM-DD, raadpleeg de [laatste versie](https://learn.microsoft.com/nl-nl/azure/ai-services/openai/reference#chat-completions)",
+ "fetch": "Ophalen van lijst",
+ "title": "Azure API-versie"
+ },
+ "deployments": {
+ "desc": "Vul de syntaxis id=naam in voor uw implementatiemodellen (bijv. als de implementatienaam en het model dezelfde naam hebben, kunt u alleen de modelnaam invullen), meerdere modellen worden gescheiden door een komma (,)",
+ "title": "Azure implementatiemodellen"
+ },
"endpoint": {
"desc": "Deze waarde is te vinden in het gedeelte 'Sleutels en eindpunten' wanneer u de bron controleert in het Azure-portal",
"placeholder": "https://docs-test-001.openai.azure.com",
@@ -38,18 +47,41 @@
"title": "API-sleutel"
}
},
+ "Bedrock": {
+ "accessKeyId": {
+ "desc": "Vul de AWS Access Key ID in",
+ "placeholder": "AWS Access Key ID",
+ "title": "AWS Access Key ID"
+ },
+ "checker": {
+ "desc": "Test of AccessKeyId / SecretAccessKey correct zijn ingevuld"
+ },
+ "region": {
+ "desc": "Vul de AWS-regio in",
+ "placeholder": "AWS-regio",
+ "title": "AWS-regio"
+ },
+ "secretAccessKey": {
+ "desc": "Vul de AWS Secret Access Key in",
+ "placeholder": "AWS Secret Access Key",
+ "title": "AWS Secret Access Key"
+ },
+ "title": "Bedrock"
+ },
+ "Google": {
+ "title": "Google",
+ "token": {
+ "desc": "Vul de API-sleutel van Google in",
+ "placeholder": "Google API-sleutel",
+ "title": "API-sleutel"
+ }
+ },
"OpenAI": {
"azureApiVersion": {
"desc": "API-versie van Azure, in het formaat YYYY-MM-DD, zie [laatste versie](https://learn.microsoft.com/zh-cn/azure/ai-services/openai/reference#chat-completions)",
"fetch": "Lijst ophalen",
"title": "Azure API-versie"
},
- "check": {
- "button": "Controleren",
- "desc": "Test of de API-sleutel en proxy-adres correct zijn ingevuld",
- "pass": "Controle geslaagd",
- "title": "Connectiviteitscontrole"
- },
"customModelName": {
"desc": "Voeg aangepaste modellen toe, gescheiden door een komma (,)",
"placeholder": "model1,model2,model3",
@@ -82,6 +114,20 @@
"title": "Azure OpenAI gebruiken"
}
},
+ "Zhipu": {
+ "title": "智谱",
+ "token": {
+ "desc": "Vul de API-sleutel van Zhipu in",
+ "placeholder": "Zhipu API-sleutel",
+ "title": "API-sleutel"
+ }
+ },
+ "checker": {
+ "button": "Controleren",
+ "desc": "Test of de API-sleutel en proxyadres correct zijn ingevuld",
+ "pass": "Succesvol gecontroleerd",
+ "title": "Connectiviteitscontrole"
+ },
"waitingForMore": "Meer modellen worden <1>gepland om te worden toegevoegd1>, dus blijf op de hoogte ✨"
},
"plugin": {
@@ -293,6 +339,7 @@
"builtins": {
"groupName": "Ingebouwd"
},
+ "disabled": "Dit model ondersteunt momenteel geen functieaanroepen en kan geen plug-ins gebruiken",
"plugins": {
"enabled": "Ingeschakeld {{num}}",
"groupName": "Plug-ins",
diff --git a/locales/pl-PL/chat.json b/locales/pl-PL/chat.json
index 9538f0091778..b9625ac31bcf 100644
--- a/locales/pl-PL/chat.json
+++ b/locales/pl-PL/chat.json
@@ -1,4 +1,7 @@
{
+ "ModelSwitch": {
+ "title": "Przełącz model"
+ },
"agentDefaultMessage": "Cześć, jestem **{{name}}**, możesz od razu zacząć ze mną rozmawiać, lub udoskonalić moje informacje, przechodząc do [Ustawień asystenta](/chat/settings#session={{id}}).",
"agentDefaultMessageWithSystemRole": "Cześć, jestem **{{name}}**, {{systemRole}}, zacznijmy rozmowę!",
"backToBottom": "Przewiń na dół",
@@ -64,7 +67,14 @@
"prettifying": "Upiększanie..."
},
"temp": "Tymczasowy",
- "tokenDetail": "Ustawienia roli: {{systemRoleToken}} · Wiadomości sesji: {{chatsToken}} · Ustawienia narzędzi: {{toolsToken}}",
+ "tokenDetails": {
+ "chats": "Rozmowy",
+ "rest": "Pozostałe",
+ "systemRole": "Rola systemowa",
+ "tools": "Narzędzia",
+ "total": "Razem",
+ "used": "Wykorzystane"
+ },
"tokenTag": {
"overload": "Przekroczenie limitu",
"remained": "Pozostało",
@@ -102,6 +112,7 @@
"updateAgent": "Aktualizuj informacje asystenta",
"upload": {
"actionTooltip": "Prześlij obraz",
+ "disabled": "Obecny model nie obsługuje rozpoznawania wizyjnego. Proszę przełączyć model.",
"dragDesc": "Przeciągnij pliki tutaj, obsługiwane jest przesyłanie wielu obrazów. Naciśnij klawisz Shift, aby wysłać obraz bezpośrednio",
"dragTitle": "Prześlij obraz"
}
diff --git a/locales/pl-PL/common.json b/locales/pl-PL/common.json
index 8eec4732739e..d6f0549c5261 100644
--- a/locales/pl-PL/common.json
+++ b/locales/pl-PL/common.json
@@ -1,4 +1,12 @@
{
+ "ModelSelect": {
+ "featureTag": {
+ "custom": "Niestandardowy model, domyślnie obsługujący zarówno wywołania funkcji, jak i rozpoznawanie wizualne. Proszę zweryfikować możliwość użycia tych funkcji w praktyce.",
+ "functionCall": "Ten model obsługuje wywołania funkcji (Function Call).",
+ "tokens": "Ten model obsługuje maksymalnie {{tokens}} tokenów w pojedynczej sesji.",
+ "vision": "Ten model obsługuje rozpoznawanie wizualne."
+ }
+ },
"about": "O nas",
"advanceSettings": "Zaawansowane ustawienia",
"agentMaxToken": "Maksymalna długość sesji",
@@ -89,6 +97,14 @@
"zh-TW": "Chiński tradycyjny"
},
"layoutInitializing": "Inicjowanie układu...",
+ "modelProvider": {
+ "azure": "Azure",
+ "bedrock": "AWS Bedrock",
+ "google": "Google",
+ "oneapi": "One API",
+ "openai": "OpenAI",
+ "zhipu": "智谱AI"
+ },
"noDescription": "Brak opisu",
"ok": "OK",
"password": "Hasło",
diff --git a/locales/pl-PL/error.json b/locales/pl-PL/error.json
index f73f5e108c57..27565be17fc8 100644
--- a/locales/pl-PL/error.json
+++ b/locales/pl-PL/error.json
@@ -33,8 +33,17 @@
"502": "Przepraszamy, serwer wydaje się zgubić kierunek i tymczasowo nie może świadczyć usług. Proszę spróbuj ponownie później",
"503": "Przepraszamy, serwer tymczasowo nie może przetworzyć Twojego żądania, prawdopodobnie z powodu przeciążenia lub konserwacji. Proszę spróbuj ponownie później",
"504": "Przepraszamy, serwer nie otrzymał odpowiedzi od serwera nadrzędnego. Proszę spróbuj ponownie później",
- "InvalidAccessCode": "Nieprawidłowe lub puste hasło dostępu. Proszę podaj poprawne hasło dostępu lub dodaj niestandardowy klucz API OpenAI",
- "NoAPIKey": "Klucz API OpenAI jest pusty. Proszę dodać niestandardowy klucz API OpenAI",
+ "AgentRuntimeError": "Wystąpił błąd wykonania modelu językowego Lobe, prosimy o sprawdzenie poniższych informacji lub ponowne próbowanie.",
+ "AzureBizError": "Wystąpił błąd żądania usługi Azure AI, prosimy o sprawdzenie poniższych informacji lub ponowne próbowanie.",
+ "BedrockBizError": "Wystąpił błąd żądania usługi Bedrock, prosimy o sprawdzenie poniższych informacji lub ponowne próbowanie.",
+ "GoogleBizError": "Wystąpił błąd żądania usługi Google, prosimy o sprawdzenie poniższych informacji lub ponowne próbowanie.",
+ "InvalidAccessCode": "Nieprawidłowy kod dostępu: Hasło jest nieprawidłowe lub puste. Proszę wprowadzić poprawne hasło dostępu lub dodać niestandardowy klucz API.",
+ "InvalidAzureAPIKey": "Nieprawidłowy lub pusty klucz API Azure, prosimy sprawdzić klucz API Azure i spróbować ponownie.",
+ "InvalidBedrockCredentials": "Uwierzytelnienie Bedrock nie powiodło się, prosimy sprawdzić AccessKeyId/SecretAccessKey i spróbować ponownie.",
+ "InvalidGoogleAPIKey": "Nieprawidłowy lub pusty klucz API Google, prosimy sprawdzić klucz API Google i spróbować ponownie.",
+ "InvalidZhipuAPIKey": "Nieprawidłowy lub pusty klucz API Zhipu, prosimy sprawdzić klucz API Zhipu i spróbować ponownie.",
+ "LocationNotSupportError": "Przepraszamy, Twoja lokalizacja nie obsługuje tego usługi modelu, być może ze względu na ograniczenia regionalne lub brak dostępności usługi. Proszę sprawdź, czy bieżąca lokalizacja obsługuje tę usługę, lub spróbuj użyć innych informacji o lokalizacji.",
+ "NoOpenAIAPIKey": "Klucz API OpenAI jest pusty. Proszę dodać niestandardowy klucz API OpenAI",
"OpenAIBizError": "Błąd żądania usługi OpenAI. Proszę sprawdź poniższe informacje i spróbuj ponownie",
"PluginApiNotFound": "Przepraszamy, w manifestach wtyczki nie istnieje to API. Proszę sprawdź, czy metoda żądania jest zgodna z API w manifestach wtyczki",
"PluginApiParamsError": "Przepraszamy, walidacja parametrów wejściowych żądanej wtyczki nie powiodła się. Proszę sprawdź, czy parametry wejściowe są zgodne z informacjami opisującymi API",
@@ -47,7 +56,8 @@
"PluginMetaNotFound": "Przepraszamy, nie znaleziono metadanych wtyczki w indeksie. Sprawdź, czy informacje konfiguracyjne wtyczki są obecne w indeksie",
"PluginOpenApiInitError": "Przepraszamy, inicjalizacja klienta OpenAPI nie powiodła się. Proszę sprawdź, czy informacje konfiguracyjne OpenAPI są poprawne",
"PluginServerError": "Błąd zwrócony przez serwer wtyczki. Proszę sprawdź plik opisowy wtyczki, konfigurację wtyczki lub implementację serwera zgodnie z poniższymi informacjami o błędzie",
- "PluginSettingsInvalid": "Ta wtyczka wymaga poprawnej konfiguracji przed użyciem. Proszę sprawdź, czy Twoja konfiguracja jest poprawna"
+ "PluginSettingsInvalid": "Ta wtyczka wymaga poprawnej konfiguracji przed użyciem. Proszę sprawdź, czy Twoja konfiguracja jest poprawna",
+ "ZhipuBizError": "Wystąpił błąd żądania usługi Zhipu, prosimy o sprawdzenie poniższych informacji lub ponowne próbowanie."
},
"stt": {
"responseError": "Błąd żądania usługi. Proszę sprawdź konfigurację i spróbuj ponownie"
@@ -57,9 +67,24 @@
},
"unlock": {
"apikey": {
- "addProxyUrl": "Dodaj adres proxy OpenAI (opcjonalne)",
- "description": "Wprowadź swój klucz API OpenAI, aby rozpocząć sesję. Aplikacja nie będzie przechowywać Twojego klucza API.",
- "title": "Użyj niestandardowego klucza API"
+ "Bedrock": {
+ "customRegion": "Własny obszar usług",
+ "description": "Wprowadź swój Aws AccessKeyId / SecretAccessKey, aby rozpocząć sesję. Aplikacja nie będzie przechowywać Twojej konfiguracji uwierzytelniania.",
+ "title": "Użyj niestandardowych informacji uwierzytelniających Bedrock"
+ },
+ "Google": {
+ "description": "Wprowadź swój klucz API Google, aby rozpocząć sesję. Aplikacja nie będzie przechowywać Twojego klucza API.",
+ "title": "Użyj niestandardowego klucza API Google"
+ },
+ "OpenAI": {
+ "addProxyUrl": "Dodaj adres proxy OpenAI (opcjonalnie)",
+ "description": "Wprowadź swój klucz API OpenAI, aby rozpocząć sesję. Aplikacja nie będzie przechowywać Twojego klucza API.",
+ "title": "Użyj niestandardowego klucza API OpenAI"
+ },
+ "Zhipu": {
+ "description": "Wprowadź swój klucz API Zhipu, aby rozpocząć sesję. Aplikacja nie będzie przechowywać Twojego klucza API.",
+ "title": "Użyj niestandardowego klucza API Zhipu"
+ }
},
"closeMessage": "Zamknij komunikat",
"confirm": "Potwierdź i spróbuj ponownie",
@@ -67,6 +92,10 @@
"description": "Administrator włączył szyfrowanie aplikacji. Po wprowadzeniu hasła aplikacja zostanie odblokowana. Hasło należy wprowadzić tylko raz.",
"placeholder": "Wprowadź hasło",
"title": "Wprowadź hasło, aby odblokować aplikację"
+ },
+ "tabs": {
+ "apiKey": "Niestandardowy klucz API",
+ "password": "Hasło"
}
}
}
diff --git a/locales/pl-PL/setting.json b/locales/pl-PL/setting.json
index ba5a97cc2212..2965a07dc601 100644
--- a/locales/pl-PL/setting.json
+++ b/locales/pl-PL/setting.json
@@ -22,6 +22,15 @@
},
"llm": {
"AzureOpenAI": {
+ "azureApiVersion": {
+ "desc": "Wersja API usługi Azure, zgodna z formatem RRRR-MM-DD, zobacz [najnowszą wersję](https://learn.microsoft.com/pl-pl/azure/ai-services/openai/reference#chat-completions)",
+ "fetch": "Pobierz listę",
+ "title": "Wersja interfejsu API usługi Azure"
+ },
+ "deployments": {
+ "desc": "Użyj składni id=nazwa, aby wprowadzić listę modeli wdrożeń (np. jeśli nazwa modelu i wdrożenia są takie same, można wpisać tylko nazwę modelu), użyj przecinka (,) do oddzielenia wielu modeli",
+ "title": "Lista wdrożeń usługi Azure"
+ },
"endpoint": {
"desc": "Wartość znajdująca się w sekcji „Klucze i punkty końcowe” podczas sprawdzania zasobów w portalu Azure",
"placeholder": "https://docs-test-001.openai.azure.com",
@@ -38,18 +47,41 @@
"title": "Klucz API"
}
},
+ "Bedrock": {
+ "accessKeyId": {
+ "desc": "Wprowadź Aws Access Key Id",
+ "placeholder": "Aws Access Key Id",
+ "title": "Aws Access Key Id"
+ },
+ "checker": {
+ "desc": "Sprawdź poprawność wypełnienia AccessKeyId / SecretAccessKey"
+ },
+ "region": {
+ "desc": "Wprowadź region Aws",
+ "placeholder": "Aws Region",
+ "title": "Aws Region"
+ },
+ "secretAccessKey": {
+ "desc": "Wprowadź Aws Secret Access Key",
+ "placeholder": "Aws Secret Access Key",
+ "title": "Aws Secret Access Key"
+ },
+ "title": "Bedrock"
+ },
+ "Google": {
+ "title": "Google",
+ "token": {
+ "desc": "Wprowadź klucz API z Google",
+ "placeholder": "Google API Key",
+ "title": "Klucz API"
+ }
+ },
"OpenAI": {
"azureApiVersion": {
"desc": "Wersja API dla usługi Azure, zgodna z formatem RRRR-MM-DD. Zobacz [najnowszą wersję](https://learn.microsoft.com/pl-pl/azure/ai-services/openai/reference#chat-completions)",
"fetch": "Pobierz listę",
"title": "Wersja interfejsu API Azure"
},
- "check": {
- "button": "Sprawdź",
- "desc": "Testuje poprawność wprowadzenia klucza API i adresu proxy",
- "pass": "Test zakończony pomyślnie",
- "title": "Test łączności"
- },
"customModelName": {
"desc": "Dodaj niestandardowe modele, oddzielając je przecinkami (,)",
"placeholder": "model1,model2,model3",
@@ -82,6 +114,20 @@
"title": "Użyj Azure OpenAI"
}
},
+ "Zhipu": {
+ "title": "智谱",
+ "token": {
+ "desc": "Wprowadź klucz API z Zhipu",
+ "placeholder": "Zhipu API Key",
+ "title": "Klucz API"
+ }
+ },
+ "checker": {
+ "button": "Sprawdź",
+ "desc": "Sprawdź poprawność wypełnienia klucza API i adresu proxy",
+ "pass": "Połączenie udane",
+ "title": "Test połączenia"
+ },
"waitingForMore": "Więcej modeli jest obecnie w <1>planach dołączenia1>, prosimy o cierpliwość ✨"
},
"plugin": {
@@ -293,6 +339,7 @@
"builtins": {
"groupName": "Wbudowane"
},
+ "disabled": "Aktualny model nie obsługuje wywołań funkcji i nie można użyć wtyczki",
"plugins": {
"enabled": "Włączone {{num}}",
"groupName": "Wtyczki",
diff --git a/locales/pt-BR/chat.json b/locales/pt-BR/chat.json
index b680c7a0ac13..825c2ba8a504 100644
--- a/locales/pt-BR/chat.json
+++ b/locales/pt-BR/chat.json
@@ -1,4 +1,7 @@
{
+ "ModelSwitch": {
+ "title": "Modelo"
+ },
"agentDefaultMessage": "Olá, eu sou **{{name}}**, você pode começar a conversar comigo agora ou ir para [Configurações do Assistente](/chat/settings#session={{id}}) para completar minhas informações.",
"agentDefaultMessageWithSystemRole": "Olá, eu sou **{{name}}**, {{systemRole}}, vamos conversar!",
"backToBottom": "Voltar para o início",
@@ -64,7 +67,14 @@
"prettifying": "Embelezando..."
},
"temp": "Temporário",
- "tokenDetail": "Função: {{systemRoleToken}} · Mensagens: {{chatsToken}}",
+ "tokenDetails": {
+ "chats": "Mensagens de bate-papo",
+ "rest": "Restante disponível",
+ "systemRole": "Configuração de papel do sistema",
+ "tools": "Configuração de plug-ins",
+ "total": "Total disponível",
+ "used": "Total utilizado"
+ },
"tokenTag": {
"overload": "Limite Excedido",
"remained": "Restante",
@@ -102,6 +112,7 @@
"updateAgent": "Atualizar Informações do Assistente",
"upload": {
"actionTooltip": "Enviar Imagem",
+ "disabled": "O modelo atual não suporta reconhecimento visual. Por favor, altere o modelo antes de usar.",
"dragDesc": "Arraste os arquivos aqui, suporta o envio de várias imagens. Pressione Shift para enviar as imagens diretamente.",
"dragTitle": "Enviar Imagem"
}
diff --git a/locales/pt-BR/common.json b/locales/pt-BR/common.json
index d3f28461cd80..e5ff91f4e8f0 100644
--- a/locales/pt-BR/common.json
+++ b/locales/pt-BR/common.json
@@ -1,4 +1,12 @@
{
+ "ModelSelect": {
+ "featureTag": {
+ "custom": "Modelo personalizado, suporta chamadas de função e reconhecimento visual. Por favor, verifique a disponibilidade dessas capacidades de acordo com a situação real.",
+ "functionCall": "Este modelo suporta chamadas de função (Function Call)",
+ "tokens": "Este modelo suporta no máximo {{tokens}} tokens por sessão",
+ "vision": "Este modelo suporta reconhecimento visual"
+ }
+ },
"about": "Sobre",
"advanceSettings": "Configurações avançadas",
"agentMaxToken": "Máximo de tokens da sessão",
@@ -89,6 +97,14 @@
"zh-TW": "Chinês tradicional"
},
"layoutInitializing": "Inicializando layout...",
+ "modelProvider": {
+ "azure": "Azure",
+ "bedrock": "AWS Bedrock",
+ "google": "Google",
+ "oneapi": "One API",
+ "openai": "OpenAI",
+ "zhipu": "Zhipu AI"
+ },
"noDescription": "Sem descrição",
"ok": "OK",
"password": "Senha",
diff --git a/locales/pt-BR/error.json b/locales/pt-BR/error.json
index 5bfaadc12e94..b16fec3ee983 100644
--- a/locales/pt-BR/error.json
+++ b/locales/pt-BR/error.json
@@ -33,8 +33,17 @@
"502": "Desculpe, o servidor parece estar temporariamente indisponível. Por favor, tente novamente mais tarde",
"503": "Desculpe, o servidor não pode processar sua solicitação no momento, possivelmente devido a sobrecarga ou manutenção. Por favor, tente novamente mais tarde",
"504": "Desculpe, o servidor não recebeu resposta do servidor upstream. Por favor, tente novamente mais tarde",
- "InvalidAccessCode": "Senha incorreta ou em branco. Insira a senha de acesso correta ou adicione uma chave de API personalizada do OpenAI",
- "NoAPIKey": "A chave de API do OpenAI está em branco. Adicione uma chave de API personalizada do OpenAI",
+ "AgentRuntimeError": "Erro de execução do modelo de linguagem Lobe, por favor, verifique as informações abaixo ou tente novamente",
+ "AzureBizError": "Erro ao solicitar o serviço Azure AI, por favor, verifique as informações abaixo ou tente novamente",
+ "BedrockBizError": "Erro ao solicitar o serviço Bedrock, por favor, verifique as informações abaixo ou tente novamente",
+ "GoogleBizError": "Erro ao solicitar o serviço Google, por favor, verifique as informações abaixo ou tente novamente",
+ "InvalidAccessCode": "Senha de acesso inválida ou em branco. Por favor, insira a senha de acesso correta ou adicione uma Chave de API personalizada.",
+ "InvalidAzureAPIKey": "Chave de API Azure incorreta ou vazia, por favor, verifique a chave de API Azure e tente novamente",
+ "InvalidBedrockCredentials": "Credenciais Bedrock inválidas, por favor, verifique AccessKeyId/SecretAccessKey e tente novamente",
+ "InvalidGoogleAPIKey": "Chave de API Google incorreta ou vazia, por favor, verifique a chave de API Google e tente novamente",
+ "InvalidZhipuAPIKey": "Chave de API Zhipu incorreta ou vazia, por favor, verifique a chave de API Zhipu e tente novamente",
+ "LocationNotSupportError": "Desculpe, sua localização atual não suporta este serviço de modelo, pode ser devido a restrições geográficas ou serviço não disponível. Por favor, verifique se a localização atual suporta o uso deste serviço ou tente usar outras informações de localização.",
+ "NoOpenAIAPIKey": "A chave de API do OpenAI está em branco. Adicione uma chave de API personalizada do OpenAI",
"OpenAIBizError": "Erro ao solicitar o serviço OpenAI. Verifique ou tente novamente com base nas informações abaixo",
"PluginApiNotFound": "Desculpe, o API especificado não existe no manifesto do plugin. Verifique se o método de solicitação corresponde ao API do manifesto do plugin",
"PluginApiParamsError": "Desculpe, a validação dos parâmetros de entrada da solicitação do plugin falhou. Verifique se os parâmetros de entrada correspondem às informações de descrição do API",
@@ -47,7 +56,8 @@
"PluginMetaNotFound": "Desculpe, o plugin não foi encontrado no índice. Verifique as informações de configuração do plugin no índice",
"PluginOpenApiInitError": "Desculpe, a inicialização do cliente OpenAPI falhou. Verifique se as informações de configuração do OpenAPI estão corretas",
"PluginServerError": "Erro na resposta do servidor do plugin. Verifique o arquivo de descrição do plugin, a configuração do plugin ou a implementação do servidor de acordo com as informações de erro abaixo",
- "PluginSettingsInvalid": "Este plugin precisa ser configurado corretamente antes de ser usado. Verifique se sua configuração está correta"
+ "PluginSettingsInvalid": "Este plugin precisa ser configurado corretamente antes de ser usado. Verifique se sua configuração está correta",
+ "ZhipuBizError": "Erro ao solicitar o serviço Zhipu, por favor, verifique as informações abaixo ou tente novamente"
},
"stt": {
"responseError": "Falha na solicitação de serviço. Verifique a configuração ou tente novamente"
@@ -57,9 +67,24 @@
},
"unlock": {
"apikey": {
- "addProxyUrl": "Adicionar URL do Proxy OpenAI (opcional)",
- "description": "Insira sua chave de API OpenAI para iniciar a sessão. O aplicativo não irá armazenar sua chave de API.",
- "title": "Usar chave de API personalizada"
+ "Bedrock": {
+ "customRegion": "Região de serviço personalizada",
+ "description": "Digite seu Aws AccessKeyId / SecretAccessKey para iniciar a sessão. O aplicativo não irá armazenar suas configurações de autenticação",
+ "title": "Usar informações de autenticação personalizadas do Bedrock"
+ },
+ "Google": {
+ "description": "Digite sua chave de API Google para iniciar a sessão. O aplicativo não irá armazenar sua chave de API",
+ "title": "Usar chave de API Google personalizada"
+ },
+ "OpenAI": {
+ "addProxyUrl": "Adicionar endereço do proxy OpenAI (opcional)",
+ "description": "Digite sua chave de API OpenAI para iniciar a sessão. O aplicativo não irá armazenar sua chave de API",
+ "title": "Usar chave de API OpenAI personalizada"
+ },
+ "Zhipu": {
+ "description": "Digite sua chave de API Zhipu para iniciar a sessão. O aplicativo não irá armazenar sua chave de API",
+ "title": "Usar chave de API Zhipu personalizada"
+ }
},
"closeMessage": "Fechar mensagem",
"confirm": "Confirmar e tentar novamente",
@@ -67,6 +92,10 @@
"description": "O administrador ativou a criptografia do aplicativo. Insira a senha do aplicativo para desbloqueá-lo. A senha só precisa ser inserida uma vez.",
"placeholder": "Insira a senha",
"title": "Insira a senha para desbloquear o aplicativo"
+ },
+ "tabs": {
+ "apiKey": "Chave de API personalizada",
+ "password": "Senha"
}
}
}
diff --git a/locales/pt-BR/setting.json b/locales/pt-BR/setting.json
index 951a2ab95e2a..7a6e3f6ae0ed 100644
--- a/locales/pt-BR/setting.json
+++ b/locales/pt-BR/setting.json
@@ -22,6 +22,15 @@
},
"llm": {
"AzureOpenAI": {
+ "azureApiVersion": {
+ "desc": "Versão da API do Azure, seguindo o formato YYYY-MM-DD, consulte a [última versão](https://learn.microsoft.com/pt-br/azure/ai-services/openai/reference#chat-completions)",
+ "fetch": "Buscar",
+ "title": "Versão da API do Azure"
+ },
+ "deployments": {
+ "desc": "Preencha com a sintaxe id=nome para seus modelos de implantação (por exemplo, se o nome do modelo e da implantação forem iguais, você pode apenas preencher o nome do modelo), múltiplos modelos são separados por vírgula (,)",
+ "title": "Lista de Modelos de Implantação do Azure"
+ },
"endpoint": {
"desc": "Você pode encontrar este valor na seção 'Chave e Endpoint' ao verificar os recursos no portal Azure",
"placeholder": "https://docs-test-001.openai.azure.com",
@@ -38,18 +47,41 @@
"title": "Chave da API"
}
},
+ "Bedrock": {
+ "accessKeyId": {
+ "desc": "Insira o Aws Access Key Id",
+ "placeholder": "Aws Access Key Id",
+ "title": "Aws Access Key Id"
+ },
+ "checker": {
+ "desc": "Verifica se o AccessKeyId / SecretAccessKey está preenchido corretamente"
+ },
+ "region": {
+ "desc": "Insira a Região Aws",
+ "placeholder": "Aws Region",
+ "title": "Aws Region"
+ },
+ "secretAccessKey": {
+ "desc": "Insira o Aws Secret Access Key",
+ "placeholder": "Aws Secret Access Key",
+ "title": "Aws Secret Access Key"
+ },
+ "title": "Bedrock"
+ },
+ "Google": {
+ "title": "Google",
+ "token": {
+ "desc": "Insira a API Key do Google",
+ "placeholder": "Google API Key",
+ "title": "API Key"
+ }
+ },
"OpenAI": {
"azureApiVersion": {
"desc": "Versão da API Azure, no formato YYYY-MM-DD. Consulte a [última versão](https://learn.microsoft.com/pt-br/azure/ai-services/openai/reference#chat-completions)",
"fetch": "Obter Lista",
"title": "Versão da API Azure"
},
- "check": {
- "button": "Verificar",
- "desc": "Verifique se a Chave da API e o Endereço do Proxy estão preenchidos corretamente",
- "pass": "Verificação bem-sucedida",
- "title": "Verificação de Conectividade"
- },
"customModelName": {
"desc": "Adicione modelos personalizados, separados por vírgula (,)",
"placeholder": "modelo1,modelo2,modelo3",
@@ -82,6 +114,20 @@
"title": "Usar Azure OpenAI"
}
},
+ "Zhipu": {
+ "title": "智谱",
+ "token": {
+ "desc": "Insira a API Key do Zhipu",
+ "placeholder": "Zhipu API Key",
+ "title": "API Key"
+ }
+ },
+ "checker": {
+ "button": "Verificar",
+ "desc": "Verifica se a Api Key e o endereço do proxy estão preenchidos corretamente",
+ "pass": "Verificação aprovada",
+ "title": "Verificação de Conectividade"
+ },
"waitingForMore": "Mais modelos estão sendo <1>planejados para serem adicionados1>, aguarde ansiosamente ✨"
},
"plugin": {
@@ -293,6 +339,7 @@
"builtins": {
"groupName": "Integrados"
},
+ "disabled": "O modelo atual não suporta chamadas de função e não pode usar plugins",
"plugins": {
"enabled": "Ativado {{num}}",
"groupName": "Plugins",
diff --git a/locales/ru-RU/chat.json b/locales/ru-RU/chat.json
index 8ff9cea690a9..b3436df575d0 100644
--- a/locales/ru-RU/chat.json
+++ b/locales/ru-RU/chat.json
@@ -1,4 +1,7 @@
{
+ "ModelSwitch": {
+ "title": "Модель"
+ },
"agentDefaultMessage": "Привет, я **{{name}}**. Ты можешь начать общение со мной прямо сейчас или перейти к [настройкам помощника](/chat/settings#session={{id}}), чтобы улучшить мою информацию.",
"agentDefaultMessageWithSystemRole": "Привет, я **{{name}}**, {{systemRole}}. Давай начнем разговор!",
"backToBottom": "Вернуться вниз",
@@ -64,7 +67,14 @@
"prettifying": "Форматирование..."
},
"temp": "Временный",
- "tokenDetail": "Роль: {{systemRoleToken}} · Сообщения: {{chatsToken}}",
+ "tokenDetails": {
+ "chats": "Чаты",
+ "rest": "Остаток",
+ "systemRole": "Роль системы",
+ "tools": "Инструменты",
+ "total": "Всего",
+ "used": "Использовано"
+ },
"tokenTag": {
"overload": "Превышение лимита",
"remained": "Осталось",
@@ -102,6 +112,7 @@
"updateAgent": "Обновить информацию помощника",
"upload": {
"actionTooltip": "Загрузить изображение",
+ "disabled": "Текущая модель не поддерживает визуальное распознавание. Пожалуйста, выберите другую модель.",
"dragDesc": "Перетащите файлы сюда, поддерживается загрузка нескольких изображений. Удерживайте Shift для отправки изображений",
"dragTitle": "Загрузить изображение"
}
diff --git a/locales/ru-RU/common.json b/locales/ru-RU/common.json
index c43885218c6b..9f32ca1b9b21 100644
--- a/locales/ru-RU/common.json
+++ b/locales/ru-RU/common.json
@@ -1,4 +1,12 @@
{
+ "ModelSelect": {
+ "featureTag": {
+ "custom": "Пользовательская модель. По умолчанию поддерживает как вызов функций, так и визуальное распознавание. Пожалуйста, проверьте возможность использования указанных функций в вашем конкретном случае.",
+ "functionCall": "Эта модель поддерживает вызов функций (Function Call).",
+ "tokens": "Эта модель поддерживает до {{tokens}} токенов в одной сессии.",
+ "vision": "Эта модель поддерживает визуальное распознавание."
+ }
+ },
"about": "О нас",
"advanceSettings": "Расширенные настройки",
"agentMaxToken": "Максимальная длина сессии",
@@ -89,6 +97,14 @@
"zh-TW": "Традиционный китайский"
},
"layoutInitializing": "Инициализация макета...",
+ "modelProvider": {
+ "azure": "Azure",
+ "bedrock": "AWS Bedrock",
+ "google": "Google",
+ "oneapi": "One API",
+ "openai": "OpenAI",
+ "zhipu": "Zhipu AI"
+ },
"noDescription": "Нет описания",
"ok": "ОК",
"password": "Пароль",
diff --git a/locales/ru-RU/error.json b/locales/ru-RU/error.json
index 1c8d65c7a1d8..cf56155f849e 100644
--- a/locales/ru-RU/error.json
+++ b/locales/ru-RU/error.json
@@ -33,8 +33,17 @@
"502": "К сожалению, сервер, похоже, потерян и временно не может предоставлять услуги. Повторите попытку позже.",
"503": "К сожалению, сервер в настоящее время не может обработать ваш запрос, возможно, из-за перегрузки или технического обслуживания. Повторите попытку позже.",
"504": "К сожалению, сервер не получил ответа от вышестоящего сервера. Повторите попытку позже.",
- "InvalidAccessCode": "Пароль неверен или пуст. Введите правильный пароль доступа или добавьте собственный ключ API OpenAI.",
- "NoAPIKey": "Ключ OpenAI API пуст, пожалуйста, добавьте свой собственный ключ OpenAI API",
+ "AgentRuntimeError": "Ошибка выполнения времени выполнения языковой модели Lobe, пожалуйста, проверьте и повторите попытку в соответствии с предоставленной информацией",
+ "AzureBizError": "Ошибка запроса службы Azure AI, пожалуйста, проверьте и повторите попытку в соответствии с предоставленной информацией",
+ "BedrockBizError": "Ошибка запроса службы Bedrock, пожалуйста, проверьте и повторите попытку в соответствии с предоставленной информацией",
+ "GoogleBizError": "Ошибка запроса службы Google, пожалуйста, проверьте и повторите попытку в соответствии с предоставленной информацией",
+ "InvalidAccessCode": "Неверный код доступа: введите правильный код доступа или добавьте пользовательский ключ API",
+ "InvalidAzureAPIKey": "Неверный или пустой ключ API Azure, пожалуйста, проверьте ключ API Azure и повторите попытку",
+ "InvalidBedrockCredentials": "Аутентификация Bedrock не прошла, пожалуйста, проверьте AccessKeyId/SecretAccessKey и повторите попытку",
+ "InvalidGoogleAPIKey": "Неверный или пустой ключ API Google, пожалуйста, проверьте ключ API Google и повторите попытку",
+ "InvalidZhipuAPIKey": "Неверный или пустой ключ API Zhipu, пожалуйста, проверьте ключ API Zhipu и повторите попытку",
+ "LocationNotSupportError": "Извините, ваше текущее местоположение не поддерживает эту службу модели, возможно из-за ограничений региона или недоступности службы. Пожалуйста, убедитесь, что текущее местоположение поддерживает использование этой службы, или попробуйте использовать другую информацию о местоположении.",
+ "NoOpenAIAPIKey": "Ключ OpenAI API пуст, пожалуйста, добавьте свой собственный ключ OpenAI API",
"OpenAIBizError": "Ошибка запроса службы OpenAI. Устраните неполадку или повторите попытку, основываясь на следующей информации.",
"PluginApiNotFound": "К сожалению, API не существует в манифесте плагина. Пожалуйста, проверьте, соответствует ли ваш метод запроса API манифеста плагина",
"PluginApiParamsError": "К сожалению, проверка входных параметров для запроса плагина не удалась. Пожалуйста, проверьте, соответствуют ли входные параметры описанию API",
@@ -47,7 +56,8 @@
"PluginMetaNotFound": "К сожалению, плагин не найден в индексе. Пожалуйста, проверьте информацию о конфигурации плагина в индексе",
"PluginOpenApiInitError": "Извините, не удалось инициализировать клиент OpenAPI. Пожалуйста, проверьте правильность информации конфигурации OpenAPI.",
"PluginServerError": "Запрос сервера плагина возвратил ошибку. Проверьте файл манифеста плагина, конфигурацию плагина или реализацию сервера на основе информации об ошибке ниже",
- "PluginSettingsInvalid": "Этот плагин необходимо правильно настроить, прежде чем его можно будет использовать. Пожалуйста, проверьте правильность вашей конфигурации"
+ "PluginSettingsInvalid": "Этот плагин необходимо правильно настроить, прежде чем его можно будет использовать. Пожалуйста, проверьте правильность вашей конфигурации",
+ "ZhipuBizError": "Ошибка запроса службы Zhipu, пожалуйста, проверьте и повторите попытку в соответствии с предоставленной информацией"
},
"stt": {
"responseError": "Ошибка запроса сервиса. Пожалуйста, проверьте конфигурацию или повторите попытку"
@@ -57,9 +67,24 @@
},
"unlock": {
"apikey": {
- "addProxyUrl": "Добавить адрес прокси OpenAI (необязательно)",
- "description": "Введите свой ключ API OpenAI, чтобы начать сеанс. Приложение не будет сохранять ваш ключ API.",
- "title": "Использовать собственный ключ API"
+ "Bedrock": {
+ "customRegion": "Пользовательская область услуг",
+ "description": "Введите свой ключ доступа Aws AccessKeyId / SecretAccessKey, чтобы начать сеанс. Приложение не будет сохранять вашу аутентификационную конфигурацию",
+ "title": "Использовать пользовательскую информацию об аутентификации Bedrock"
+ },
+ "Google": {
+ "description": "Введите свой ключ API Google, чтобы начать сеанс. Приложение не будет сохранять ваш ключ API",
+ "title": "Использовать пользовательский ключ API Google"
+ },
+ "OpenAI": {
+ "addProxyUrl": "Добавить адрес прокси OpenAI (необязательно)",
+ "description": "Введите свой ключ API OpenAI, чтобы начать сеанс. Приложение не будет сохранять ваш ключ API",
+ "title": "Использовать пользовательский ключ API OpenAI"
+ },
+ "Zhipu": {
+ "description": "Введите свой ключ API Zhipu, чтобы начать сеанс. Приложение не будет сохранять ваш ключ API",
+ "title": "Использовать пользовательский ключ API Zhipu"
+ }
},
"closeMessage": "Закрыть сообщение",
"confirm": "Подтвердить и повторить попытку",
@@ -67,6 +92,10 @@
"description": "Шифрование приложения включено администратором. Введите пароль приложения, чтобы разблокировать приложение. Пароль необходимо ввести только один раз.",
"placeholder": "Введите пароль",
"title": "Введите пароль для разблокировки приложения"
+ },
+ "tabs": {
+ "apiKey": "Пользовательский ключ API",
+ "password": "Пароль"
}
}
}
diff --git a/locales/ru-RU/setting.json b/locales/ru-RU/setting.json
index a095e41c8050..73437dd7383e 100644
--- a/locales/ru-RU/setting.json
+++ b/locales/ru-RU/setting.json
@@ -22,6 +22,15 @@
},
"llm": {
"AzureOpenAI": {
+ "azureApiVersion": {
+ "desc": "Версия API Azure, следуйте формату YYYY-MM-DD, см. [последнюю версию](https://learn.microsoft.com/ru-ru/azure/ai-services/openai/reference#chat-completions)",
+ "fetch": "Получить список",
+ "title": "Версия API Azure"
+ },
+ "deployments": {
+ "desc": "Используйте синтаксис id=name для указания вашего развертывания модели (например, если имя развертывания и модели совпадают, можно указать только имя модели), для нескольких моделей используйте запятую (,)",
+ "title": "Список развертываний Azure"
+ },
"endpoint": {
"desc": "Это значение можно найти в разделе 'Ключи и конечные точки' при проверке ресурсов на портале Azure",
"placeholder": "https://docs-test-001.openai.azure.com",
@@ -38,18 +47,41 @@
"title": "API-ключ"
}
},
+ "Bedrock": {
+ "accessKeyId": {
+ "desc": "Введите идентификатор ключа доступа AWS",
+ "placeholder": "Идентификатор ключа доступа AWS",
+ "title": "Идентификатор ключа доступа AWS"
+ },
+ "checker": {
+ "desc": "Проверьте правильность заполнения AccessKeyId / SecretAccessKey"
+ },
+ "region": {
+ "desc": "Введите регион AWS",
+ "placeholder": "Регион AWS",
+ "title": "Регион AWS"
+ },
+ "secretAccessKey": {
+ "desc": "Введите секретный ключ доступа AWS",
+ "placeholder": "Секретный ключ доступа AWS",
+ "title": "Секретный ключ доступа AWS"
+ },
+ "title": "Bedrock"
+ },
+ "Google": {
+ "title": "Google",
+ "token": {
+ "desc": "Введите API-ключ от Google",
+ "placeholder": "Ключ API Google",
+ "title": "API-ключ"
+ }
+ },
"OpenAI": {
"azureApiVersion": {
"desc": "Версия API Azure, следуйте формату ГГГГ-ММ-ДД, см. [последнюю версию](https://learn.microsoft.com/ru-ru/azure/ai-services/openai/reference#chat-completions)",
"fetch": "Получить список",
"title": "Версия API Azure"
},
- "check": {
- "button": "Проверить",
- "desc": "Проверьте правильность заполнения ключа API и адреса прокси",
- "pass": "Проверка успешно пройдена",
- "title": "Проверка соединения"
- },
"customModelName": {
"desc": "Добавьте пользовательскую модель, разделяя их запятыми (,)",
"placeholder": "модель1,модель2,модель3",
@@ -82,6 +114,20 @@
"title": "Использовать Azure OpenAI"
}
},
+ "Zhipu": {
+ "title": "智谱",
+ "token": {
+ "desc": "Введите API-ключ от Zhipu",
+ "placeholder": "Ключ API Zhipu",
+ "title": "API-ключ"
+ }
+ },
+ "checker": {
+ "button": "Проверить",
+ "desc": "Проверьте правильность заполнения ключа API и адреса прокси",
+ "pass": "Проверка пройдена",
+ "title": "Проверка доступности"
+ },
"waitingForMore": "Больше моделей доступно в <1>плане подключения1>, ожидайте ✨"
},
"plugin": {
@@ -293,6 +339,7 @@
"builtins": {
"groupName": "Встроенные инструменты"
},
+ "disabled": "Текущая модель не поддерживает вызов функций и не может использовать плагины",
"plugins": {
"enabled": "Активировано {{num}}",
"groupName": "Плагины",
diff --git a/locales/tr-TR/chat.json b/locales/tr-TR/chat.json
index 6689c775d413..bb2c65876eef 100644
--- a/locales/tr-TR/chat.json
+++ b/locales/tr-TR/chat.json
@@ -1,4 +1,7 @@
{
+ "ModelSwitch": {
+ "title": "Model Değiştir"
+ },
"agentDefaultMessage": "Merhaba, Ben **{{name}}**. Hemen benimle sohbet etmeye başlayabilirsiniz veya [Asistan Ayarları](/chat/settings#session={{id}}) sayfasına giderek bilgilerimi tamamlayabilirsiniz.",
"agentDefaultMessageWithSystemRole": "Merhaba, Ben **{{name}}**, {{systemRole}}. Hemen sohbet etmeye başlayalım!",
"backToBottom": "En alta git",
@@ -64,7 +67,14 @@
"prettifying": "İyileştiriliyor..."
},
"temp": "Geçici",
- "tokenDetail": "Rol Ayarı: {{systemRoleToken}} · Sohbet Geçmişi: {{chatsToken}}",
+ "tokenDetails": {
+ "chats": "Sohbetler",
+ "rest": "Kalan",
+ "systemRole": "Sistem Rolü",
+ "tools": "Araçlar",
+ "total": "Toplam",
+ "used": "Kullanılan"
+ },
"tokenTag": {
"overload": "Limit Aşıldı",
"remained": "Kalan",
@@ -102,6 +112,7 @@
"updateAgent": "Asistan Bilgilerini Güncelle",
"upload": {
"actionTooltip": "Resim Yükle",
+ "disabled": "Geçerli model görüntü tanıma desteğini desteklemiyor, lütfen modeli değiştirerek kullanın",
"dragDesc": "Dosyaları buraya sürükleyip bırakın, birden fazla resim yüklemeyi destekler. Resimleri doğrudan göndermek için Shift tuşunu basılı tutun.",
"dragTitle": "Resim Yükle"
}
diff --git a/locales/tr-TR/common.json b/locales/tr-TR/common.json
index 2f4f7fbcd1eb..4d80d96eb7e7 100644
--- a/locales/tr-TR/common.json
+++ b/locales/tr-TR/common.json
@@ -1,4 +1,12 @@
{
+ "ModelSelect": {
+ "featureTag": {
+ "custom": "Özel model, varsayılan olarak hem fonksiyon çağrısını hem de görüntü tanımayı destekler, lütfen yukarıdaki yeteneklerin kullanılabilirliğini doğrulayın",
+ "functionCall": "Bu model fonksiyon çağrısını destekler (Function Call)",
+ "tokens": "Bu model, tek bir oturumda en fazla {{tokens}} Token'ı destekler",
+ "vision": "Bu model görüntü tanımı destekler"
+ }
+ },
"about": "Hakkında",
"advanceSettings": "Gelişmiş Ayarlar",
"agentMaxToken": "Maksimum Oturum Süresi",
@@ -89,6 +97,14 @@
"zh-TW": "Geleneksel Çince"
},
"layoutInitializing": "Başlatılıyor...",
+ "modelProvider": {
+ "azure": "Azure",
+ "bedrock": "AWS Bedrock",
+ "google": "Google",
+ "oneapi": "One API",
+ "openai": "OpenAI",
+ "zhipu": "Zhipu AI"
+ },
"noDescription": "Açıklama yok",
"ok": "Tamam",
"password": "Password",
diff --git a/locales/tr-TR/error.json b/locales/tr-TR/error.json
index 44a062494a2d..529c9b030db4 100644
--- a/locales/tr-TR/error.json
+++ b/locales/tr-TR/error.json
@@ -33,8 +33,17 @@
"502": "Üzgünüm, sunucu kayboldu ve geçici olarak hizmet veremiyor. Lütfen daha sonra tekrar deneyin.",
"503": "Üzgünüm, sunucu şu anda isteğinizi işleyemiyor, muhtemelen aşırı yüklenme veya bakım nedeniyle. Lütfen daha sonra tekrar deneyin.",
"504": "Üzgünüm, sunucu yukarı akış sunucusundan bir yanıt alamadı. Lütfen daha sonra tekrar deneyin.",
- "InvalidAccessCode": "Şifre yanlış veya boş. Lütfen doğru erişim şifresini girin veya özel bir OpenAI API Anahtarı ekleyin.",
- "NoAPIKey": "OpenAI API Anahtarı boş, lütfen özel bir OpenAI API Anahtarı ekleyin",
+ "AgentRuntimeError": "Lobe dil modeli çalışma zamanı hatası, lütfen aşağıdaki bilgilere göre sorunu gidermeye çalışın veya tekrar deneyin",
+ "AzureBizError": "Azure AI servisi isteği hatası, lütfen aşağıdaki bilgilere göre sorunu gidermeye çalışın veya tekrar deneyin",
+ "BedrockBizError": "Bedrock servisi isteği hatası, lütfen aşağıdaki bilgilere göre sorunu gidermeye çalışın veya tekrar deneyin",
+ "GoogleBizError": "Google servisi isteği hatası, lütfen aşağıdaki bilgilere göre sorunu gidermeye çalışın veya tekrar deneyin",
+ "InvalidAccessCode": "Geçersiz Erişim Kodu: Geçersiz veya boş bir şifre girdiniz. Lütfen doğru erişim şifresini girin veya özel API Anahtarı ekleyin.",
+ "InvalidAzureAPIKey": "Azure API Anahtarı yanlış veya boş, lütfen Azure API Anahtarınızı kontrol edip tekrar deneyin",
+ "InvalidBedrockCredentials": "Bedrock kimlik doğrulaması geçersiz, lütfen AccessKeyId/SecretAccessKey bilgilerinizi kontrol edip tekrar deneyin",
+ "InvalidGoogleAPIKey": "Google API Anahtarı yanlış veya boş, lütfen Google API Anahtarınızı kontrol edip tekrar deneyin",
+ "InvalidZhipuAPIKey": "Zhipu API Anahtarı yanlış veya boş, lütfen Zhipu API Anahtarınızı kontrol edip tekrar deneyin",
+ "LocationNotSupportError": "Üzgünüz, bulunduğunuz konum bu model hizmetini desteklemiyor, muhtemelen bölge kısıtlamaları veya hizmetin henüz açılmamış olması nedeniyle. Lütfen mevcut konumun bu hizmeti kullanmaya uygun olup olmadığını doğrulayın veya başka bir konum bilgisi kullanmayı deneyin.",
+ "NoOpenAIAPIKey": "OpenAI API Anahtarı boş, lütfen özel bir OpenAI API Anahtarı ekleyin",
"OpenAIBizError": "OpenAI hizmeti talep ederken hata oluştu. Aşağıdaki bilgilere dayanarak sorun giderin veya tekrar deneyin.",
"PluginApiNotFound": "Üzgünüm, eklentinin bildiriminde API mevcut değil. Lütfen istek yönteminizin eklenti bildirim API'sı ile eşleşip eşleşmediğini kontrol edin",
"PluginApiParamsError": "Üzgünüm, eklenti isteği için giriş parametre doğrulaması başarısız oldu. Lütfen giriş parametrelerinin API açıklamasıyla eşleşip eşleşmediğini kontrol edin",
@@ -47,7 +56,8 @@
"PluginMetaNotFound": "Üzgünüm, dizinde eklenti bulunamadı. Lütfen dizindeki eklentinin yapılandırma bilgilerini kontrol edin",
"PluginOpenApiInitError": "Üzgünüz, OpenAPI istemci başlatma hatası, lütfen OpenAPI yapılandırma bilgilerini kontrol edin",
"PluginServerError": "Eklenti sunucusu isteği bir hata ile döndü. Lütfen aşağıdaki hata bilgilerine dayanarak eklenti bildirim dosyanızı, eklenti yapılandırmanızı veya sunucu uygulamanızı kontrol edin",
- "PluginSettingsInvalid": "Bu eklenti, kullanılmadan önce doğru şekilde yapılandırılmalıdır. Lütfen yapılandırmanızın doğru olup olmadığını kontrol edin"
+ "PluginSettingsInvalid": "Bu eklenti, kullanılmadan önce doğru şekilde yapılandırılmalıdır. Lütfen yapılandırmanızın doğru olup olmadığını kontrol edin",
+ "ZhipuBizError": "Zhipu servisi isteği hatası, lütfen aşağıdaki bilgilere göre sorunu gidermeye çalışın veya tekrar deneyin"
},
"stt": {
"responseError": "Hizmet isteği başarısız oldu, lütfen yapılandırmayı kontrol edin veya tekrar deneyin"
@@ -57,9 +67,24 @@
},
"unlock": {
"apikey": {
- "addProxyUrl": "OpenAI Proxy URL'si Ekle (isteğe bağlı)",
- "description": "Konuşmayı başlatmak için OpenAI API Anahtarınızı girin. Uygulama API Anahtarınızı kaydetmeyecek.",
- "title": "Özel API Anahtarı Kullanın"
+ "Bedrock": {
+ "customRegion": "Özel bölgeyi kullan",
+ "description": "Aws AccessKeyId / SecretAccessKey bilgilerinizi girerek oturumu başlatabilirsiniz. Uygulama kimlik doğrulama yapılandırmanızı kaydetmez",
+ "title": "Özel Bedrock kimlik bilgilerini kullan"
+ },
+ "Google": {
+ "description": "Google API Anahtarınızı girerek oturumu başlatabilirsiniz. Uygulama API Anahtarınızı kaydetmez",
+ "title": "Özel Google API Anahtarını kullan"
+ },
+ "OpenAI": {
+ "addProxyUrl": "Proxy adresi ekle (isteğe bağlı)",
+ "description": "OpenAI API Anahtarınızı girerek oturumu başlatabilirsiniz. Uygulama API Anahtarınızı kaydetmez",
+ "title": "Özel OpenAI API Anahtarını kullan"
+ },
+ "Zhipu": {
+ "description": "Zhipu API Anahtarınızı girerek oturumu başlatabilirsiniz. Uygulama API Anahtarınızı kaydetmez",
+ "title": "Özel Zhipu API Anahtarını kullan"
+ }
},
"closeMessage": "Mesajı kapat",
"confirm": "Onayla ve Yeniden Dene",
@@ -67,6 +92,10 @@
"description": "Uygulama şifrelemesi yönetici tarafından etkinleştirilmiştir. Uygulamayı açmak için uygulama şifresini girin. Şifre sadece bir kez doldurulmalıdır.",
"placeholder": "Lütfen şifre girin",
"title": "Uygulamayı Açmak için Şifre Girin"
+ },
+ "tabs": {
+ "apiKey": "Özel API Anahtarı",
+ "password": "Şifre"
}
}
}
diff --git a/locales/tr-TR/setting.json b/locales/tr-TR/setting.json
index 5fbcc1700311..480233b73697 100644
--- a/locales/tr-TR/setting.json
+++ b/locales/tr-TR/setting.json
@@ -22,6 +22,15 @@
},
"llm": {
"AzureOpenAI": {
+ "azureApiVersion": {
+ "desc": "Azure'nin API sürümü, YYYY-MM-DD biçimini takip eder, [en son sürümü buradan bulabilirsiniz](https://learn.microsoft.com/tr-tr/azure/ai-services/openai/reference#chat-completions)",
+ "fetch": "Listeyi Al",
+ "title": "Azure API Sürümü"
+ },
+ "deployments": {
+ "desc": "id=name sözdizimini kullanarak dağıtım modelinizi doldurun (örneğin, dağıtım adı ve model aynıysa, yalnızca model adını doldurabilirsiniz), birden fazla model için virgül (,) kullanın",
+ "title": "Azure Dağıtımları"
+ },
"endpoint": {
"desc": "Bu değer, Azure portalındaki kaynağı kontrol ederken 'Keys and Endpoints' bölümünde bulunabilir",
"placeholder": "https://docs-test-001.openai.azure.com",
@@ -38,18 +47,41 @@
"title": "API Anahtarı"
}
},
+ "Bedrock": {
+ "accessKeyId": {
+ "desc": "Aws Access Key Id'sini girin",
+ "placeholder": "Aws Access Key Id",
+ "title": "Aws Access Key Id"
+ },
+ "checker": {
+ "desc": "AccessKeyId / SecretAccessKey'in doğru şekilde doldurulup doldurulmadığını test eder"
+ },
+ "region": {
+ "desc": "Aws Bölgesini girin",
+ "placeholder": "Aws Bölgesi",
+ "title": "Aws Bölgesi"
+ },
+ "secretAccessKey": {
+ "desc": "Aws Secret Access Key'i girin",
+ "placeholder": "Aws Secret Access Key",
+ "title": "Aws Secret Access Key"
+ },
+ "title": "Bedrock"
+ },
+ "Google": {
+ "title": "Google",
+ "token": {
+ "desc": "Google'dan alınan API Anahtarını girin",
+ "placeholder": "Google API Anahtarı",
+ "title": "API Anahtarı"
+ }
+ },
"OpenAI": {
"azureApiVersion": {
"desc": "Azure için API sürümü, YYYY-MM-DD formatını takip eder, [en son sürümü kontrol edin](https://learn.microsoft.com/en-us/azure/ai-services/openai/reference#chat-completions)",
"fetch": "Listeyi Al",
"title": "Azure API Sürümü"
},
- "check": {
- "button": "Kontrol Et",
- "desc": "Api Anahtarı ve proxy adresinin doğru şekilde doldurulup doldurulmadığını test eder",
- "pass": "Kontrol Başarılı",
- "title": "Bağlantı Kontrolü"
- },
"customModelName": {
"desc": "Özel modeller ekleyin, birden fazla modeli virgülle (,) ayırarak yazın",
"placeholder": "model1,model2,model3",
@@ -82,6 +114,20 @@
"title": "Azure OpenAI"
}
},
+ "Zhipu": {
+ "title": "智谱",
+ "token": {
+ "desc": "Zhipu'dan alınan API Anahtarını girin",
+ "placeholder": "Zhipu API Anahtarı",
+ "title": "API Anahtarı"
+ }
+ },
+ "checker": {
+ "button": "Kontrol Et",
+ "desc": "Api Anahtarı ve vekil adresinin doğru şekilde doldurulup doldurulmadığını test eder",
+ "pass": "Kontrol Başarılı",
+ "title": "Bağlantı Kontrolü"
+ },
"waitingForMore": "Daha fazla model eklenmesi planlanıyor ✨"
},
"plugin": {
@@ -293,6 +339,7 @@
"builtins": {
"groupName": "Dahili Araçlar"
},
+ "disabled": "Mevcut model fonksiyon çağrılarını desteklemez, eklenti kullanılamaz",
"plugins": {
"enabled": "Etkin: {{num}}",
"groupName": "Eklentiler",
diff --git a/locales/vi-VN/chat.json b/locales/vi-VN/chat.json
index 52730035f61b..6e5cefddcd21 100644
--- a/locales/vi-VN/chat.json
+++ b/locales/vi-VN/chat.json
@@ -1,4 +1,7 @@
{
+ "ModelSwitch": {
+ "title": "Mô hình"
+ },
"agentDefaultMessage": "Xin chào, tôi là **{{name}}**, bạn có thể bắt đầu trò chuyện với tôi ngay lập tức, hoặc đến [Cài đặt trợ lý](/chat/settings#session={{id}}) để hoàn thiện thông tin của tôi.",
"agentDefaultMessageWithSystemRole": "Xin chào, tôi là **{{name}}**, {{systemRole}}. Hãy bắt đầu trò chuyện ngay!",
"backToBottom": "Quay về dưới cùng",
@@ -64,7 +67,14 @@
"prettifying": "Đang tinh chỉnh..."
},
"temp": "Tạm thời",
- "tokenDetail": "Thiết lập vai trò: {{systemRoleToken}} · Tin nhắn cuộc trò chuyện: {{chatsToken}} · Thiết lập công cụ: {{toolsToken}}",
+ "tokenDetails": {
+ "chats": "Tin nhắn trò chuyện",
+ "rest": "Còn lại",
+ "systemRole": "Vai trò hệ thống",
+ "tools": "Công cụ",
+ "total": "Tổng cộng",
+ "used": "Đã sử dụng"
+ },
"tokenTag": {
"overload": "Vượt quá giới hạn",
"remained": "Còn lại",
@@ -102,6 +112,7 @@
"updateAgent": "Cập nhật thông tin trợ lý",
"upload": {
"actionTooltip": "Tải lên hình ảnh",
+ "disabled": "Mô hình hiện tại không hỗ trợ nhận diện hình ảnh, vui lòng chuyển đổi mô hình trước khi sử dụng",
"dragDesc": "Kéo và thả tệp vào đây, hỗ trợ tải lên nhiều hình ảnh. Giữ phím Shift để gửi hình ảnh trực tiếp",
"dragTitle": "Tải lên hình ảnh"
}
diff --git a/locales/vi-VN/common.json b/locales/vi-VN/common.json
index a8bd44dc6954..bb51835ccefa 100644
--- a/locales/vi-VN/common.json
+++ b/locales/vi-VN/common.json
@@ -1,4 +1,12 @@
{
+ "ModelSelect": {
+ "featureTag": {
+ "custom": "Chọn mô hình tùy chỉnh, mặc định hỗ trợ cả cuộc gọi hàm và nhận diện thị giác, vui lòng xác minh khả năng sử dụng của các tính năng trên dựa trên tình hình thực tế",
+ "functionCall": "Mô hình này hỗ trợ cuộc gọi hàm (Function Call)",
+ "tokens": "Mô hình này hỗ trợ tối đa {{tokens}} Tokens cho mỗi phiên",
+ "vision": "Mô hình này hỗ trợ nhận diện thị giác"
+ }
+ },
"about": "Giới thiệu",
"advanceSettings": "Cài đặt nâng cao",
"agentMaxToken": "Số ký tự tối đa của phiên",
@@ -89,6 +97,14 @@
"zh-TW": "Tiếng Trung (phồn thể)"
},
"layoutInitializing": "Đang tải bố cục...",
+ "modelProvider": {
+ "azure": "Azure",
+ "bedrock": "AWS Bedrock",
+ "google": "Google",
+ "oneapi": "One API",
+ "openai": "OpenAI",
+ "zhipu": "Zhipu AI"
+ },
"noDescription": "Chưa có mô tả",
"ok": "Đồng ý",
"password": "Mật khẩu",
diff --git a/locales/vi-VN/error.json b/locales/vi-VN/error.json
index c8ba410e639b..a5b585a051b1 100644
--- a/locales/vi-VN/error.json
+++ b/locales/vi-VN/error.json
@@ -33,8 +33,17 @@
"502": "Xin lỗi, máy chủ có vẻ lạc đường, tạm thời không thể cung cấp dịch vụ, vui lòng thử lại sau",
"503": "Xin lỗi, máy chủ hiện không thể xử lý yêu cầu của bạn, có thể do quá tải hoặc đang bảo trì, vui lòng thử lại sau",
"504": "Xin lỗi, máy chủ không đợi được phản hồi từ máy chủ upstream, vui lòng thử lại sau",
- "InvalidAccessCode": "Mật khẩu không đúng hoặc trống, vui lòng nhập mật khẩu truy cập đúng, hoặc thêm Khóa API OpenAI tùy chỉnh",
- "NoAPIKey": "Khóa API OpenAI trống, vui lòng thêm Khóa API OpenAI tùy chỉnh",
+ "AgentRuntimeError": "Lobe mô hình ngôn ngữ thực thi gặp lỗi, vui lòng kiểm tra và thử lại dựa trên thông tin dưới đây",
+ "AzureBizError": "Yêu cầu dịch vụ Azure AI gặp lỗi, vui lòng kiểm tra và thử lại dựa trên thông tin dưới đây",
+ "BedrockBizError": "Yêu cầu dịch vụ Bedrock gặp lỗi, vui lòng kiểm tra và thử lại dựa trên thông tin dưới đây",
+ "GoogleBizError": "Yêu cầu dịch vụ Google gặp lỗi, vui lòng kiểm tra và thử lại dựa trên thông tin dưới đây",
+ "InvalidAccessCode": "Mật khẩu truy cập không hợp lệ hoặc trống, vui lòng nhập mật khẩu truy cập đúng hoặc thêm Khóa API tùy chỉnh",
+ "InvalidAzureAPIKey": "Khóa API Azure không chính xác hoặc trống, vui lòng kiểm tra lại Khóa API Azure và thử lại",
+ "InvalidBedrockCredentials": "Xác thực Bedrock không thành công, vui lòng kiểm tra AccessKeyId/SecretAccessKey và thử lại",
+ "InvalidGoogleAPIKey": "Khóa API Google không chính xác hoặc trống, vui lòng kiểm tra lại Khóa API Google và thử lại",
+ "InvalidZhipuAPIKey": "Khóa API Zhipu không chính xác hoặc trống, vui lòng kiểm tra lại Khóa API Zhipu và thử lại",
+ "LocationNotSupportError": "Xin lỗi, vị trí của bạn không hỗ trợ dịch vụ mô hình này, có thể do hạn chế vùng miền hoặc dịch vụ chưa được mở. Vui lòng xác nhận xem vị trí hiện tại có hỗ trợ sử dụng dịch vụ này không, hoặc thử sử dụng thông tin vị trí khác.",
+ "NoOpenAIAPIKey": "Khóa API OpenAI trống, vui lòng thêm Khóa API OpenAI tùy chỉnh",
"OpenAIBizError": "Yêu cầu dịch vụ OpenAI gặp lỗi, vui lòng xác minh hoặc thử lại dựa trên thông tin dưới đây",
"PluginApiNotFound": "Xin lỗi, không có API nào trong tệp mô tả plugin, vui lòng kiểm tra phương thức yêu cầu của bạn có khớp với API mô tả plugin không",
"PluginApiParamsError": "Xin lỗi, kiểm tra tham số đầu vào yêu cầu của plugin không thông qua, vui lòng kiểm tra tham số đầu vào có khớp với thông tin mô tả API không",
@@ -47,7 +56,8 @@
"PluginMetaNotFound": "Xin lỗi, không tìm thấy thông tin cấu hình plugin trong chỉ mục",
"PluginOpenApiInitError": "Xin lỗi, khởi tạo khách hàng OpenAPI thất bại, vui lòng kiểm tra thông tin cấu hình OpenAPI có đúng không",
"PluginServerError": "Lỗi trả về từ máy chủ plugin, vui lòng kiểm tra tệp mô tả plugin, cấu hình plugin hoặc triển khai máy chủ theo thông tin lỗi dưới đây",
- "PluginSettingsInvalid": "Plugin cần phải được cấu hình đúng trước khi sử dụng, vui lòng kiểm tra cấu hình của bạn có đúng không"
+ "PluginSettingsInvalid": "Plugin cần phải được cấu hình đúng trước khi sử dụng, vui lòng kiểm tra cấu hình của bạn có đúng không",
+ "ZhipuBizError": "Yêu cầu dịch vụ Zhipu gặp lỗi, vui lòng kiểm tra và thử lại dựa trên thông tin dưới đây"
},
"stt": {
"responseError": "Yêu cầu dịch vụ thất bại, vui lòng kiểm tra cấu hình hoặc thử lại"
@@ -57,9 +67,24 @@
},
"unlock": {
"apikey": {
- "addProxyUrl": "Thêm địa chỉ proxy OpenAI (tùy chọn)",
- "description": "Nhập OpenAI API Key của bạn để bắt đầu phiên làm việc. Ứng dụng sẽ không lưu API Key của bạn",
- "title": "Sử dụng API Key tùy chỉnh"
+ "Bedrock": {
+ "customRegion": "Vùng dịch vụ tùy chỉnh",
+ "description": "Nhập Aws AccessKeyId / SecretAccessKey của bạn để bắt đầu phiên làm việc. Ứng dụng sẽ không lưu trữ cấu hình xác thực của bạn",
+ "title": "Sử dụng thông tin xác thực tùy chỉnh của Bedrock"
+ },
+ "Google": {
+ "description": "Nhập Google API Key của bạn để bắt đầu phiên làm việc. Ứng dụng sẽ không lưu trữ API Key của bạn",
+ "title": "Sử dụng thông tin xác thực tùy chỉnh của Google"
+ },
+ "OpenAI": {
+ "addProxyUrl": "Thêm địa chỉ proxy OpenAI (tùy chọn)",
+ "description": "Nhập OpenAI API Key của bạn để bắt đầu phiên làm việc. Ứng dụng sẽ không lưu trữ API Key của bạn",
+ "title": "Sử dụng thông tin xác thực tùy chỉnh của OpenAI"
+ },
+ "Zhipu": {
+ "description": "Nhập Zhipu API Key của bạn để bắt đầu phiên làm việc. Ứng dụng sẽ không lưu trữ API Key của bạn",
+ "title": "Sử dụng thông tin xác thực tùy chỉnh của Zhipu"
+ }
},
"closeMessage": "Đóng thông báo",
"confirm": "Xác nhận và thử lại",
@@ -67,6 +92,10 @@
"description": "Quản trị viên đã kích hoạt mã hóa ứng dụng. Nhập mật khẩu ứng dụng để mở khóa. Chỉ cần nhập mật khẩu một lần",
"placeholder": "Nhập mật khẩu",
"title": "Nhập mật khẩu để mở khóa ứng dụng"
+ },
+ "tabs": {
+ "apiKey": "Khóa API tùy chỉnh",
+ "password": "Mật khẩu"
}
}
}
diff --git a/locales/vi-VN/setting.json b/locales/vi-VN/setting.json
index 0533083a8786..224e837b26a9 100644
--- a/locales/vi-VN/setting.json
+++ b/locales/vi-VN/setting.json
@@ -22,6 +22,15 @@
},
"llm": {
"AzureOpenAI": {
+ "azureApiVersion": {
+ "desc": "Phiên bản API của Azure, theo định dạng YYYY-MM-DD, xem chi tiết [phiên bản mới nhất](https://learn.microsoft.com/zh-cn/azure/ai-services/openai/reference#chat-completions)",
+ "fetch": "Lấy danh sách",
+ "title": "Phiên bản API của Azure"
+ },
+ "deployments": {
+ "desc": "Sử dụng cú pháp id=name để điền tên triển khai của bạn (ví dụ: nếu tên triển khai và tên mô hình giống nhau, bạn chỉ cần điền tên mô hình), nhiều mô hình sử dụng dấu phẩy (,) để ngăn cách",
+ "title": "Danh sách triển khai của Azure"
+ },
"endpoint": {
"desc": "Giá trị này có thể được tìm thấy trong phần “Khóa và Điểm cuối” khi kiểm tra tài nguyên trên Cổng thông tin Azure",
"placeholder": "https://docs-test-001.openai.azure.com",
@@ -38,18 +47,41 @@
"title": "Khóa API"
}
},
+ "Bedrock": {
+ "accessKeyId": {
+ "desc": "Nhập Aws Access Key Id",
+ "placeholder": "Aws Access Key Id",
+ "title": "Aws Access Key Id"
+ },
+ "checker": {
+ "desc": "Kiểm tra xem AccessKeyId / SecretAccessKey đã được điền đúng chưa"
+ },
+ "region": {
+ "desc": "Nhập Aws Region",
+ "placeholder": "Aws Region",
+ "title": "Aws Region"
+ },
+ "secretAccessKey": {
+ "desc": "Nhập Aws Secret Access Key",
+ "placeholder": "Aws Secret Access Key",
+ "title": "Aws Secret Access Key"
+ },
+ "title": "Bedrock"
+ },
+ "Google": {
+ "title": "Google",
+ "token": {
+ "desc": "Nhập API Key từ Google",
+ "placeholder": "Google API Key",
+ "title": "API Key"
+ }
+ },
"OpenAI": {
"azureApiVersion": {
"desc": "Phiên bản API của Azure, theo định dạng YYYY-MM-DD, xem chi tiết tại [phiên bản mới nhất](https://learn.microsoft.com/zh-cn/azure/ai-services/openai/reference#chat-completions)",
"fetch": "Lấy danh sách",
"title": "Phiên bản API Azure"
},
- "check": {
- "button": "Kiểm tra",
- "desc": "Kiểm tra xem Khóa API và Địa chỉ proxy đã được điền đúng chưa",
- "pass": "Kiểm tra thành công",
- "title": "Kiểm tra kết nối"
- },
"customModelName": {
"desc": "Thêm mô hình tùy chỉnh, nhiều mô hình sử dụng dấu phẩy (,)",
"placeholder": "mô hình1, mô hình2, mô hình3",
@@ -82,6 +114,20 @@
"title": "Sử dụng Azure OpenAI"
}
},
+ "Zhipu": {
+ "title": "智谱",
+ "token": {
+ "desc": "Nhập API Key từ Zhipu",
+ "placeholder": "Zhipu API Key",
+ "title": "API Key"
+ }
+ },
+ "checker": {
+ "button": "Kiểm tra",
+ "desc": "Kiểm tra xem Api Key và địa chỉ proxy đã được điền đúng chưa",
+ "pass": "Kiểm tra thành công",
+ "title": "Kiểm tra kết nối"
+ },
"waitingForMore": "Có thêm mô hình đang <1>được lên kế hoạch tích hợp1>, hãy chờ đợi ✨"
},
"plugin": {
@@ -293,6 +339,7 @@
"builtins": {
"groupName": "Mở rộng tích hợp sẵn"
},
+ "disabled": "Mô hình hiện tại không hỗ trợ gọi hàm, không thể sử dụng plugin",
"plugins": {
"enabled": "Đã kích hoạt {{num}}",
"groupName": "Tiện ích",
diff --git a/locales/zh-CN/chat.json b/locales/zh-CN/chat.json
index 260a6b0e450f..da189e2c229e 100644
--- a/locales/zh-CN/chat.json
+++ b/locales/zh-CN/chat.json
@@ -1,4 +1,7 @@
{
+ "ModelSwitch": {
+ "title": "模型"
+ },
"agentDefaultMessage": "你好,我是 **{{name}}**,你可以立即与我开始对话,也可以前往 [助手设置](/chat/settings#session={{id}}) 完善我的信息。",
"agentDefaultMessageWithSystemRole": "你好,我是 **{{name}}**,{{systemRole}},让我们开始对话吧!",
"backToBottom": "跳转至当前",
@@ -64,7 +67,14 @@
"prettifying": "润色中..."
},
"temp": "临时",
- "tokenDetail": "角色设定: {{systemRoleToken}} · 会话消息: {{chatsToken}} · 工具设定: {{toolsToken}}",
+ "tokenDetails": {
+ "chats": "会话消息",
+ "rest": "剩余可用",
+ "systemRole": "角色设定",
+ "tools": "插件设定",
+ "total": "总共可用",
+ "used": "总计使用"
+ },
"tokenTag": {
"overload": "超过限制",
"remained": "剩余",
@@ -102,6 +112,7 @@
"updateAgent": "更新助理信息",
"upload": {
"actionTooltip": "上传图片",
+ "disabled": "当前模型不支持视觉识别,请切换模型后使用",
"dragDesc": "拖拽文件到这里,支持上传多个图片。按住 Shift 直接发送图片",
"dragTitle": "上传图片"
}
diff --git a/locales/zh-CN/common.json b/locales/zh-CN/common.json
index aab3a17206bb..01c832dd9fad 100644
--- a/locales/zh-CN/common.json
+++ b/locales/zh-CN/common.json
@@ -1,4 +1,12 @@
{
+ "ModelSelect": {
+ "featureTag": {
+ "custom": "自定义模型,默认设定同时支持函数调用与视觉识别,请根据实际情况验证上述能力的可用性",
+ "functionCall": "该模型支持函数调用(Function Call)",
+ "tokens": "该模型单个会话最多支持 {{tokens}} Tokens",
+ "vision": "该模型支持视觉识别"
+ }
+ },
"about": "关于",
"advanceSettings": "高级设置",
"agentMaxToken": "会话最大长度",
@@ -89,6 +97,14 @@
"zh-TW": "繁体中文"
},
"layoutInitializing": "正在加载布局...",
+ "modelProvider": {
+ "azure": "Azure",
+ "bedrock": "AWS Bedrock",
+ "google": "Google",
+ "oneapi": "One API",
+ "openai": "OpenAI",
+ "zhipu": "智谱AI"
+ },
"noDescription": "暂无描述",
"ok": "确定",
"password": "密码",
diff --git a/locales/zh-CN/error.json b/locales/zh-CN/error.json
index 1bbc48e715de..9a1b7be1c6a2 100644
--- a/locales/zh-CN/error.json
+++ b/locales/zh-CN/error.json
@@ -45,9 +45,19 @@
"PluginServerError": "插件服务端请求返回出错,请检查根据下面的报错信息检查你的插件描述文件、插件配置或服务端实现",
"PluginGatewayError": "很抱歉,插件网关出现错误,请检查插件网关配置是否正确",
"PluginOpenApiInitError": "很抱歉,OpenAPI 客户端初始化失败,请检查 OpenAPI 的配置信息是否正确",
- "InvalidAccessCode": "密码不正确或为空,请输入正确的访问密码,或者添加自定义 OpenAI API Key",
+ "InvalidAccessCode": "密码不正确或为空,请输入正确的访问密码,或者添加自定义 API Key",
+ "LocationNotSupportError": "很抱歉,你的所在位置不支持此模型服务,可能是由于地区限制或服务未开通。请确认当前位置是否支持使用此服务,或尝试使用其他位置信息。",
"OpenAIBizError": "请求 OpenAI 服务出错,请根据以下信息排查或重试",
- "NoAPIKey": "OpenAI API Key 为空,请添加自定义 OpenAI API Key"
+ "NoOpenAIAPIKey": "OpenAI API Key 为空,请添加自定义 OpenAI API Key",
+ "ZhipuBizError": "请求智谱服务出错,请根据以下信息排查或重试",
+ "InvalidZhipuAPIKey": "Zhipu API Key 不正确或为空,请检查 Zhipu API Key 后重试",
+ "GoogleBizError": "请求 Google 服务出错,请根据以下信息排查或重试",
+ "InvalidGoogleAPIKey": "Google API Key 不正确或为空,请检查 Google API Key 后重试",
+ "InvalidBedrockCredentials": "Bedrock 鉴权未通过,请检查 AccessKeyId/SecretAccessKey 后重试",
+ "BedrockBizError": "请求 Bedrock 服务出错,请根据以下信息排查或重试",
+ "InvalidAzureAPIKey": "Azure API Key 不正确或为空,请检查 Azure API Key 后重试",
+ "AzureBizError": "请求 Azure AI 服务出错,请根据以下信息排查或重试",
+ "AgentRuntimeError": "Lobe 语言模型运行时执行出错,请根据以下信息排查或重试"
},
"stt": {
"responseError": "服务请求失败,请检查配置或重试"
@@ -57,9 +67,24 @@
},
"unlock": {
"apikey": {
- "addProxyUrl": "添加 OpenAI 代理地址(可选)",
- "description": "输入你的 OpenAI API Key 即可开始会话。应用不会记录你的 API Key",
- "title": "使用自定义 API Key"
+ "Bedrock": {
+ "customRegion": "自定义服务区域",
+ "description": "输入你的 Aws AccessKeyId / SecretAccessKey 即可开始会话。应用不会记录你的鉴权配置",
+ "title": "使用自定义 Bedrock 鉴权信息"
+ },
+ "Google": {
+ "description": "输入你的 Google API Key 即可开始会话。应用不会记录你的 API Key",
+ "title": "使用自定义 Google API Key"
+ },
+ "OpenAI": {
+ "addProxyUrl": "添加 OpenAI 代理地址(可选)",
+ "description": "输入你的 OpenAI API Key 即可开始会话。应用不会记录你的 API Key",
+ "title": "使用自定义 OpenAI API Key"
+ },
+ "Zhipu": {
+ "description": "输入你的 Zhipu API Key 即可开始会话。应用不会记录你的 API Key",
+ "title": "使用自定义 Zhipu API Key"
+ }
},
"closeMessage": "关闭提示",
"confirm": "确认并重试",
@@ -67,6 +92,10 @@
"description": "管理员已开启应用加密,输入应用密码后即可解锁应用。密码只需填写一次",
"placeholder": "请输入密码",
"title": "输入密码解锁应用"
+ },
+ "tabs": {
+ "apiKey": "自定义 API Key",
+ "password": "密码"
}
}
}
diff --git a/locales/zh-CN/setting.json b/locales/zh-CN/setting.json
index 5d719ef98ddd..b932c22e60e8 100644
--- a/locales/zh-CN/setting.json
+++ b/locales/zh-CN/setting.json
@@ -22,6 +22,15 @@
},
"llm": {
"AzureOpenAI": {
+ "azureApiVersion": {
+ "desc": "Azure 的 API 版本,遵循 YYYY-MM-DD 格式,查阅[最新版本](https://learn.microsoft.com/zh-cn/azure/ai-services/openai/reference#chat-completions)",
+ "fetch": "获取列表",
+ "title": "Azure Api Version"
+ },
+ "deployments": {
+ "desc": "使用 id=name 的语法填写你的部署模型(如部署名和模型同名,可以只填写模型名称),多个模型使用逗号(,) 隔开",
+ "title": "Azure 部署模型列表"
+ },
"endpoint": {
"desc": "从 Azure 门户检查资源时,可在“密钥和终结点”部分中找到此值",
"placeholder": "https://docs-test-001.openai.azure.com",
@@ -31,25 +40,48 @@
"desc": "支持的模型",
"title": "模型列表"
},
- "title": "Azure OpenAI 设置",
+ "title": "Azure OpenAI",
"token": {
"desc": "从 Azure 门户检查资源时,可在“密钥和终结点”部分中找到此值。 可以使用 KEY1 或 KEY2",
"placeholder": "Azure API Key",
"title": "API Key"
}
},
+ "Bedrock": {
+ "accessKeyId": {
+ "desc": "填入Aws Access Key Id",
+ "placeholder": "Aws Access Key Id",
+ "title": "Aws Access Key Id"
+ },
+ "checker": {
+ "desc": "测试 AccessKeyId / SecretAccessKey 是否填写正确"
+ },
+ "region": {
+ "desc": "填入 Aws Region",
+ "placeholder": "Aws Region",
+ "title": "Aws Region"
+ },
+ "secretAccessKey": {
+ "desc": "填入 Aws Secret Access Key",
+ "placeholder": "Aws Secret Access Key",
+ "title": "Aws Secret Access Key"
+ },
+ "title": "Bedrock"
+ },
+ "Google": {
+ "title": "Google",
+ "token": {
+ "desc": "填入来自 Google 的 API Key",
+ "placeholder": "Google API Key",
+ "title": "API Key"
+ }
+ },
"OpenAI": {
"azureApiVersion": {
"desc": "Azure 的 API 版本,遵循 YYYY-MM-DD 格式,查阅[最新版本](https://learn.microsoft.com/zh-cn/azure/ai-services/openai/reference#chat-completions)",
"fetch": "获取列表",
"title": "Azure Api Version"
},
- "check": {
- "button": "检查",
- "desc": "测试 Api Key 与代理地址是否正确填写",
- "pass": "检查通过",
- "title": "连通性检查"
- },
"customModelName": {
"desc": "增加自定义模型,多个模型使用逗号(,) 隔开",
"placeholder": "model1,model2,model3",
@@ -69,11 +101,11 @@
"refetch": "重新获取模型列表",
"title": "模型列表"
},
- "title": "OpenAI 设置",
+ "title": "OpenAI",
"token": {
"desc": "使用自己的 OpenAI Key",
"placeholder": "OpenAI API Key",
- "title": "API Key"
+ "title": "OpenAI API Key"
},
"useAzure": {
"desc": "使用 Azure 提供的 OpenAI 服务",
@@ -82,6 +114,20 @@
"title": "Azure OpenAI"
}
},
+ "Zhipu": {
+ "title": "智谱",
+ "token": {
+ "desc": "填入来自智谱的 API Key",
+ "placeholder": "Zhipu API Key",
+ "title": "API Key"
+ }
+ },
+ "checker": {
+ "button": "检查",
+ "desc": "测试 Api Key 与代理地址是否正确填写",
+ "pass": "检查通过",
+ "title": "连通性检查"
+ },
"waitingForMore": "更多模型正在 <1>计划接入1> 中,敬请期待 ✨"
},
"plugin": {
@@ -291,14 +337,15 @@
},
"tools": {
"builtins": {
- "groupName": "内置扩展"
+ "groupName": "内置插件"
},
+ "disabled": "当前模型不支持函数调用,无法使用插件",
"plugins": {
"enabled": "已启用 {{num}}",
- "groupName": "插件",
+ "groupName": "三方插件",
"noEnabled": "暂无启用插件",
"store": "插件商店"
},
- "title": "扩展工具"
+ "title": "扩展插件"
}
}
diff --git a/locales/zh-TW/chat.json b/locales/zh-TW/chat.json
index 2ed6a11c37a5..5a16830fe25c 100644
--- a/locales/zh-TW/chat.json
+++ b/locales/zh-TW/chat.json
@@ -1,4 +1,7 @@
{
+ "ModelSwitch": {
+ "title": "模型"
+ },
"agentDefaultMessage": "你好,我是 **{{name}}**,你可以立即與我開始對話,也可以前往 [助手設置](/chat/settings#session={{id}}) 完善我的信息。",
"agentDefaultMessageWithSystemRole": "你好,我是 **{{name}}**,{{systemRole}},讓我們開始對話吧!",
"backToBottom": "返回底部",
@@ -64,7 +67,14 @@
"prettifying": "潤色中..."
},
"temp": "臨時",
- "tokenDetail": "角色設定: {{systemRoleToken}} · 歷史消息: {{chatsToken}}",
+ "tokenDetails": {
+ "chats": "聊天訊息",
+ "rest": "剩餘可用",
+ "systemRole": "角色設定",
+ "tools": "外掛程式設定",
+ "total": "總共可用",
+ "used": "總計使用"
+ },
"tokenTag": {
"overload": "超過限制",
"remained": "剩餘",
@@ -102,6 +112,7 @@
"updateAgent": "更新助理信息",
"upload": {
"actionTooltip": "上傳圖片",
+ "disabled": "當前模型不支援視覺識別,請切換模型後使用",
"dragDesc": "拖拽文件到這裡,支持上傳多個圖片。按住 Shift 直接發送圖片",
"dragTitle": "上傳圖片"
}
diff --git a/locales/zh-TW/common.json b/locales/zh-TW/common.json
index e5576c8156eb..0eb37ed94f52 100644
--- a/locales/zh-TW/common.json
+++ b/locales/zh-TW/common.json
@@ -1,4 +1,12 @@
{
+ "ModelSelect": {
+ "featureTag": {
+ "custom": "自訂模型,預設支援函數呼叫與視覺辨識,請根據實際情況驗證上述能力的可用性",
+ "functionCall": "該模型支援函數呼叫(Function Call)",
+ "tokens": "該模型單個會話最多支援 {{tokens}} Tokens",
+ "vision": "該模型支援視覺辨識"
+ }
+ },
"about": "關於",
"advanceSettings": "進階設定",
"agentMaxToken": "助手最大標記",
@@ -89,6 +97,14 @@
"zh-TW": "繁體中文"
},
"layoutInitializing": "正在載入版面配置...",
+ "modelProvider": {
+ "azure": "Azure",
+ "bedrock": "AWS Bedrock",
+ "google": "Google",
+ "oneapi": "One API",
+ "openai": "OpenAI",
+ "zhipu": "智譜AI"
+ },
"noDescription": "暫無描述",
"ok": "確定",
"password": "密碼",
diff --git a/locales/zh-TW/error.json b/locales/zh-TW/error.json
index a126ae73f4ed..861942fd2cef 100644
--- a/locales/zh-TW/error.json
+++ b/locales/zh-TW/error.json
@@ -33,8 +33,17 @@
"502": "抱歉,伺服器似乎迷失了方向,暫時無法提供服務。請稍後再試。",
"503": "抱歉,伺服器目前無法處理您的請求,可能是因為過載或正在進行維護。請稍後再試。",
"504": "抱歉,伺服器沒有收到上游伺服器的回應。請稍後再試。",
- "InvalidAccessCode": "密碼不正確或為空。請輸入正確的存取密碼,或新增自定義的 OpenAI API Key。",
- "NoAPIKey": "OpenAI API 金鑰為空,請添加自訂 OpenAI API 金鑰",
+ "AgentRuntimeError": "Lobe 語言模型運行時執行出錯,請根據以下信息排查或重試",
+ "AzureBizError": "請求 Azure AI 服務出錯,請根據以下信息排查或重試",
+ "BedrockBizError": "請求 Bedrock 服務出錯,請根據以下信息排查或重試",
+ "GoogleBizError": "請求 Google 服務出錯,請根據以下信息排查或重試",
+ "InvalidAccessCode": "密碼不正確或為空,請輸入正確的訪問密碼,或添加自定義 API 金鑰",
+ "InvalidAzureAPIKey": "Azure API Key 不正確或為空,請檢查 Azure API Key 後重試",
+ "InvalidBedrockCredentials": "Bedrock 驗證未通過,請檢查 AccessKeyId/SecretAccessKey 後重試",
+ "InvalidGoogleAPIKey": "Google API Key 不正確或為空,請檢查 Google API Key 後重試",
+ "InvalidZhipuAPIKey": "Zhipu API Key 不正確或為空,請檢查 Zhipu API Key 後重試",
+ "LocationNotSupportError": "很抱歉,你的所在位置不支持此模型服務,可能是由於地區限制或服務未開通。請確認當前位置是否支持使用此服務,或嘗試使用其他位置信息。",
+ "NoOpenAIAPIKey": "OpenAI API 金鑰為空,請添加自訂 OpenAI API 金鑰",
"OpenAIBizError": "請求 OpenAI 服務出錯。請根據以下資訊進行排查或重試。",
"PluginApiNotFound": "抱歉,外掛描述檔案中不存在該 API。請檢查您的請求方法與外掛清單 API 是否相符",
"PluginApiParamsError": "抱歉,該外掛請求的輸入參數驗證失敗。請檢查輸入參數與 API 描述資訊是否相符",
@@ -47,7 +56,8 @@
"PluginMetaNotFound": "抱歉,索引中找不到該外掛。請檢查索引中的外掛設定資訊",
"PluginOpenApiInitError": "很抱歉,OpenAPI 客戶端初始化失敗,請檢查 OpenAPI 的配置信息是否正確",
"PluginServerError": "外掛伺服器請求回傳錯誤。請根據下面的錯誤資訊檢查您的外掛描述檔案、外掛設定或伺服器實作",
- "PluginSettingsInvalid": "該外掛需要正確設定後才可以使用。請檢查您的設定是否正確"
+ "PluginSettingsInvalid": "該外掛需要正確設定後才可以使用。請檢查您的設定是否正確",
+ "ZhipuBizError": "請求智譜服務出錯,請根據以下信息排查或重試"
},
"stt": {
"responseError": "服務請求失敗,請檢查配置或重試"
@@ -57,9 +67,24 @@
},
"unlock": {
"apikey": {
- "addProxyUrl": "添加 OpenAI 代理地址(可選)",
- "description": "輸入你的 OpenAI API Key 即可開始會話。應用程式不會記錄你的 API Key",
- "title": "使用自定義 API Key"
+ "Bedrock": {
+ "customRegion": "自定義服務區域",
+ "description": "輸入你的 Aws AccessKeyId / SecretAccessKey 即可開始會話。應用不會記錄你的驗證配置",
+ "title": "使用自定義 Bedrock 驗證信息"
+ },
+ "Google": {
+ "description": "輸入你的 Google API Key 即可開始會話。應用不會記錄你的 API Key",
+ "title": "使用自定義 Google API Key"
+ },
+ "OpenAI": {
+ "addProxyUrl": "添加 OpenAI 代理地址(可選)",
+ "description": "輸入你的 OpenAI API Key 即可開始會話。應用不會記錄你的 API Key",
+ "title": "使用自定義 OpenAI API Key"
+ },
+ "Zhipu": {
+ "description": "輸入你的 Zhipu API Key 即可開始會話。應用不會記錄你的 API Key",
+ "title": "使用自定義 Zhipu API Key"
+ }
},
"closeMessage": "關閉提示",
"confirm": "確認並重試",
@@ -67,6 +92,10 @@
"description": "管理員已啟用應用程式加密,輸入應用程式密碼後即可解鎖應用程式。密碼只需填寫一次。",
"placeholder": "請輸入密碼",
"title": "輸入密碼解鎖應用程式"
+ },
+ "tabs": {
+ "apiKey": "自定義 API Key",
+ "password": "密碼"
}
}
}
diff --git a/locales/zh-TW/setting.json b/locales/zh-TW/setting.json
index 83fb5cb0777e..a4f956deee34 100644
--- a/locales/zh-TW/setting.json
+++ b/locales/zh-TW/setting.json
@@ -22,6 +22,15 @@
},
"llm": {
"AzureOpenAI": {
+ "azureApiVersion": {
+ "desc": "Azure 的 API 版本,遵循 YYYY-MM-DD 格式,查閱[最新版本](https://learn.microsoft.com/zh-cn/azure/ai-services/openai/reference#chat-completions)",
+ "fetch": "獲取列表",
+ "title": "Azure API 版本"
+ },
+ "deployments": {
+ "desc": "使用 id=name 的語法填寫你的部署模型(如部署名和模型同名,可以只填寫模型名稱),多個模型使用逗號(,) 隔開",
+ "title": "Azure 部署模型列表"
+ },
"endpoint": {
"desc": "從 Azure 門戶檢查資源時,可在“金鑰和終結點”部分中找到此值",
"placeholder": "https://docs-test-001.openai.azure.com",
@@ -38,18 +47,41 @@
"title": "API 金鑰"
}
},
+ "Bedrock": {
+ "accessKeyId": {
+ "desc": "填入 AWS Access Key ID",
+ "placeholder": "AWS Access Key ID",
+ "title": "AWS Access Key ID"
+ },
+ "checker": {
+ "desc": "測試 Access Key ID / Secret Access Key 是否填寫正確"
+ },
+ "region": {
+ "desc": "填入 AWS Region",
+ "placeholder": "AWS Region",
+ "title": "AWS Region"
+ },
+ "secretAccessKey": {
+ "desc": "填入 AWS Secret Access Key",
+ "placeholder": "AWS Secret Access Key",
+ "title": "AWS Secret Access Key"
+ },
+ "title": "Bedrock"
+ },
+ "Google": {
+ "title": "Google",
+ "token": {
+ "desc": "填入來自 Google 的 API 金鑰",
+ "placeholder": "Google API 金鑰",
+ "title": "API 金鑰"
+ }
+ },
"OpenAI": {
"azureApiVersion": {
"desc": "Azure 的 API 版本,遵循 YYYY-MM-DD 格式,查閱[最新版本](https://learn.microsoft.com/zh-cn/azure/ai-services/openai/reference#chat-completions)",
"fetch": "獲取列表",
"title": "Azure Api 版本"
},
- "check": {
- "button": "檢查",
- "desc": "測試 Api 金鑰與代理地址是否正確填寫",
- "pass": "檢查通過",
- "title": "連通性檢查"
- },
"customModelName": {
"desc": "增加自訂模型,多個模型使用逗號(,) 隔開",
"placeholder": "model1,model2,model3",
@@ -82,6 +114,20 @@
"title": "Azure OpenAI"
}
},
+ "Zhipu": {
+ "title": "智譜",
+ "token": {
+ "desc": "填入來自智譜的 API 金鑰",
+ "placeholder": "智譜 API 金鑰",
+ "title": "API 金鑰"
+ }
+ },
+ "checker": {
+ "button": "檢查",
+ "desc": "測試 API 金鑰與代理地址是否正確填寫",
+ "pass": "檢查通過",
+ "title": "連通性檢查"
+ },
"waitingForMore": "更多模型正在 <1>計劃接入1> 中,敬請期待 ✨"
},
"plugin": {
@@ -293,6 +339,7 @@
"builtins": {
"groupName": "內置"
},
+ "disabled": "當前模型不支持函數調用,無法使用插件",
"plugins": {
"enabled": "已啟用 {{num}}",
"groupName": "插件",
diff --git a/next.config.mjs b/next.config.mjs
index e8ef7fef11d3..1bd09267a40e 100644
--- a/next.config.mjs
+++ b/next.config.mjs
@@ -4,6 +4,9 @@ import analyzer from '@next/bundle-analyzer';
const isProd = process.env.NODE_ENV === 'production';
const buildWithDocker = process.env.DOCKER === 'true';
+// if you need to proxy the api endpoint to remote server
+const API_PROXY_ENDPOINT = process.env.API_PROXY_ENDPOINT || '';
+
const withBundleAnalyzer = analyzer({
enabled: process.env.ANALYZE === 'true',
});
@@ -44,10 +47,13 @@ const nextConfig = {
},
output: buildWithDocker ? 'standalone' : undefined,
+ rewrites: async () => [
+ // due to google api not work correct in some countries
+ // we need a proxy to bypass the restriction
+ { source: '/api/chat/google', destination: `${API_PROXY_ENDPOINT}/api/chat/google` },
+ ],
reactStrictMode: true,
- transpilePackages: ['antd-style'],
-
webpack(config) {
config.experiments = {
asyncWebAssembly: true,
diff --git a/package.json b/package.json
index 9710a6d21d90..86397e7d5673 100644
--- a/package.json
+++ b/package.json
@@ -73,10 +73,14 @@
},
"dependencies": {
"@ant-design/icons": "^5",
+ "@aws-sdk/client-bedrock-runtime": "^3.503.1",
+ "@azure/openai": "^1.0.0-beta.11",
"@cfworker/json-schema": "^1",
+ "@google/generative-ai": "^0.2.0",
"@icons-pack/react-simple-icons": "^9",
"@lobehub/chat-plugin-sdk": "latest",
"@lobehub/chat-plugins-gateway": "latest",
+ "@lobehub/icons": "^1.10.2",
"@lobehub/tts": "latest",
"@lobehub/ui": "latest",
"@vercel/analytics": "^1",
@@ -95,11 +99,13 @@
"i18next-resources-to-backend": "^1",
"idb-keyval": "^6",
"immer": "^10",
+ "jose": "^5.2.0",
"lodash-es": "^4",
"lucide-react": "latest",
"modern-screenshot": "^4",
"nanoid": "^5",
"next": "^14.1",
+ "numeral": "^2.0.6",
"nuqs": "^1.15.4",
"openai": "^4.22",
"polished": "^4",
@@ -146,6 +152,7 @@
"@types/lodash": "^4",
"@types/lodash-es": "^4",
"@types/node": "^20",
+ "@types/numeral": "^2.0.5",
"@types/react": "^18",
"@types/react-dom": "^18",
"@types/rtl-detect": "^1",
diff --git a/src/app/api/chat/[provider]/agentRuntime.ts b/src/app/api/chat/[provider]/agentRuntime.ts
new file mode 100644
index 000000000000..fcf2dbaef2b2
--- /dev/null
+++ b/src/app/api/chat/[provider]/agentRuntime.ts
@@ -0,0 +1,129 @@
+import { getServerConfig } from '@/config/server';
+import { JWTPayload } from '@/const/auth';
+import {
+ ChatStreamPayload,
+ LobeAzureOpenAI,
+ LobeBedrockAI,
+ LobeGoogleAI,
+ LobeOpenAI,
+ LobeRuntimeAI,
+ LobeZhipuAI,
+ ModelProvider,
+} from '@/libs/agent-runtime';
+
+interface AzureOpenAIParams {
+ apiVersion?: string;
+ model: string;
+ useAzure?: boolean;
+}
+class AgentRuntime {
+ private _runtime: LobeRuntimeAI;
+
+ constructor(runtime: LobeRuntimeAI) {
+ this._runtime = runtime;
+ }
+
+ async chat(payload: ChatStreamPayload) {
+ return this._runtime.chat(payload);
+ }
+
+ static async initializeWithUserPayload(
+ provider: string,
+ payload: JWTPayload,
+ azureOpenAI?: AzureOpenAIParams,
+ ) {
+ let runtimeModel: LobeRuntimeAI;
+
+ switch (provider) {
+ default:
+ case 'oneapi':
+ case ModelProvider.OpenAI: {
+ runtimeModel = this.initOpenAI(payload, azureOpenAI);
+ break;
+ }
+
+ case ModelProvider.Azure: {
+ runtimeModel = this.initAzureOpenAI(payload);
+ break;
+ }
+
+ case ModelProvider.ZhiPu: {
+ runtimeModel = await this.initZhipu(payload);
+ break;
+ }
+
+ case ModelProvider.Google: {
+ runtimeModel = this.initGoogle(payload);
+ break;
+ }
+
+ case ModelProvider.Bedrock: {
+ runtimeModel = this.initBedrock(payload);
+ }
+ }
+
+ return new AgentRuntime(runtimeModel);
+ }
+
+ private static initOpenAI(payload: JWTPayload, azureOpenAI?: AzureOpenAIParams) {
+ const { OPENAI_API_KEY, OPENAI_PROXY_URL, AZURE_API_VERSION, AZURE_API_KEY, USE_AZURE_OPENAI } =
+ getServerConfig();
+ const apiKey = payload?.apiKey || OPENAI_API_KEY;
+ const baseURL = payload?.endpoint || OPENAI_PROXY_URL;
+
+ const azureApiKey = payload.apiKey || AZURE_API_KEY;
+ const useAzure = azureOpenAI?.useAzure || USE_AZURE_OPENAI;
+ const apiVersion = azureOpenAI?.apiVersion || AZURE_API_VERSION;
+
+ return new LobeOpenAI({
+ apiKey: azureOpenAI?.useAzure ? azureApiKey : apiKey,
+ azureOptions: {
+ apiVersion,
+ model: azureOpenAI?.model,
+ },
+ baseURL,
+ useAzure,
+ });
+ }
+
+ private static initAzureOpenAI(payload: JWTPayload) {
+ const { AZURE_API_KEY, AZURE_API_VERSION, AZURE_ENDPOINT } = getServerConfig();
+ const apiKey = payload?.apiKey || AZURE_API_KEY;
+ const endpoint = payload?.endpoint || AZURE_ENDPOINT;
+ const apiVersion = payload?.azureApiVersion || AZURE_API_VERSION;
+
+ return new LobeAzureOpenAI(endpoint, apiKey, apiVersion);
+ }
+
+ private static async initZhipu(payload: JWTPayload) {
+ const { ZHIPU_API_KEY } = getServerConfig();
+ const apiKey = payload?.apiKey || ZHIPU_API_KEY;
+
+ return LobeZhipuAI.fromAPIKey(apiKey);
+ }
+
+ private static initGoogle(payload: JWTPayload) {
+ const { GOOGLE_API_KEY } = getServerConfig();
+ const apiKey = payload?.apiKey || GOOGLE_API_KEY;
+
+ return new LobeGoogleAI(apiKey);
+ }
+
+ private static initBedrock(payload: JWTPayload) {
+ const { AWS_SECRET_ACCESS_KEY, AWS_ACCESS_KEY_ID, AWS_REGION } = getServerConfig();
+
+ let accessKeyId: string | undefined = AWS_ACCESS_KEY_ID;
+ let accessKeySecret: string | undefined = AWS_SECRET_ACCESS_KEY;
+ let region = AWS_REGION;
+ // if the payload has the api key, use user
+ if (payload.apiKey) {
+ accessKeyId = payload?.awsAccessKeyId;
+ accessKeySecret = payload?.awsSecretAccessKey;
+ region = payload?.awsRegion;
+ }
+
+ return new LobeBedrockAI({ accessKeyId, accessKeySecret, region });
+ }
+}
+
+export default AgentRuntime;
diff --git a/src/app/api/chat/[provider]/route.ts b/src/app/api/chat/[provider]/route.ts
new file mode 100644
index 000000000000..abd170368c76
--- /dev/null
+++ b/src/app/api/chat/[provider]/route.ts
@@ -0,0 +1,64 @@
+import { getPreferredRegion } from '@/app/api/config';
+import { createErrorResponse } from '@/app/api/errorResponse';
+import { LOBE_CHAT_AUTH_HEADER } from '@/const/auth';
+import {
+ AgentInitErrorPayload,
+ AgentRuntimeError,
+ ChatCompletionErrorPayload,
+ ILobeAgentRuntimeErrorType,
+} from '@/libs/agent-runtime';
+import { ChatErrorType } from '@/types/fetch';
+import { ChatStreamPayload } from '@/types/openai/chat';
+
+import { checkPasswordOrUseUserApiKey, getJWTPayload } from '../auth';
+import AgentRuntime from './agentRuntime';
+
+export const runtime = 'edge';
+
+export const preferredRegion = getPreferredRegion();
+
+export const POST = async (req: Request, { params }: { params: { provider: string } }) => {
+ let agentRuntime: AgentRuntime;
+
+ // ============ 1. init chat model ============ //
+
+ try {
+ // get Authorization from header
+ const authorization = req.headers.get(LOBE_CHAT_AUTH_HEADER);
+ if (!authorization) throw AgentRuntimeError.createError(ChatErrorType.Unauthorized);
+
+ // check the Auth With payload
+ const payload = await getJWTPayload(authorization);
+ checkPasswordOrUseUserApiKey(payload.accessCode, payload.apiKey);
+
+ const body = await req.clone().json();
+ agentRuntime = await AgentRuntime.initializeWithUserPayload(params.provider, payload, {
+ apiVersion: payload.azureApiVersion,
+ model: body.model,
+ useAzure: payload.useAzure,
+ });
+ } catch (e) {
+ // if catch the error, just return it
+ const err = e as AgentInitErrorPayload;
+
+ return createErrorResponse(err.type as ILobeAgentRuntimeErrorType, {
+ error: err.error,
+ provider: params.provider,
+ });
+ }
+
+ // ============ 2. create chat completion ============ //
+
+ try {
+ const payload = (await req.json()) as ChatStreamPayload;
+
+ return await agentRuntime.chat(payload);
+ } catch (e) {
+ const { errorType, provider, error: errorContent, ...res } = e as ChatCompletionErrorPayload;
+
+ // track the error at server side
+ console.error(`Route: [${provider}] ${errorType}:`, errorContent);
+
+ return createErrorResponse(errorType, { error: errorContent, provider, ...res });
+ }
+};
diff --git a/src/app/api/chat/auth.ts b/src/app/api/chat/auth.ts
new file mode 100644
index 000000000000..cb07dc8f2852
--- /dev/null
+++ b/src/app/api/chat/auth.ts
@@ -0,0 +1,42 @@
+import { importJWK, jwtVerify } from 'jose';
+
+import { getServerConfig } from '@/config/server';
+import { JWTPayload, JWT_SECRET_KEY } from '@/const/auth';
+import { AgentRuntimeError } from '@/libs/agent-runtime';
+import { ChatErrorType } from '@/types/fetch';
+
+export const getJWTPayload = async (token: string) => {
+ const encoder = new TextEncoder();
+ const secretKey = await crypto.subtle.digest('SHA-256', encoder.encode(JWT_SECRET_KEY));
+
+ const jwkSecretKey = await importJWK(
+ { k: Buffer.from(secretKey).toString('base64'), kty: 'oct' },
+ 'HS256',
+ );
+
+ const { payload } = await jwtVerify(token, jwkSecretKey);
+
+ return payload as JWTPayload;
+};
+
+/**
+ * Check if the provided access code is valid or if a user API key should be used.
+ *
+ * @param {string} accessCode - The access code to check.
+ * @param {string} apiKey - The user API key.
+ * @throws {AgentRuntimeError} If the access code is invalid and no user API key is provided.
+ */
+export const checkPasswordOrUseUserApiKey = (accessCode?: string, apiKey?: string) => {
+ const { ACCESS_CODES } = getServerConfig();
+
+ // if apiKey exist
+ if (apiKey) return;
+
+ // if accessCode doesn't exist
+ if (!ACCESS_CODES.length) return;
+
+ if (!accessCode || !ACCESS_CODES.includes(accessCode)) {
+ console.warn('tracked an invalid access code, 检查到输入的错误密码:', accessCode);
+ throw AgentRuntimeError.createError(ChatErrorType.InvalidAccessCode);
+ }
+};
diff --git a/src/app/api/chat/google/route.ts b/src/app/api/chat/google/route.ts
new file mode 100644
index 000000000000..74a904e04997
--- /dev/null
+++ b/src/app/api/chat/google/route.ts
@@ -0,0 +1,86 @@
+import { createErrorResponse } from '@/app/api/errorResponse';
+import { getServerConfig } from '@/config/server';
+import { LOBE_CHAT_AUTH_HEADER } from '@/const/auth';
+import {
+ AgentInitErrorPayload,
+ AgentRuntimeError,
+ ChatCompletionErrorPayload,
+ ILobeAgentRuntimeErrorType,
+ LobeGoogleAI,
+} from '@/libs/agent-runtime';
+import { ChatErrorType } from '@/types/fetch';
+import { ChatStreamPayload } from '@/types/openai/chat';
+
+import { checkPasswordOrUseUserApiKey, getJWTPayload } from '../auth';
+
+// due to the Chinese region does not support accessing Google
+// we need to use proxy to access it
+// refs: https://github.com/google/generative-ai-js/issues/29#issuecomment-1866246513
+// if (process.env.HTTP_PROXY_URL) {
+// const { setGlobalDispatcher, ProxyAgent } = require('undici');
+//
+// setGlobalDispatcher(new ProxyAgent({ uri: process.env.HTTP_PROXY_URL }));
+// }
+// undici only can be used in NodeJS
+// export const runtime = 'nodejs';
+
+export const runtime = 'edge';
+
+export const preferredRegion = [
+ 'bom1',
+ 'cle1',
+ 'cpt1',
+ 'gru1',
+ 'hnd1',
+ 'iad1',
+ 'icn1',
+ 'kix1',
+ 'pdx1',
+ 'sfo1',
+ 'sin1',
+ 'syd1',
+];
+
+export const POST = async (req: Request) => {
+ let agentRuntime: LobeGoogleAI;
+
+ // ============ 1. init chat model ============ //
+
+ try {
+ // get Authorization from header
+ const authorization = req.headers.get(LOBE_CHAT_AUTH_HEADER);
+ if (!authorization) throw AgentRuntimeError.createError(ChatErrorType.Unauthorized);
+
+ // check the Auth With payload
+ const payload = await getJWTPayload(authorization);
+ checkPasswordOrUseUserApiKey(payload.accessCode, payload.apiKey);
+
+ const { GOOGLE_API_KEY } = getServerConfig();
+ const apiKey = payload?.apiKey || GOOGLE_API_KEY;
+
+ agentRuntime = new LobeGoogleAI(apiKey);
+ } catch (e) {
+ // if catch the error, just return it
+ const err = e as AgentInitErrorPayload;
+
+ return createErrorResponse(err.type as ILobeAgentRuntimeErrorType, {
+ error: err.error,
+ provider: 'google',
+ });
+ }
+
+ // ============ 2. create chat completion ============ //
+
+ try {
+ const payload = (await req.json()) as ChatStreamPayload;
+
+ return await agentRuntime.chat(payload);
+ } catch (e) {
+ const { errorType, provider, error: errorContent, ...res } = e as ChatCompletionErrorPayload;
+
+ // track the error at server side
+ console.error(`Route: [${provider}] ${errorType}:`, errorContent);
+
+ return createErrorResponse(errorType, { error: errorContent, provider, ...res });
+ }
+};
diff --git a/src/app/api/config.ts b/src/app/api/config.ts
index e12c12153a51..6ff3e366298e 100644
--- a/src/app/api/config.ts
+++ b/src/app/api/config.ts
@@ -1,15 +1,15 @@
import { getServerConfig } from '@/config/server';
-export const getPreferredRegion = () => {
+export const getPreferredRegion = (region: string | string[] = 'auto') => {
try {
const cfg = getServerConfig();
if (cfg.OPENAI_FUNCTION_REGIONS.length <= 0) {
- return 'auto';
+ return region;
}
return cfg.OPENAI_FUNCTION_REGIONS;
} catch (error) {
console.error('get server config failed, error:', error);
- return 'auto';
+ return region;
}
};
diff --git a/src/app/api/config/route.ts b/src/app/api/config/route.ts
index c19a9c968667..5975b27c524d 100644
--- a/src/app/api/config/route.ts
+++ b/src/app/api/config/route.ts
@@ -7,10 +7,15 @@ export const runtime = 'edge';
* get Server config to client
*/
export const GET = async () => {
- const { CUSTOM_MODELS } = getServerConfig();
+ const { CUSTOM_MODELS, ENABLED_ZHIPU, ENABLED_AWS_BEDROCK, ENABLED_GOOGLE } = getServerConfig();
const config: GlobalServerConfig = {
customModelName: CUSTOM_MODELS,
+ languageModel: {
+ bedrock: { enabled: ENABLED_AWS_BEDROCK },
+ google: { enabled: ENABLED_GOOGLE },
+ zhipu: { enabled: ENABLED_ZHIPU },
+ },
};
return new Response(JSON.stringify(config));
diff --git a/src/app/api/errorResponse.test.ts b/src/app/api/errorResponse.test.ts
index 1532f8e1d8ef..2155341659cd 100644
--- a/src/app/api/errorResponse.test.ts
+++ b/src/app/api/errorResponse.test.ts
@@ -6,34 +6,34 @@ import { createErrorResponse } from './errorResponse';
describe('createErrorResponse', () => {
// 测试各种错误类型的状态码
- it('returns a 401 status for NoAPIKey error type', () => {
- const errorType = ChatErrorType.NoAPIKey;
+ it('returns a 401 status for NoOpenAIAPIKey error type', () => {
+ const errorType = ChatErrorType.NoOpenAIAPIKey;
const response = createErrorResponse(errorType);
expect(response.status).toBe(401);
});
it('returns a 401 status for InvalidAccessCode error type', () => {
const errorType = ChatErrorType.InvalidAccessCode;
- const response = createErrorResponse(errorType);
+ const response = createErrorResponse(errorType as any);
expect(response.status).toBe(401);
});
- it('returns a 577 status for OpenAIBizError error type', () => {
+ it('returns a 471 status for OpenAIBizError error type', () => {
const errorType = ChatErrorType.OpenAIBizError;
const response = createErrorResponse(errorType);
- expect(response.status).toBe(577);
+ expect(response.status).toBe(471);
});
// 测试默认情况
it('returns the same error type as status for unknown error types', () => {
const errorType = 500; // 假设500是一个未知的错误类型
- const response = createErrorResponse(errorType);
+ const response = createErrorResponse(errorType as any);
expect(response.status).toBe(errorType);
});
// 测试返回的Response对象是否包含正确的body和errorType
it('returns a Response object with the correct body and errorType', () => {
- const errorType = ChatErrorType.NoAPIKey;
+ const errorType = ChatErrorType.NoOpenAIAPIKey;
const body = { message: 'No API key provided' };
const response = createErrorResponse(errorType, body);
return response.json().then((data) => {
@@ -46,7 +46,7 @@ describe('createErrorResponse', () => {
// 测试没有提供body时,返回的Response对象的body是否为undefined
it('returns a Response object with an undefined body when no body is provided', () => {
- const errorType = ChatErrorType.NoAPIKey;
+ const errorType = ChatErrorType.NoOpenAIAPIKey;
const response = createErrorResponse(errorType);
return response.json().then((data) => {
expect(data.body).toBeUndefined();
diff --git a/src/app/api/errorResponse.ts b/src/app/api/errorResponse.ts
index 7039fad89955..7f62141ca6d6 100644
--- a/src/app/api/errorResponse.ts
+++ b/src/app/api/errorResponse.ts
@@ -1,23 +1,60 @@
+import { consola } from 'consola';
+
+import { AgentRuntimeErrorType, ILobeAgentRuntimeErrorType } from '@/libs/agent-runtime';
import { ChatErrorType, ErrorResponse, ErrorType } from '@/types/fetch';
-const getStatus = (errorType: ErrorType) => {
+const getStatus = (errorType: ILobeAgentRuntimeErrorType | ErrorType) => {
switch (errorType) {
- case ChatErrorType.NoAPIKey:
- case ChatErrorType.InvalidAccessCode: {
+ case ChatErrorType.InvalidAccessCode:
+ case AgentRuntimeErrorType.NoOpenAIAPIKey:
+ case AgentRuntimeErrorType.InvalidAzureAPIKey:
+ case AgentRuntimeErrorType.InvalidBedrockCredentials:
+ case AgentRuntimeErrorType.InvalidZhipuAPIKey:
+ case AgentRuntimeErrorType.InvalidGoogleAPIKey: {
return 401;
}
- case ChatErrorType.OpenAIBizError: {
- return 577;
+ case AgentRuntimeErrorType.LocationNotSupportError: {
+ return 403;
+ }
+
+ // define the 471~480 as provider error
+ case AgentRuntimeErrorType.AgentRuntimeError: {
+ return 470;
+ }
+ case AgentRuntimeErrorType.OpenAIBizError: {
+ return 471;
+ }
+ case AgentRuntimeErrorType.AzureBizError: {
+ return 472;
+ }
+ case AgentRuntimeErrorType.ZhipuBizError: {
+ return 473;
+ }
+ case AgentRuntimeErrorType.BedrockBizError: {
+ return 474;
+ }
+ case AgentRuntimeErrorType.GoogleBizError: {
+ return 475;
}
}
return errorType;
};
-export const createErrorResponse = (errorType: ErrorType, body?: any) => {
+export const createErrorResponse = (
+ errorType: ErrorType | ILobeAgentRuntimeErrorType,
+ body?: any,
+) => {
const statusCode = getStatus(errorType);
const data: ErrorResponse = { body, errorType };
+ if (typeof statusCode !== 'number' || statusCode < 200 || statusCode > 599) {
+ consola.error(
+ `current StatusCode: \`${statusCode}\` .`,
+ 'Please go to `./src/app/api/errorResponse.ts` to defined the statusCode.',
+ );
+ }
+
return new Response(JSON.stringify(data), { status: statusCode });
};
diff --git a/src/app/api/openai/chat/createChatCompletion.test.ts b/src/app/api/openai/chat/createChatCompletion.test.ts
deleted file mode 100644
index 1bc59279024a..000000000000
--- a/src/app/api/openai/chat/createChatCompletion.test.ts
+++ /dev/null
@@ -1,166 +0,0 @@
-import OpenAI, { APIError } from 'openai';
-import { Mock, afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
-
-import { createChatCompletion } from './createChatCompletion';
-
-// Mock the console.error to avoid polluting test output
-vi.spyOn(console, 'error').mockImplementation(() => {});
-
-describe('createChatCompletion', () => {
- let openaiInstance: OpenAI;
-
- beforeEach(() => {
- openaiInstance = new OpenAI({ apiKey: 'test', dangerouslyAllowBrowser: true });
-
- // 使用 vi.spyOn 来模拟 chat.completions.create 方法
- vi.spyOn(openaiInstance.chat.completions, 'create').mockResolvedValue(
- new ReadableStream() as any,
- );
- });
-
- afterEach(() => {
- vi.clearAllMocks();
- });
-
- it('should return a StreamingTextResponse on successful API call', async () => {
- // Arrange
- const mockStream = new ReadableStream();
- const mockResponse = Promise.resolve(mockStream);
-
- (openaiInstance.chat.completions.create as Mock).mockResolvedValue(mockResponse);
-
- // Act
- const result = await createChatCompletion({
- openai: openaiInstance,
- payload: {
- messages: [{ content: 'Hello', role: 'user' }],
- model: 'text-davinci-003',
- temperature: 0,
- },
- });
-
- // Assert
- expect(result).toBeInstanceOf(Response); // 注意这里的改动
- });
-
- it('should return an openai error response when OpenAI.APIError is thrown', async () => {
- // Arrange
- const apiError = new OpenAI.APIError(
- 400,
- {
- status: 400,
- error: {
- message: 'Bad Request',
- },
- },
- 'Error message',
- {},
- );
-
- vi.spyOn(openaiInstance.chat.completions, 'create').mockRejectedValue(apiError);
-
- // Act
- const result = await createChatCompletion({
- openai: openaiInstance,
- payload: {
- messages: [{ content: 'Hello', role: 'user' }],
- model: 'text-davinci-003',
- temperature: 0,
- },
- });
-
- // Assert
- expect(result).toBeInstanceOf(Response);
- expect(result.status).toBe(577); // Your custom error status code
- });
-
- it('should return an cause response when OpenAI.APIError is thrown with cause', async () => {
- // Arrange
- const errorInfo = {
- stack: 'abc',
- cause: {
- message: 'api is undefined',
- },
- };
- const apiError = new OpenAI.APIError(400, errorInfo, 'module error', {});
-
- vi.spyOn(openaiInstance.chat.completions, 'create').mockRejectedValue(apiError);
-
- // Act
- const result = await createChatCompletion({
- openai: openaiInstance,
- payload: {
- messages: [{ content: 'Hello', role: 'user' }],
- model: 'text-davinci-003',
- temperature: 0,
- },
- });
-
- // Assert
- expect(result).toBeInstanceOf(Response);
- expect(result.status).toBe(577); // Your custom error status code
-
- const content = await result.json();
- expect(content.body).toHaveProperty('endpoint');
- expect(content.body.endpoint).toEqual('https://api.openai.com/v1');
- expect(content.body.error).toEqual(errorInfo);
- });
-
- it('should return an cause response with desensitize Url', async () => {
- // Arrange
- const errorInfo = {
- stack: 'abc',
- cause: { message: 'api is undefined' },
- };
- const apiError = new OpenAI.APIError(400, errorInfo, 'module error', {});
-
- openaiInstance = new OpenAI({
- apiKey: 'test',
- dangerouslyAllowBrowser: true,
- baseURL: 'https://api.abc.com/v1',
- });
-
- vi.spyOn(openaiInstance.chat.completions, 'create').mockRejectedValue(apiError);
-
- // Act
- const result = await createChatCompletion({
- openai: openaiInstance,
- payload: {
- messages: [{ content: 'Hello', role: 'user' }],
- model: 'gpt-3.5-turbo',
- temperature: 0,
- },
- });
-
- // Assert
- expect(result).toBeInstanceOf(Response);
- expect(result.status).toBe(577); // Your custom error status code
-
- const content = await result.json();
- expect(content.body.endpoint).toEqual('https://api.***.com/v1');
- expect(content.body.error).toEqual(errorInfo);
- });
-
- it('should return a 500 error response for non-OpenAI errors', async () => {
- // Arrange
- const genericError = new Error('Generic Error');
-
- vi.spyOn(openaiInstance.chat.completions, 'create').mockRejectedValue(genericError);
-
- // Act
- const result = await createChatCompletion({
- openai: openaiInstance,
- payload: {
- messages: [{ content: 'Hello', role: 'user' }],
- model: 'text-davinci-003',
- temperature: 0,
- },
- });
-
- // Assert
- expect(result.status).toBe(500);
- const content = await result.json();
- expect(content.body).toHaveProperty('endpoint');
- expect(content.body).toHaveProperty('error');
- });
-});
diff --git a/src/app/api/openai/chat/createChatCompletion.ts b/src/app/api/openai/chat/createChatCompletion.ts
deleted file mode 100644
index 7321c27d5456..000000000000
--- a/src/app/api/openai/chat/createChatCompletion.ts
+++ /dev/null
@@ -1,76 +0,0 @@
-import { OpenAIStream, StreamingTextResponse } from 'ai';
-import OpenAI from 'openai';
-
-import { ChatErrorType } from '@/types/fetch';
-import { OpenAIChatStreamPayload } from '@/types/openai/chat';
-
-import { createErrorResponse } from '../../errorResponse';
-import { desensitizeUrl } from './desensitizeUrl';
-
-interface CreateChatCompletionOptions {
- openai: OpenAI;
- payload: OpenAIChatStreamPayload;
-}
-
-export const createChatCompletion = async ({ payload, openai }: CreateChatCompletionOptions) => {
- // ============ 1. preprocess messages ============ //
- const { messages, ...params } = payload;
-
- // ============ 2. send api ============ //
-
- try {
- const response = await openai.chat.completions.create(
- {
- messages,
- ...params,
- stream: true,
- } as unknown as OpenAI.ChatCompletionCreateParamsStreaming,
- { headers: { Accept: '*/*' } },
- );
- const stream = OpenAIStream(response);
- return new StreamingTextResponse(stream);
- } catch (error) {
- let desensitizedEndpoint = openai.baseURL;
-
- // refs: https://github.com/lobehub/lobe-chat/issues/842
- if (openai.baseURL !== 'https://api.openai.com/v1') {
- desensitizedEndpoint = desensitizeUrl(openai.baseURL);
- }
-
- // Check if the error is an OpenAI APIError
- if (error instanceof OpenAI.APIError) {
- let errorResult: any;
-
- // if error is definitely OpenAI APIError, there will be an error object
- if (error.error) {
- errorResult = error.error;
- }
- // Or if there is a cause, we use error cause
- // This often happened when there is a bug of the `openai` package.
- else if (error.cause) {
- errorResult = error.cause;
- }
- // if there is no other request error, the error object is a Response like object
- else {
- errorResult = { headers: error.headers, stack: error.stack, status: error.status };
- }
-
- // track the error at server side
- console.error(errorResult);
-
- return createErrorResponse(ChatErrorType.OpenAIBizError, {
- endpoint: desensitizedEndpoint,
- error: errorResult,
- });
- }
-
- // track the non-openai error
- console.error(error);
-
- // return as a GatewayTimeout error
- return createErrorResponse(ChatErrorType.InternalServerError, {
- endpoint: desensitizedEndpoint,
- error: JSON.stringify(error),
- });
- }
-};
diff --git a/src/app/api/openai/chat/route.ts b/src/app/api/openai/chat/route.ts
deleted file mode 100644
index ba9a6a589db8..000000000000
--- a/src/app/api/openai/chat/route.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-import { OpenAIChatStreamPayload } from '@/types/openai/chat';
-
-import { getPreferredRegion } from '../../config';
-import { createBizOpenAI } from '../createBizOpenAI';
-import { createChatCompletion } from './createChatCompletion';
-
-export const runtime = 'edge';
-export const preferredRegion = getPreferredRegion();
-
-export const POST = async (req: Request) => {
- const payload = (await req.json()) as OpenAIChatStreamPayload;
-
- const openaiOrErrResponse = createBizOpenAI(req, payload.model);
-
- // if resOrOpenAI is a Response, it means there is an error,just return it
- if (openaiOrErrResponse instanceof Response) return openaiOrErrResponse;
-
- return createChatCompletion({ openai: openaiOrErrResponse, payload });
-};
diff --git a/src/app/api/openai/createBizOpenAI/createAzureOpenai.ts b/src/app/api/openai/createBizOpenAI/createAzureOpenai.ts
index 0905f0818e1e..cd0bf5e2fc15 100644
--- a/src/app/api/openai/createBizOpenAI/createAzureOpenai.ts
+++ b/src/app/api/openai/createBizOpenAI/createAzureOpenai.ts
@@ -20,7 +20,7 @@ export const createAzureOpenai = (params: {
const apiVersion = !params.apiVersion ? defaultApiVersion : params.apiVersion;
const apiKey = !params.userApiKey ? AZURE_API_KEY : params.userApiKey;
- if (!apiKey) throw new Error('AZURE_API_KEY is empty', { cause: ChatErrorType.NoAPIKey });
+ if (!apiKey) throw new Error('AZURE_API_KEY is empty', { cause: ChatErrorType.NoOpenAIAPIKey });
const config: ClientOptions = {
apiKey,
diff --git a/src/app/api/openai/createBizOpenAI/createOpenai.ts b/src/app/api/openai/createBizOpenAI/createOpenai.ts
index 95a6422592c8..ee2d1a0ea194 100644
--- a/src/app/api/openai/createBizOpenAI/createOpenai.ts
+++ b/src/app/api/openai/createBizOpenAI/createOpenai.ts
@@ -11,7 +11,7 @@ export const createOpenai = (userApiKey: string | null, endpoint?: string | null
const apiKey = !userApiKey ? OPENAI_API_KEY : userApiKey;
- if (!apiKey) throw new Error('OPENAI_API_KEY is empty', { cause: ChatErrorType.NoAPIKey });
+ if (!apiKey) throw new Error('OPENAI_API_KEY is empty', { cause: ChatErrorType.NoOpenAIAPIKey });
return new OpenAI({ apiKey, baseURL });
};
diff --git a/src/app/api/openai/createBizOpenAI/index.ts b/src/app/api/openai/createBizOpenAI/index.ts
index 302d06dcbc03..a62527f93b33 100644
--- a/src/app/api/openai/createBizOpenAI/index.ts
+++ b/src/app/api/openai/createBizOpenAI/index.ts
@@ -34,8 +34,8 @@ export const createBizOpenAI = (req: Request, model: string): Response | OpenAI
openai = createOpenai(apiKey, endpoint);
}
} catch (error) {
- if ((error as Error).cause === ChatErrorType.NoAPIKey) {
- return createErrorResponse(ChatErrorType.NoAPIKey);
+ if ((error as Error).cause === ChatErrorType.NoOpenAIAPIKey) {
+ return createErrorResponse(ChatErrorType.NoOpenAIAPIKey);
}
console.error(error); // log error to trace it
diff --git a/src/app/api/openai/models/route.ts b/src/app/api/openai/models/route.ts
deleted file mode 100644
index c9827d0e5241..000000000000
--- a/src/app/api/openai/models/route.ts
+++ /dev/null
@@ -1,17 +0,0 @@
-import { getOpenAIAuthFromRequest } from '@/const/fetch';
-
-import { createOpenai } from '../createBizOpenAI/createOpenai';
-
-export const runtime = 'edge';
-
-export const POST = async (req: Request) => {
- const { apiKey, endpoint } = getOpenAIAuthFromRequest(req);
-
- const openAI = createOpenai(apiKey, endpoint);
-
- const res = await openAI.models.list();
-
- const modelList = res.data.map((i) => i.id);
-
- return new Response(JSON.stringify(modelList));
-};
diff --git a/src/app/chat/(desktop)/features/ChatHeader.tsx b/src/app/chat/(desktop)/features/ChatHeader.tsx
index c36917725d17..914707dee3de 100644
--- a/src/app/chat/(desktop)/features/ChatHeader.tsx
+++ b/src/app/chat/(desktop)/features/ChatHeader.tsx
@@ -1,5 +1,4 @@
-import { SiOpenai } from '@icons-pack/react-simple-icons';
-import { ActionIcon, Avatar, ChatHeader, ChatHeaderTitle, Tag } from '@lobehub/ui';
+import { ActionIcon, Avatar, ChatHeader, ChatHeaderTitle } from '@lobehub/ui';
import { Skeleton } from 'antd';
import { PanelRightClose, PanelRightOpen } from 'lucide-react';
import { useRouter } from 'next/navigation';
@@ -7,8 +6,10 @@ import { memo } from 'react';
import { useTranslation } from 'react-i18next';
import { Flexbox } from 'react-layout-kit';
+import ModelTag from '@/components/ModelTag';
import { DESKTOP_HEADER_ICON_SIZE } from '@/const/layoutTokens';
import { useGlobalStore } from '@/store/global';
+import { modelProviderSelectors } from '@/store/global/slices/settings/selectors';
import { useSessionStore } from '@/store/session';
import { agentSelectors, sessionSelectors } from '@/store/session/selectors';
import { pathString } from '@/utils/url';
@@ -34,6 +35,7 @@ const Left = memo(() => {
agentSelectors.currentAgentPlugins(s),
]);
+ const showPlugin = useGlobalStore(modelProviderSelectors.modelEnabledFunctionCall(model));
const displayTitle = isInbox ? t('inbox.title') : title;
const displayDesc = isInbox ? t('inbox.desc') : description;
@@ -63,8 +65,8 @@ const Left = memo(() => {
desc={displayDesc}
tag={
<>
- }>{model}
- {plugins?.length > 0 && }
+
+ {showPlugin && plugins?.length > 0 && }
>
}
title={displayTitle}
diff --git a/src/app/chat/(desktop)/features/ChatInput/Header/DragUpload.tsx b/src/app/chat/(desktop)/features/ChatInput/Footer/DragUpload.tsx
similarity index 100%
rename from src/app/chat/(desktop)/features/ChatInput/Header/DragUpload.tsx
rename to src/app/chat/(desktop)/features/ChatInput/Footer/DragUpload.tsx
diff --git a/src/app/chat/(desktop)/features/ChatInput/Footer/index.tsx b/src/app/chat/(desktop)/features/ChatInput/Footer/index.tsx
index 72a7050a4629..aab508d8b679 100644
--- a/src/app/chat/(desktop)/features/ChatInput/Footer/index.tsx
+++ b/src/app/chat/(desktop)/features/ChatInput/Footer/index.tsx
@@ -19,11 +19,12 @@ import SaveTopic from '@/features/ChatInput/Topic';
import { useSendMessage } from '@/features/ChatInput/useSend';
import { useChatStore } from '@/store/chat';
import { useGlobalStore } from '@/store/global';
-import { preferenceSelectors } from '@/store/global/selectors';
+import { modelProviderSelectors, preferenceSelectors } from '@/store/global/selectors';
import { useSessionStore } from '@/store/session';
import { agentSelectors } from '@/store/session/selectors';
import { isMacOS } from '@/utils/platform';
+import DragUpload from './DragUpload';
import { LocalFiles } from './LocalFiles';
const useStyles = createStyles(({ css, prefixCls, token }) => {
@@ -59,7 +60,7 @@ const Footer = memo<{ setExpand?: (expand: boolean) => void }>(({ setExpand }) =
const { t } = useTranslation('chat');
const { theme, styles } = useStyles();
- const canUpload = useSessionStore(agentSelectors.modelHasVisionAbility);
+
const [loading, stopGenerateMessage] = useChatStore((s) => [
!!s.chatLoadingId,
s.stopGenerateMessage,
@@ -68,6 +69,10 @@ const Footer = memo<{ setExpand?: (expand: boolean) => void }>(({ setExpand }) =
preferenceSelectors.useCmdEnterToSend(s),
s.updatePreference,
]);
+
+ const model = useSessionStore(agentSelectors.currentAgentModel);
+ const canUpload = useGlobalStore(modelProviderSelectors.modelEnabledVision(model));
+
const sendMessage = useSendMessage();
const cmdEnter = (
@@ -98,7 +103,12 @@ const Footer = memo<{ setExpand?: (expand: boolean) => void }>(({ setExpand }) =
padding={'0 24px'}
>
- {canUpload && }
+ {canUpload && (
+ <>
+
+
+ >
+ )}
void;
+}
-const Header = memo<{ expand: boolean; setExpand: (expand: boolean) => void }>(
- ({ expand, setExpand }) => {
- const canUpload = useSessionStore(agentSelectors.modelHasVisionAbility);
-
- return (
- <>
- {canUpload && }
- {
- setExpand(!expand);
- }}
- />
- }
- />
- >
- );
- },
-);
+const Header = memo(({ expand, setExpand }) => (
+ {
+ setExpand(!expand);
+ }}
+ />
+ }
+ />
+));
export default Header;
diff --git a/src/app/chat/(desktop)/features/SideBar/index.tsx b/src/app/chat/(desktop)/features/SideBar/index.tsx
index b16022cb5849..a732a780760d 100644
--- a/src/app/chat/(desktop)/features/SideBar/index.tsx
+++ b/src/app/chat/(desktop)/features/SideBar/index.tsx
@@ -19,6 +19,7 @@ const useStyles = createStyles(({ css, token }) => ({
height: 100% !important;
`,
drawer: css`
+ z-index: 0;
background: ${token.colorBgLayout};
`,
header: css`
diff --git a/src/app/chat/features/ChatHeader/ShareButton/Preview.tsx b/src/app/chat/features/ChatHeader/ShareButton/Preview.tsx
index 7ba43d0d978e..20f5edfb1231 100644
--- a/src/app/chat/features/ChatHeader/ShareButton/Preview.tsx
+++ b/src/app/chat/features/ChatHeader/ShareButton/Preview.tsx
@@ -1,10 +1,10 @@
-import { SiOpenai } from '@icons-pack/react-simple-icons';
-import { Avatar, ChatHeaderTitle, Logo, Markdown, Tag } from '@lobehub/ui';
+import { Avatar, ChatHeaderTitle, Logo, Markdown } from '@lobehub/ui';
import { memo } from 'react';
import { useTranslation } from 'react-i18next';
import { Flexbox } from 'react-layout-kit';
import pkg from '@/../package.json';
+import ModelTag from '@/components/ModelTag';
import ChatList from '@/features/Conversation/components/ChatList';
import { useSessionStore } from '@/store/session';
import { agentSelectors, sessionSelectors } from '@/store/session/selectors';
@@ -42,7 +42,7 @@ const Preview = memo(
desc={displayDesc}
tag={
<>
- }>{model}
+
{plugins?.length > 0 && }
>
}
diff --git a/src/app/chat/features/SessionListContent/List/Item/index.tsx b/src/app/chat/features/SessionListContent/List/Item/index.tsx
index f44103a28a03..d92a67f5eba1 100644
--- a/src/app/chat/features/SessionListContent/List/Item/index.tsx
+++ b/src/app/chat/features/SessionListContent/List/Item/index.tsx
@@ -1,9 +1,8 @@
-import { SiOpenai } from '@icons-pack/react-simple-icons';
-import { Tag } from '@lobehub/ui';
import { memo, useMemo, useState } from 'react';
import { Flexbox } from 'react-layout-kit';
import { shallow } from 'zustand/shallow';
+import ModelTag from '@/components/ModelTag';
import { useChatStore } from '@/store/chat';
import { useGlobalStore } from '@/store/global';
import { settingsSelectors } from '@/store/global/selectors';
@@ -64,7 +63,7 @@ const SessionItem = memo(({ id }) => {
() =>
!showModel ? undefined : (
- {showModel && }>{model}}
+ {showModel && }
),
[showModel, model],
diff --git a/src/app/settings/llm/Azure/index.tsx b/src/app/settings/llm/Azure/index.tsx
new file mode 100644
index 000000000000..7a23c46411b6
--- /dev/null
+++ b/src/app/settings/llm/Azure/index.tsx
@@ -0,0 +1,145 @@
+import { Azure, OpenAI } from '@lobehub/icons';
+import { Form, type ItemGroup, Markdown } from '@lobehub/ui';
+import { Form as AntForm, AutoComplete, Divider, Input, Switch } from 'antd';
+import { createStyles } from 'antd-style';
+import { debounce } from 'lodash-es';
+import { memo } from 'react';
+import { useTranslation } from 'react-i18next';
+import { Flexbox } from 'react-layout-kit';
+
+import { FORM_STYLE } from '@/const/layoutTokens';
+import { ModelProvider } from '@/libs/agent-runtime';
+import { useGlobalStore } from '@/store/global';
+import { modelProviderSelectors } from '@/store/global/selectors';
+
+import Checker from '../Checker';
+import { LLMProviderApiTokenKey, LLMProviderBaseUrlKey, LLMProviderConfigKey } from '../const';
+import { useSyncSettings } from '../useSyncSettings';
+
+const useStyles = createStyles(({ css, token }) => ({
+ markdown: css`
+ a {
+ font-size: 12px !important;
+ }
+
+ p {
+ font-size: 12px !important;
+ color: ${token.colorTextDescription} !important;
+ }
+ `,
+ tip: css`
+ font-size: 12px;
+ color: ${token.colorTextDescription};
+ `,
+}));
+
+const providerKey = 'azure';
+
+const AzureOpenAIProvider = memo(() => {
+ const { t } = useTranslation('setting');
+ const [form] = AntForm.useForm();
+ const { styles } = useStyles();
+
+ const [toggleProviderEnabled, setSettings] = useGlobalStore((s) => [
+ s.toggleProviderEnabled,
+ s.setSettings,
+ ]);
+
+ const enabled = useGlobalStore(modelProviderSelectors.enableAzure);
+
+ useSyncSettings(form);
+
+ const openAI: ItemGroup = {
+ children: [
+ {
+ children: (
+
+ ),
+ desc: t('llm.AzureOpenAI.token.desc'),
+ label: t('llm.AzureOpenAI.token.title'),
+ name: [LLMProviderConfigKey, providerKey, LLMProviderApiTokenKey],
+ },
+ {
+ children: ,
+ desc: t('llm.AzureOpenAI.endpoint.desc'),
+ label: t('llm.AzureOpenAI.endpoint.title'),
+ name: [LLMProviderConfigKey, providerKey, LLMProviderBaseUrlKey],
+ },
+ {
+ children: (
+ ({
+ label: i,
+ value: i,
+ }))}
+ placeholder={'20XX-XX-XX'}
+ />
+ ),
+ desc: (
+
+ {t('llm.AzureOpenAI.azureApiVersion.desc')}
+
+ ),
+ label: t('llm.AzureOpenAI.azureApiVersion.title'),
+ name: [LLMProviderConfigKey, providerKey, 'apiVersion'],
+ },
+ {
+ children: (
+
+ ),
+ desc: (
+ {t('llm.AzureOpenAI.deployments.desc')}
+ ),
+
+ label: t('llm.AzureOpenAI.deployments.title'),
+ name: [LLMProviderConfigKey, providerKey, 'deployments'],
+ },
+ {
+ children: ,
+ desc: t('llm.checker.desc'),
+ label: t('llm.checker.title'),
+ minWidth: undefined,
+ },
+ ],
+ defaultActive: enabled,
+ extra: (
+ {
+ toggleProviderEnabled(providerKey, enabled);
+ }}
+ value={enabled}
+ />
+ ),
+ title: (
+
+
+
+
+
+ ),
+ };
+
+ return (
+
+ );
+});
+
+export default AzureOpenAIProvider;
diff --git a/src/app/settings/llm/Bedrock/index.tsx b/src/app/settings/llm/Bedrock/index.tsx
new file mode 100644
index 000000000000..50e31b537555
--- /dev/null
+++ b/src/app/settings/llm/Bedrock/index.tsx
@@ -0,0 +1,109 @@
+import { Aws, Bedrock } from '@lobehub/icons';
+import { Form, type ItemGroup } from '@lobehub/ui';
+import { Form as AntForm, Divider, Input, Select, Switch } from 'antd';
+import { debounce } from 'lodash-es';
+import { memo } from 'react';
+import { useTranslation } from 'react-i18next';
+import { Flexbox } from 'react-layout-kit';
+
+import { FORM_STYLE } from '@/const/layoutTokens';
+import { ModelProvider } from '@/libs/agent-runtime';
+import { useGlobalStore } from '@/store/global';
+import { modelProviderSelectors } from '@/store/global/selectors';
+import { GlobalLLMProviderKey } from '@/types/settings';
+
+import Checker from '../Checker';
+import { LLMProviderConfigKey } from '../const';
+import { useSyncSettings } from '../useSyncSettings';
+
+const providerKey: GlobalLLMProviderKey = 'bedrock';
+
+const BedrockProvider = memo(() => {
+ const { t } = useTranslation('setting');
+ const [form] = AntForm.useForm();
+ const [toggleProviderEnabled, setSettings] = useGlobalStore((s) => [
+ s.toggleProviderEnabled,
+ s.setSettings,
+ ]);
+ const enabled = useGlobalStore(modelProviderSelectors.enableBedrock);
+
+ useSyncSettings(form);
+
+ const model: ItemGroup = {
+ children: [
+ {
+ children: (
+
+ ),
+ desc: t('llm.Bedrock.accessKeyId.desc'),
+ label: t('llm.Bedrock.accessKeyId.title'),
+ name: [LLMProviderConfigKey, providerKey, 'accessKeyId'],
+ },
+ {
+ children: (
+
+ ),
+ desc: t('llm.Bedrock.secretAccessKey.desc'),
+ label: t('llm.Bedrock.secretAccessKey.title'),
+ name: [LLMProviderConfigKey, providerKey, 'secretAccessKey'],
+ },
+ {
+ children: (
+
)}
{error && (
@@ -79,11 +76,11 @@ const Checker = memo(({ checkModel }) => {
extra={
- {JSON.stringify(error.body, null, 2)}
+ {JSON.stringify(error.body || error, null, 2)}
}
- message={error.message}
+ message={t(`response.${error.type}` as any, { ns: 'error' })}
showIcon
type={'error'}
/>
diff --git a/src/app/settings/llm/Google/index.tsx b/src/app/settings/llm/Google/index.tsx
new file mode 100644
index 000000000000..2737f60792cf
--- /dev/null
+++ b/src/app/settings/llm/Google/index.tsx
@@ -0,0 +1,74 @@
+import { Google } from '@lobehub/icons';
+import { Form, type ItemGroup } from '@lobehub/ui';
+import { Form as AntForm, Input, Switch } from 'antd';
+import { debounce } from 'lodash-es';
+import { memo } from 'react';
+import { useTranslation } from 'react-i18next';
+import { Flexbox } from 'react-layout-kit';
+
+import { FORM_STYLE } from '@/const/layoutTokens';
+import { ModelProvider } from '@/libs/agent-runtime';
+import { useGlobalStore } from '@/store/global';
+import { modelProviderSelectors } from '@/store/global/selectors';
+import { GlobalLLMProviderKey } from '@/types/settings';
+
+import Checker from '../Checker';
+import { LLMProviderApiTokenKey, LLMProviderConfigKey } from '../const';
+import { useSyncSettings } from '../useSyncSettings';
+
+const providerKey: GlobalLLMProviderKey = 'google';
+
+const GoogleProvider = memo(() => {
+ const { t } = useTranslation('setting');
+ const [form] = AntForm.useForm();
+ useSyncSettings(form);
+
+ const [toggleProviderEnabled, setSettings] = useGlobalStore((s) => [
+ s.toggleProviderEnabled,
+ s.setSettings,
+ ]);
+
+ const enabled = useGlobalStore(modelProviderSelectors.enableGoogle);
+
+ const model: ItemGroup = {
+ children: [
+ {
+ children: (
+
+ ),
+ desc: t('llm.Google.token.desc'),
+ label: t('llm.Google.token.title'),
+ name: [LLMProviderConfigKey, providerKey, LLMProviderApiTokenKey],
+ },
+ {
+ children: ,
+ desc: t('llm.checker.desc'),
+ label: t('llm.checker.title'),
+ minWidth: undefined,
+ },
+ ],
+ defaultActive: enabled,
+ extra: (
+ {
+ toggleProviderEnabled(providerKey, enabled);
+ }}
+ value={enabled}
+ />
+ ),
+ title: (
+
+
+
+ ),
+ };
+
+ return (
+
+ );
+});
+
+export default GoogleProvider;
diff --git a/src/app/settings/llm/LLM/ModelList.tsx b/src/app/settings/llm/LLM/ModelList.tsx
deleted file mode 100644
index 6dec8382b316..000000000000
--- a/src/app/settings/llm/LLM/ModelList.tsx
+++ /dev/null
@@ -1,51 +0,0 @@
-import { ActionIcon } from '@lobehub/ui';
-import { Button, Dropdown, Skeleton } from 'antd';
-import { MenuItemType } from 'antd/lib/menu/hooks/useItems';
-import { RotateCwIcon } from 'lucide-react';
-import { memo } from 'react';
-import { useTranslation } from 'react-i18next';
-import { Flexbox } from 'react-layout-kit';
-
-import { getModelList } from './getModelList';
-
-interface ModelListProps {
- value?: string[];
-}
-const ModelList = memo(({ value }) => {
- const { t } = useTranslation('setting');
-
- const isLoading = !value;
-
- if (isLoading)
- return (
-
- );
-
- const isEmpty = value?.length === 0;
-
- return isEmpty ? (
-
- ) : (
- ((v) => ({
- key: v,
- label: v,
- })),
- }}
- >
-
- {t('llm.OpenAI.models.count', { count: value.length })}
-
-
-
- );
-});
-
-export default ModelList;
diff --git a/src/app/settings/llm/LLM/getModelList.ts b/src/app/settings/llm/LLM/getModelList.ts
deleted file mode 100644
index e0319b2b22b6..000000000000
--- a/src/app/settings/llm/LLM/getModelList.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import { fetchModelList } from '@/services/modelList';
-import { useGlobalStore } from '@/store/global';
-
-export const getModelList = async (brand = 'openAI') => {
- const setSettings = useGlobalStore.getState().setSettings;
- const models = await fetchModelList();
-
- setSettings({ languageModel: { [brand]: { models } } });
-};
diff --git a/src/app/settings/llm/LLM/index.tsx b/src/app/settings/llm/OpenAI/index.tsx
similarity index 69%
rename from src/app/settings/llm/LLM/index.tsx
rename to src/app/settings/llm/OpenAI/index.tsx
index c3d867edf8a9..50faab56fd8f 100644
--- a/src/app/settings/llm/LLM/index.tsx
+++ b/src/app/settings/llm/OpenAI/index.tsx
@@ -1,16 +1,20 @@
+import { OpenAI } from '@lobehub/icons';
import { Form, type ItemGroup, Markdown } from '@lobehub/ui';
import { Form as AntForm, AutoComplete, Input, Switch } from 'antd';
import { createStyles } from 'antd-style';
import { debounce } from 'lodash-es';
-import { Webhook } from 'lucide-react';
-import { memo, useEffect } from 'react';
+import { memo } from 'react';
import { useTranslation } from 'react-i18next';
+import { Flexbox } from 'react-layout-kit';
import { FORM_STYLE } from '@/const/layoutTokens';
+import { ModelProvider } from '@/libs/agent-runtime';
import { useGlobalStore } from '@/store/global';
import { modelProviderSelectors } from '@/store/global/selectors';
-import Checker from './Checker';
+import Checker from '../Checker';
+import { LLMProviderConfigKey } from '../const';
+import { useSyncSettings } from '../useSyncSettings';
const useStyles = createStyles(({ css, token }) => ({
markdown: css`
@@ -28,29 +32,19 @@ const useStyles = createStyles(({ css, token }) => ({
color: ${token.colorTextDescription};
`,
}));
-
-const configKey = 'languageModel';
+const providerKey = 'openAI';
const LLM = memo(() => {
const { t } = useTranslation('setting');
- const [form] = AntForm.useForm();
const { styles } = useStyles();
+ const [form] = AntForm.useForm();
+
const [useAzure, setSettings] = useGlobalStore((s) => [
modelProviderSelectors.enableAzure(s),
s.setSettings,
]);
- useEffect(() => {
- const unsubscribe = useGlobalStore.subscribe(
- (s) => s.settings,
- (settings) => {
- form.setFieldsValue(settings);
- },
- );
- return () => {
- unsubscribe();
- };
- }, []);
+ useSyncSettings(form);
const openAI: ItemGroup = {
children: [
@@ -65,7 +59,7 @@ const LLM = memo(() => {
),
desc: useAzure ? t('llm.AzureOpenAI.token.desc') : t('llm.OpenAI.token.desc'),
label: useAzure ? t('llm.AzureOpenAI.token.title') : t('llm.OpenAI.token.title'),
- name: [configKey, 'openAI', 'OPENAI_API_KEY'],
+ name: [LLMProviderConfigKey, providerKey, 'OPENAI_API_KEY'],
},
{
children: (
@@ -80,7 +74,7 @@ const LLM = memo(() => {
),
desc: useAzure ? t('llm.AzureOpenAI.endpoint.desc') : t('llm.OpenAI.endpoint.desc'),
label: useAzure ? t('llm.AzureOpenAI.endpoint.title') : t('llm.OpenAI.endpoint.title'),
- name: [configKey, 'openAI', 'endpoint'],
+ name: [LLMProviderConfigKey, providerKey, 'endpoint'],
},
{
children: (
@@ -92,30 +86,21 @@ const LLM = memo(() => {
),
desc: t('llm.OpenAI.customModelName.desc'),
label: t('llm.OpenAI.customModelName.title'),
- name: [configKey, 'openAI', 'customModelName'],
+ name: [LLMProviderConfigKey, providerKey, 'customModelName'],
},
{
- children: (
-
- //
- //