From 25a8473e85e6263144dbddf155295c7ecaac3485 Mon Sep 17 00:00:00 2001 From: huanghejian Date: Sat, 27 Sep 2025 09:35:03 +0800 Subject: [PATCH 1/4] =?UTF-8?q?feat:=20volcengine=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E8=87=AA=E5=AE=9A=E4=B9=89=E5=9F=9F=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- relay/channel/volcengine/adaptor.go | 18 ++++++++++++------ relay/channel/volcengine/constants.go | 5 +++++ .../table/channels/modals/EditChannelModal.jsx | 5 ++--- 3 files changed, 19 insertions(+), 9 deletions(-) diff --git a/relay/channel/volcengine/adaptor.go b/relay/channel/volcengine/adaptor.go index eb88412af..5bea7d46d 100644 --- a/relay/channel/volcengine/adaptor.go +++ b/relay/channel/volcengine/adaptor.go @@ -188,20 +188,26 @@ func (a *Adaptor) Init(info *relaycommon.RelayInfo) { } func (a *Adaptor) GetRequestURL(info *relaycommon.RelayInfo) (string, error) { + // 支持自定义域名,如果未设置则使用默认域名 + baseUrl := info.ChannelBaseUrl + if baseUrl == "" { + baseUrl = "https://ark.cn-beijing.volces.com" + } + switch info.RelayMode { case constant.RelayModeChatCompletions: if strings.HasPrefix(info.UpstreamModelName, "bot") { - return fmt.Sprintf("%s/api/v3/bots/chat/completions", info.ChannelBaseUrl), nil + return fmt.Sprintf("%s/api/v3/bots/chat/completions", baseUrl), nil } - return fmt.Sprintf("%s/api/v3/chat/completions", info.ChannelBaseUrl), nil + return fmt.Sprintf("%s/api/v3/chat/completions", baseUrl), nil case constant.RelayModeEmbeddings: - return fmt.Sprintf("%s/api/v3/embeddings", info.ChannelBaseUrl), nil + return fmt.Sprintf("%s/api/v3/embeddings", baseUrl), nil case constant.RelayModeImagesGenerations: - return fmt.Sprintf("%s/api/v3/images/generations", info.ChannelBaseUrl), nil + return fmt.Sprintf("%s/api/v3/images/generations", baseUrl), nil case constant.RelayModeImagesEdits: - return fmt.Sprintf("%s/api/v3/images/edits", info.ChannelBaseUrl), nil + return fmt.Sprintf("%s/api/v3/images/edits", baseUrl), nil case constant.RelayModeRerank: - return fmt.Sprintf("%s/api/v3/rerank", info.ChannelBaseUrl), nil + return fmt.Sprintf("%s/api/v3/rerank", baseUrl), nil default: } return "", fmt.Errorf("unsupported relay mode: %d", info.RelayMode) diff --git a/relay/channel/volcengine/constants.go b/relay/channel/volcengine/constants.go index fca10e7c1..87a12b27c 100644 --- a/relay/channel/volcengine/constants.go +++ b/relay/channel/volcengine/constants.go @@ -9,6 +9,11 @@ var ModelList = []string{ "Doubao-lite-4k", "Doubao-embedding", "doubao-seedream-4-0-250828", + "seedream-4-0-250828", + "doubao-seedance-1-0-pro-250528", + "seedance-1-0-pro-250528", + "doubao-seed-1-6-thinking-250715", + "seed-1-6-thinking-250715", } var ChannelName = "volcengine" diff --git a/web/src/components/table/channels/modals/EditChannelModal.jsx b/web/src/components/table/channels/modals/EditChannelModal.jsx index c0a216246..9d7e7f37a 100644 --- a/web/src/components/table/channels/modals/EditChannelModal.jsx +++ b/web/src/components/table/channels/modals/EditChannelModal.jsx @@ -215,7 +215,7 @@ const EditChannelModal = (props) => { pass_through_body_enabled: false, system_prompt: '', }); - const showApiConfigCard = inputs.type !== 45; // 控制是否显示 API 配置卡片(仅当渠道类型不是 豆包 时显示) + const showApiConfigCard = true; // 控制是否显示 API 配置卡片 const getInitValues = () => ({ ...originInputs }); // 处理渠道额外设置的更新 @@ -1736,8 +1736,7 @@ const EditChannelModal = (props) => { {inputs.type !== 3 && inputs.type !== 8 && inputs.type !== 22 && - inputs.type !== 36 && - inputs.type !== 45 && ( + inputs.type !== 36 && (
Date: Sat, 27 Sep 2025 15:19:54 +0800 Subject: [PATCH 2/4] =?UTF-8?q?pref:=20=E4=BC=98=E5=8C=96=E4=BB=A3?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- relay/channel/volcengine/adaptor.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/relay/channel/volcengine/adaptor.go b/relay/channel/volcengine/adaptor.go index 5bea7d46d..21d6e1705 100644 --- a/relay/channel/volcengine/adaptor.go +++ b/relay/channel/volcengine/adaptor.go @@ -9,6 +9,7 @@ import ( "mime/multipart" "net/http" "net/textproto" + channelconstant "one-api/constant" "one-api/dto" "one-api/relay/channel" "one-api/relay/channel/openai" @@ -191,7 +192,7 @@ func (a *Adaptor) GetRequestURL(info *relaycommon.RelayInfo) (string, error) { // 支持自定义域名,如果未设置则使用默认域名 baseUrl := info.ChannelBaseUrl if baseUrl == "" { - baseUrl = "https://ark.cn-beijing.volces.com" + baseUrl = channelconstant.ChannelBaseURLs[channelconstant.ChannelTypeVolcEngine] } switch info.RelayMode { From e4efa34e6a3eda1e2861056f6855da8da49c00b9 Mon Sep 17 00:00:00 2001 From: huanghejian Date: Sat, 27 Sep 2025 16:40:18 +0800 Subject: [PATCH 3/4] =?UTF-8?q?pref:=20=E9=98=B2=E5=91=86=E8=AE=BE?= =?UTF-8?q?=E8=AE=A1=E9=9C=80=E8=A6=81=EF=BC=8C=E4=B8=8D=E5=85=81=E8=AE=B8?= =?UTF-8?q?=E8=87=AA=E5=AE=9A=E4=B9=89=EF=BC=8CAPI=E5=9C=B0=E5=9D=80?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=B8=BA=E4=B8=8B=E6=8B=89=E9=80=89=E6=8B=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../channels/modals/EditChannelModal.jsx | 27 ++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/web/src/components/table/channels/modals/EditChannelModal.jsx b/web/src/components/table/channels/modals/EditChannelModal.jsx index 9d7e7f37a..6ceb1ebf3 100644 --- a/web/src/components/table/channels/modals/EditChannelModal.jsx +++ b/web/src/components/table/channels/modals/EditChannelModal.jsx @@ -1736,7 +1736,8 @@ const EditChannelModal = (props) => { {inputs.type !== 3 && inputs.type !== 8 && inputs.type !== 22 && - inputs.type !== 36 && ( + inputs.type !== 36 && + inputs.type !== 45 && (
{ />
)} + + {inputs.type === 45 && ( +
+ + handleInputChange('base_url', value) + } + optionList={[ + { + value: 'https://ark.cn-beijing.volces.com', + label: 'https://ark.cn-beijing.volces.com' + }, + { + value: 'https://ark.ap-southeast.bytepluses.com', + label: 'https://ark.ap-southeast.bytepluses.com' + } + ]} + defaultValue='https://ark.cn-beijing.volces.com' + /> +
+ )} )} From 923308a899682a33461e47f764374cfb5a3659c6 Mon Sep 17 00:00:00 2001 From: huanghejian Date: Sat, 27 Sep 2025 17:03:34 +0800 Subject: [PATCH 4/4] =?UTF-8?q?fix:=20=E9=BB=98=E8=AE=A4=E9=80=89=E6=8B=A9?= =?UTF-8?q?=E5=9B=BD=E5=86=85=E5=9C=B0=E5=9D=80=EF=BC=8C=E4=B8=8D=E8=AE=BE?= =?UTF-8?q?=E7=BD=AEbase=20url=E5=BC=B9=E7=AA=97=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/table/channels/modals/EditChannelModal.jsx | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/web/src/components/table/channels/modals/EditChannelModal.jsx b/web/src/components/table/channels/modals/EditChannelModal.jsx index 6ceb1ebf3..ecc6ced65 100644 --- a/web/src/components/table/channels/modals/EditChannelModal.jsx +++ b/web/src/components/table/channels/modals/EditChannelModal.jsx @@ -322,6 +322,10 @@ const EditChannelModal = (props) => { case 36: localModels = ['suno_music', 'suno_lyrics']; break; + case 45: + localModels = getChannelModels(value); + setInputs((prevInputs) => ({ ...prevInputs, base_url: 'https://ark.cn-beijing.volces.com' })); + break; default: localModels = getChannelModels(value); break; @@ -822,6 +826,10 @@ const EditChannelModal = (props) => { showInfo(t('请至少选择一个模型!')); return; } + if (localInputs.type === 45 && (!localInputs.base_url || localInputs.base_url.trim() === '')) { + showInfo(t('请输入API地址!')); + return; + } if ( localInputs.model_mapping && localInputs.model_mapping !== '' &&