mirror of
https://github.com/QuantumNous/new-api.git
synced 2026-09-03 04:43:01 +00:00
feat(advanced-custom): remove fallback option and enhance path matching for advanced custom routes
This commit is contained in:
@@ -104,7 +104,8 @@ func Distribute() func(c *gin.Context) {
|
||||
if preferredChannelID, found := service.GetPreferredChannelByAffinity(c, modelRequest.Model, usingGroup); found {
|
||||
affinityUsable := false
|
||||
preferred, err := model.CacheGetChannel(preferredChannelID)
|
||||
if err == nil && preferred != nil && preferred.Status == common.ChannelStatusEnabled {
|
||||
if err == nil && preferred != nil && preferred.Status == common.ChannelStatusEnabled &&
|
||||
channelSupportsRequestPath(preferred, c.Request.URL.Path) {
|
||||
if usingGroup == "auto" {
|
||||
userGroup := common.GetContextKeyString(c, constant.ContextKeyUserGroup)
|
||||
autoGroups := service.GetUserAutoGroup(userGroup)
|
||||
@@ -132,10 +133,11 @@ func Distribute() func(c *gin.Context) {
|
||||
|
||||
if channel == nil {
|
||||
channel, selectGroup, err = service.CacheGetRandomSatisfiedChannel(&service.RetryParam{
|
||||
Ctx: c,
|
||||
ModelName: modelRequest.Model,
|
||||
TokenGroup: usingGroup,
|
||||
Retry: common.GetPointer(0),
|
||||
Ctx: c,
|
||||
ModelName: modelRequest.Model,
|
||||
TokenGroup: usingGroup,
|
||||
RequestPath: c.Request.URL.Path,
|
||||
Retry: common.GetPointer(0),
|
||||
})
|
||||
if err != nil {
|
||||
showGroup := usingGroup
|
||||
@@ -167,6 +169,20 @@ func Distribute() func(c *gin.Context) {
|
||||
}
|
||||
}
|
||||
|
||||
// channelSupportsRequestPath reports whether a channel can serve the request path.
|
||||
// Only Advanced Custom (type 58) channels are path-checked; all other channel types
|
||||
// always pass. A type-58 channel is usable only when one of its routes matches.
|
||||
func channelSupportsRequestPath(channel *model.Channel, requestPath string) bool {
|
||||
if channel == nil {
|
||||
return false
|
||||
}
|
||||
if channel.Type != constant.ChannelTypeAdvancedCustom {
|
||||
return true
|
||||
}
|
||||
config := channel.GetOtherSettings().AdvancedCustom
|
||||
return config != nil && config.SupportsPath(requestPath)
|
||||
}
|
||||
|
||||
// getModelFromRequest 从请求中读取模型信息
|
||||
// 根据 Content-Type 自动处理:
|
||||
// - application/json
|
||||
|
||||
Reference in New Issue
Block a user