diff --git a/model/channel_cache.go b/model/channel_cache.go index 90bd2ad1..86866e40 100644 --- a/model/channel_cache.go +++ b/model/channel_cache.go @@ -129,8 +129,6 @@ func CacheGetRandomSatisfiedChannel(c *gin.Context, group string, model string, } func getRandomSatisfiedChannel(group string, model string, retry int) (*Channel, error) { - model = ratio_setting.FormatMatchingModelName(model) - // if memory cache is disabled, get channel directly from database if !common.MemoryCacheEnabled { return GetRandomSatisfiedChannel(group, model, retry) @@ -138,8 +136,16 @@ func getRandomSatisfiedChannel(group string, model string, retry int) (*Channel, channelSyncLock.RLock() defer channelSyncLock.RUnlock() + + // First, try to find channels with the exact model name. channels := group2model2channels[group][model] + // If no channels found, try to find channels with the normalized model name. + if len(channels) == 0 { + normalizedModel := ratio_setting.FormatMatchingModelName(model) + channels = group2model2channels[group][normalizedModel] + } + if len(channels) == 0 { return nil, nil } diff --git a/setting/ratio_setting/model_ratio.go b/setting/ratio_setting/model_ratio.go index 647cc1f4..c0cbe190 100644 --- a/setting/ratio_setting/model_ratio.go +++ b/setting/ratio_setting/model_ratio.go @@ -150,6 +150,7 @@ var defaultModelRatio = map[string]float64{ "gemini-2.5-flash-preview-05-20-nothinking": 0.075, "gemini-2.5-flash-thinking-*": 0.075, // 用于为后续所有2.5 flash thinking budget 模型设置默认倍率 "gemini-2.5-pro-thinking-*": 0.625, // 用于为后续所有2.5 pro thinking budget 模型设置默认倍率 + "gemini-2.5-flash-lite-preview-thinking-*": 0.05, "gemini-2.5-flash-lite-preview-06-17": 0.05, "gemini-2.5-flash": 0.15, "text-embedding-004": 0.001, @@ -503,9 +504,6 @@ func getHardcodedCompletionModelRatio(name string) (float64, bool) { return 3.5 / 0.15, false } if strings.HasPrefix(name, "gemini-2.5-flash-lite") { - if strings.HasPrefix(name, "gemini-2.5-flash-lite-preview") { - return 4, false - } return 4, false } return 2.5 / 0.3, true @@ -657,8 +655,15 @@ func GetCompletionRatioCopy() map[string]float64 { // 转换模型名,减少渠道必须配置各种带参数模型 func FormatMatchingModelName(name string) string { - name = handleThinkingBudgetModel(name, "gemini-2.5-flash", "gemini-2.5-flash-thinking-*") - name = handleThinkingBudgetModel(name, "gemini-2.5-pro", "gemini-2.5-pro-thinking-*") + + if strings.HasPrefix(name, "gemini-2.5-flash-lite") { + name = handleThinkingBudgetModel(name, "gemini-2.5-flash-lite", "gemini-2.5-flash-lite-thinking-*") + } else if strings.HasPrefix(name, "gemini-2.5-flash") { + name = handleThinkingBudgetModel(name, "gemini-2.5-flash", "gemini-2.5-flash-thinking-*") + } else if strings.HasPrefix(name, "gemini-2.5-pro") { + name = handleThinkingBudgetModel(name, "gemini-2.5-pro", "gemini-2.5-pro-thinking-*") + } + if strings.HasPrefix(name, "gpt-4-gizmo") { name = "gpt-4-gizmo-*" }