mirror of
https://github.com/CherryHQ/cherry-studio.git
synced 2026-01-03 02:59:07 +08:00
better ux
This commit is contained in:
parent
e21c6ce2fc
commit
908506c83f
@ -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'",
|
||||
|
||||
@ -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'",
|
||||
|
||||
@ -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'",
|
||||
|
||||
@ -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 = () => {
|
||||
<SettingSubtitle style={{ marginTop: 5 }}>{t('settings.provider.volcengine.title')}</SettingSubtitle>
|
||||
<Alert type="info" style={{ marginTop: 5 }} message={t('settings.provider.volcengine.description')} showIcon />
|
||||
|
||||
<SettingSubtitle style={{ marginTop: 15 }}>{t('settings.provider.volcengine.access_key_id')}</SettingSubtitle>
|
||||
<Input
|
||||
value={localAccessKeyId}
|
||||
placeholder="Access Key ID"
|
||||
onChange={(e) => setLocalAccessKeyId(e.target.value)}
|
||||
style={{ marginTop: 5 }}
|
||||
spellCheck={false}
|
||||
/>
|
||||
<SettingHelpTextRow>
|
||||
<SettingHelpText>{t('settings.provider.volcengine.access_key_id_help')}</SettingHelpText>
|
||||
</SettingHelpTextRow>
|
||||
{!hasCredentials ? (
|
||||
<>
|
||||
<SettingSubtitle style={{ marginTop: 15 }}>{t('settings.provider.volcengine.access_key_id')}</SettingSubtitle>
|
||||
<Input
|
||||
value={localAccessKeyId}
|
||||
placeholder="Access Key ID"
|
||||
onChange={(e) => setLocalAccessKeyId(e.target.value)}
|
||||
style={{ marginTop: 5 }}
|
||||
spellCheck={false}
|
||||
/>
|
||||
<SettingHelpTextRow>
|
||||
<SettingHelpText>{t('settings.provider.volcengine.access_key_id_help')}</SettingHelpText>
|
||||
</SettingHelpTextRow>
|
||||
|
||||
<SettingSubtitle style={{ marginTop: 15 }}>{t('settings.provider.volcengine.secret_access_key')}</SettingSubtitle>
|
||||
<Input.Password
|
||||
value={localSecretAccessKey}
|
||||
placeholder="Secret Access Key"
|
||||
onChange={(e) => setLocalSecretAccessKey(e.target.value)}
|
||||
style={{ marginTop: 5 }}
|
||||
spellCheck={false}
|
||||
/>
|
||||
<SettingHelpTextRow style={{ justifyContent: 'space-between' }}>
|
||||
<HStack>
|
||||
{apiKeyWebsite && (
|
||||
<SettingHelpLink target="_blank" href={apiKeyWebsite}>
|
||||
{t('settings.provider.get_api_key')}
|
||||
</SettingHelpLink>
|
||||
)}
|
||||
</HStack>
|
||||
<SettingHelpText>{t('settings.provider.volcengine.secret_access_key_help')}</SettingHelpText>
|
||||
</SettingHelpTextRow>
|
||||
<SettingSubtitle style={{ marginTop: 15 }}>
|
||||
{t('settings.provider.volcengine.secret_access_key')}
|
||||
</SettingSubtitle>
|
||||
<Input.Password
|
||||
value={localSecretAccessKey}
|
||||
placeholder="Secret Access Key"
|
||||
onChange={(e) => setLocalSecretAccessKey(e.target.value)}
|
||||
style={{ marginTop: 5 }}
|
||||
spellCheck={false}
|
||||
/>
|
||||
<SettingHelpTextRow style={{ justifyContent: 'space-between' }}>
|
||||
<HStack>
|
||||
<SettingHelpLink target="_blank" href={accessKeyWebSite}>
|
||||
{t('settings.provider.get_api_key')}
|
||||
</SettingHelpLink>
|
||||
</HStack>
|
||||
<SettingHelpText>{t('settings.provider.volcengine.secret_access_key_help')}</SettingHelpText>
|
||||
</SettingHelpTextRow>
|
||||
<SettingSubtitle style={{ marginTop: 15 }}>{t('settings.provider.volcengine.region')}</SettingSubtitle>
|
||||
<Input
|
||||
value={localRegion}
|
||||
placeholder="cn-beijing"
|
||||
onChange={(e) => setLocalRegion(e.target.value)}
|
||||
onBlur={() => setRegion(localRegion)}
|
||||
style={{ marginTop: 5 }}
|
||||
/>
|
||||
<SettingHelpTextRow>
|
||||
<SettingHelpText>{t('settings.provider.volcengine.region_help')}</SettingHelpText>
|
||||
</SettingHelpTextRow>
|
||||
|
||||
<SettingSubtitle style={{ marginTop: 15 }}>{t('settings.provider.volcengine.region')}</SettingSubtitle>
|
||||
<Input
|
||||
value={localRegion}
|
||||
placeholder="cn-beijing"
|
||||
onChange={(e) => setLocalRegion(e.target.value)}
|
||||
onBlur={() => setRegion(localRegion)}
|
||||
style={{ marginTop: 5 }}
|
||||
/>
|
||||
<SettingHelpTextRow>
|
||||
<SettingHelpText>{t('settings.provider.volcengine.region_help')}</SettingHelpText>
|
||||
</SettingHelpTextRow>
|
||||
|
||||
<SettingSubtitle style={{ marginTop: 15 }}>{t('settings.provider.volcengine.project_name')}</SettingSubtitle>
|
||||
<Input
|
||||
value={localProjectName}
|
||||
placeholder="default"
|
||||
onChange={(e) => setLocalProjectName(e.target.value)}
|
||||
onBlur={() => setProjectName(localProjectName)}
|
||||
style={{ marginTop: 5 }}
|
||||
/>
|
||||
<SettingHelpTextRow>
|
||||
<SettingHelpText>{t('settings.provider.volcengine.project_name_help')}</SettingHelpText>
|
||||
</SettingHelpTextRow>
|
||||
<SettingSubtitle style={{ marginTop: 15 }}>{t('settings.provider.volcengine.project_name')}</SettingSubtitle>
|
||||
<Input
|
||||
value={localProjectName}
|
||||
placeholder="default"
|
||||
onChange={(e) => setLocalProjectName(e.target.value)}
|
||||
onBlur={() => setProjectName(localProjectName)}
|
||||
style={{ marginTop: 5 }}
|
||||
/>
|
||||
<SettingHelpTextRow>
|
||||
<SettingHelpText>{t('settings.provider.volcengine.project_name_help')}</SettingHelpText>
|
||||
</SettingHelpTextRow>
|
||||
</>
|
||||
) : (
|
||||
<Alert
|
||||
type="success"
|
||||
style={{ marginTop: 15 }}
|
||||
message={t('settings.provider.volcengine.credentials_saved_notice')}
|
||||
showIcon
|
||||
/>
|
||||
)}
|
||||
|
||||
<Space style={{ marginTop: 15 }}>
|
||||
<Button type="primary" onClick={handleSaveCredentials} loading={saving}>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user