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('查看示例')}*/} + {/**/} } >