diff --git a/src/renderer/src/i18n/locales/en-us.json b/src/renderer/src/i18n/locales/en-us.json
index e9e3424170..a4bfd23f96 100644
--- a/src/renderer/src/i18n/locales/en-us.json
+++ b/src/renderer/src/i18n/locales/en-us.json
@@ -4559,6 +4559,7 @@
"credentials_required": "Please fill in Access Key ID and Secret Access Key",
"credentials_save_failed": "Failed to save credentials",
"credentials_saved": "Credentials saved",
+ "credentials_saved_notice": "Credentials have been securely saved. Clear credentials to update them.",
"description": "Volcengine is ByteDance's cloud service platform, providing Doubao and other large language model services. Please use IAM user's Access Key for authentication, do not use the root user credentials.",
"project_name": "Project Name",
"project_name_help": "Project name for endpoint filtering, default is 'default'",
diff --git a/src/renderer/src/i18n/locales/zh-cn.json b/src/renderer/src/i18n/locales/zh-cn.json
index 8f1a272b2e..c1f2de295a 100644
--- a/src/renderer/src/i18n/locales/zh-cn.json
+++ b/src/renderer/src/i18n/locales/zh-cn.json
@@ -4559,6 +4559,7 @@
"credentials_required": "请填写 Access Key ID 和 Secret Access Key",
"credentials_save_failed": "凭证保存失败",
"credentials_saved": "凭证已保存",
+ "credentials_saved_notice": "凭证已安全保存。如需更新,请先清除凭证。",
"description": "火山引擎是字节跳动旗下的云服务平台,提供豆包等大语言模型服务。请使用 IAM 子用户的 Access Key 进行身份验证,不要使用主账号的根用户密钥。",
"project_name": "项目名称",
"project_name_help": "用于筛选推理接入点的项目名称,默认为 'default'",
diff --git a/src/renderer/src/i18n/locales/zh-tw.json b/src/renderer/src/i18n/locales/zh-tw.json
index b53385b671..65ad1bb587 100644
--- a/src/renderer/src/i18n/locales/zh-tw.json
+++ b/src/renderer/src/i18n/locales/zh-tw.json
@@ -4559,6 +4559,7 @@
"credentials_required": "請填寫 Access Key ID 和 Secret Access Key",
"credentials_save_failed": "憑證儲存失敗",
"credentials_saved": "憑證已儲存",
+ "credentials_saved_notice": "憑證已安全儲存。如需更新,請先清除憑證。",
"description": "火山引擎是字節跳動旗下的雲端服務平台,提供豆包等大型語言模型服務。請使用 IAM 子用戶的 Access Key 進行身份驗證,不要使用主帳號的根用戶密鑰。",
"project_name": "專案名稱",
"project_name_help": "用於篩選推論接入點的專案名稱,預設為 'default'",
diff --git a/src/renderer/src/pages/settings/ProviderSettings/VolcengineSettings.tsx b/src/renderer/src/pages/settings/ProviderSettings/VolcengineSettings.tsx
index 44dccb71cf..84cfed01b7 100644
--- a/src/renderer/src/pages/settings/ProviderSettings/VolcengineSettings.tsx
+++ b/src/renderer/src/pages/settings/ProviderSettings/VolcengineSettings.tsx
@@ -1,6 +1,5 @@
import { loggerService } from '@logger'
import { HStack } from '@renderer/components/Layout'
-import { PROVIDER_URLS } from '@renderer/config/providers'
import { useVolcengineSettings } from '@renderer/hooks/useVolcengine'
import { Alert, Button, Input, Space } from 'antd'
import type { FC } from 'react'
@@ -8,14 +7,12 @@ import { useCallback, useEffect, useState } from 'react'
import { useTranslation } from 'react-i18next'
import { SettingHelpLink, SettingHelpText, SettingHelpTextRow, SettingSubtitle } from '..'
+const accessKeyWebSite = 'https://console.volcengine.com/iam/identitymanage'
const VolcengineSettings: FC = () => {
const { t } = useTranslation()
const { region, projectName, setRegion, setProjectName } = useVolcengineSettings()
- const providerConfig = PROVIDER_URLS['doubao']
- const apiKeyWebsite = providerConfig?.websites?.apiKey
-
const [localAccessKeyId, setLocalAccessKeyId] = useState('')
const [localSecretAccessKey, setLocalSecretAccessKey] = useState('')
const [localRegion, setLocalRegion] = useState(region)
@@ -86,60 +83,70 @@ const VolcengineSettings: FC = () => {
{t('settings.provider.volcengine.title')}
- {t('settings.provider.volcengine.access_key_id')}
- setLocalAccessKeyId(e.target.value)}
- style={{ marginTop: 5 }}
- spellCheck={false}
- />
-
- {t('settings.provider.volcengine.access_key_id_help')}
-
+ {!hasCredentials ? (
+ <>
+ {t('settings.provider.volcengine.access_key_id')}
+ setLocalAccessKeyId(e.target.value)}
+ style={{ marginTop: 5 }}
+ spellCheck={false}
+ />
+
+ {t('settings.provider.volcengine.access_key_id_help')}
+
- {t('settings.provider.volcengine.secret_access_key')}
- setLocalSecretAccessKey(e.target.value)}
- style={{ marginTop: 5 }}
- spellCheck={false}
- />
-
-
- {apiKeyWebsite && (
-
- {t('settings.provider.get_api_key')}
-
- )}
-
- {t('settings.provider.volcengine.secret_access_key_help')}
-
+
+ {t('settings.provider.volcengine.secret_access_key')}
+
+ setLocalSecretAccessKey(e.target.value)}
+ style={{ marginTop: 5 }}
+ spellCheck={false}
+ />
+
+
+
+ {t('settings.provider.get_api_key')}
+
+
+ {t('settings.provider.volcengine.secret_access_key_help')}
+
+ {t('settings.provider.volcengine.region')}
+ setLocalRegion(e.target.value)}
+ onBlur={() => setRegion(localRegion)}
+ style={{ marginTop: 5 }}
+ />
+
+ {t('settings.provider.volcengine.region_help')}
+
- {t('settings.provider.volcengine.region')}
- setLocalRegion(e.target.value)}
- onBlur={() => setRegion(localRegion)}
- style={{ marginTop: 5 }}
- />
-
- {t('settings.provider.volcengine.region_help')}
-
-
- {t('settings.provider.volcengine.project_name')}
- setLocalProjectName(e.target.value)}
- onBlur={() => setProjectName(localProjectName)}
- style={{ marginTop: 5 }}
- />
-
- {t('settings.provider.volcengine.project_name_help')}
-
+ {t('settings.provider.volcengine.project_name')}
+ setLocalProjectName(e.target.value)}
+ onBlur={() => setProjectName(localProjectName)}
+ style={{ marginTop: 5 }}
+ />
+
+ {t('settings.provider.volcengine.project_name_help')}
+
+ >
+ ) : (
+
+ )}