From 7aa54a2cd77c4827461c0ebaed440276084f980a Mon Sep 17 00:00:00 2001
From: CaIon <1808837298@qq.com>
Date: Thu, 8 May 2025 22:39:55 +0800
Subject: [PATCH] feat: add AzureNoRemoveDotTime constant and update channel
handling #1044
- Introduced a new constant `AzureNoRemoveDotTime` in `constant/azure.go` to manage model name formatting for channels created after May 10, 2025.
- Updated `distributor.go` to set `channel_create_time` in the context.
- Modified `adaptor.go` to conditionally remove dots from model names based on the channel creation time.
- Enhanced `relay_info.go` to include `ChannelCreateTime` in the `RelayInfo` struct.
- Updated English localization files to reflect changes in model name handling for new channels.
---
constant/azure.go | 5 ++++
middleware/distributor.go | 1 +
relay/channel/openai/adaptor.go | 8 ++++---
relay/common/relay_info.go | 18 ++++++++-------
web/src/i18n/locales/en.json | 1 +
web/src/pages/Channel/EditChannel.js | 34 ++++++++++++++--------------
6 files changed, 39 insertions(+), 28 deletions(-)
create mode 100644 constant/azure.go
diff --git a/constant/azure.go b/constant/azure.go
new file mode 100644
index 00000000..d84040ce
--- /dev/null
+++ b/constant/azure.go
@@ -0,0 +1,5 @@
+package constant
+
+import "time"
+
+var AzureNoRemoveDotTime = time.Date(2025, time.May, 10, 0, 0, 0, 0, time.UTC).Unix()
diff --git a/middleware/distributor.go b/middleware/distributor.go
index 51fd8fd1..34882381 100644
--- a/middleware/distributor.go
+++ b/middleware/distributor.go
@@ -213,6 +213,7 @@ func SetupContextForSelectedChannel(c *gin.Context, channel *model.Channel, mode
c.Set("channel_id", channel.Id)
c.Set("channel_name", channel.Name)
c.Set("channel_type", channel.Type)
+ c.Set("channel_create_time", channel.CreatedTime)
c.Set("channel_setting", channel.GetSetting())
c.Set("param_override", channel.GetParamOverride())
if nil != channel.OpenAIOrganization && "" != *channel.OpenAIOrganization {
diff --git a/relay/channel/openai/adaptor.go b/relay/channel/openai/adaptor.go
index c81b9366..da92692b 100644
--- a/relay/channel/openai/adaptor.go
+++ b/relay/channel/openai/adaptor.go
@@ -8,6 +8,7 @@ import (
"io"
"mime/multipart"
"net/http"
+ "net/textproto"
"one-api/common"
constant2 "one-api/constant"
"one-api/dto"
@@ -25,8 +26,6 @@ import (
"path/filepath"
"strings"
- "net/textproto"
-
"github.com/gin-gonic/gin"
)
@@ -93,7 +92,10 @@ func (a *Adaptor) GetRequestURL(info *relaycommon.RelayInfo) (string, error) {
requestURL = fmt.Sprintf("%s?api-version=%s", requestURL, apiVersion)
task := strings.TrimPrefix(requestURL, "/v1/")
model_ := info.UpstreamModelName
- model_ = strings.Replace(model_, ".", "", -1)
+ // 2025年5月10日后创建的渠道不移除.
+ if info.ChannelCreateTime < constant2.AzureNoRemoveDotTime {
+ model_ = strings.Replace(model_, ".", "", -1)
+ }
// https://github.com/songquanpeng/one-api/issues/67
requestURL = fmt.Sprintf("/openai/deployments/%s/%s", model_, task)
if info.RelayMode == constant.RelayModeRealtime {
diff --git a/relay/common/relay_info.go b/relay/common/relay_info.go
index 04e28980..f4fc3c1e 100644
--- a/relay/common/relay_info.go
+++ b/relay/common/relay_info.go
@@ -98,6 +98,7 @@ type RelayInfo struct {
UserQuota int
RelayFormat string
SendResponseCount int
+ ChannelCreateTime int64
ThinkingContentInfo
*ClaudeConvertInfo
*RerankerInfo
@@ -209,14 +210,15 @@ func GenRelayInfo(c *gin.Context) *RelayInfo {
OriginModelName: c.GetString("original_model"),
UpstreamModelName: c.GetString("original_model"),
//RecodeModelName: c.GetString("original_model"),
- IsModelMapped: false,
- ApiType: apiType,
- ApiVersion: c.GetString("api_version"),
- ApiKey: strings.TrimPrefix(c.Request.Header.Get("Authorization"), "Bearer "),
- Organization: c.GetString("channel_organization"),
- ChannelSetting: channelSetting,
- ParamOverride: paramOverride,
- RelayFormat: RelayFormatOpenAI,
+ IsModelMapped: false,
+ ApiType: apiType,
+ ApiVersion: c.GetString("api_version"),
+ ApiKey: strings.TrimPrefix(c.Request.Header.Get("Authorization"), "Bearer "),
+ Organization: c.GetString("channel_organization"),
+ ChannelSetting: channelSetting,
+ ChannelCreateTime: c.GetInt64("channel_create_time"),
+ ParamOverride: paramOverride,
+ RelayFormat: RelayFormatOpenAI,
ThinkingContentInfo: ThinkingContentInfo{
IsFirstThinkingContent: true,
SendLastThinkingContent: false,
diff --git a/web/src/i18n/locales/en.json b/web/src/i18n/locales/en.json
index e9975f61..eedf1196 100644
--- a/web/src/i18n/locales/en.json
+++ b/web/src/i18n/locales/en.json
@@ -493,6 +493,7 @@
"默认": "default",
"图片演示": "Image demo",
"注意,系统请求的时模型名称中的点会被剔除,例如:gpt-4.1会请求为gpt-41,所以在Azure部署的时候,部署模型名称需要手动改为gpt-41": "Note that the dot in the model name requested by the system will be removed, for example: gpt-4.1 will be requested as gpt-41, so when deploying on Azure, the deployment model name needs to be manually changed to gpt-41",
+ "2025年5月10日后添加的渠道,不需要再在部署的时候移除模型名称中的\".\"": "After May 10, 2025, channels added do not need to remove the dot in the model name during deployment",
"模型映射必须是合法的 JSON 格式!": "Model mapping must be in valid JSON format!",
"取消无限额度": "Cancel unlimited quota",
"取消": "Cancel",
diff --git a/web/src/pages/Channel/EditChannel.js b/web/src/pages/Channel/EditChannel.js
index a793e149..cba787fc 100644
--- a/web/src/pages/Channel/EditChannel.js
+++ b/web/src/pages/Channel/EditChannel.js
@@ -477,24 +477,24 @@ const EditChannel = (props) => {
type={'warning'}
description={
<>
- {t('注意,系统请求的时模型名称中的点会被剔除,例如:gpt-4.1会请求为gpt-41,所以在Azure部署的时候,部署模型名称需要手动改为gpt-41')}
-
- {
- setModalImageUrl(
- '/azure_model_name.png',
- );
- setIsModalOpenurl(true)
+ {t('2025年5月10日后添加的渠道,不需要再在部署的时候移除模型名称中的"."')}
+ {/*
*/}
+ {/* {*/}
+ {/* setModalImageUrl(*/}
+ {/* '/azure_model_name.png',*/}
+ {/* );*/}
+ {/* setIsModalOpenurl(true)*/}
- }}
- >
- {t('查看示例')}
-
+ {/* }}*/}
+ {/*>*/}
+ {/* {t('查看示例')}*/}
+ {/**/}
>
}
>