Переглянути джерело

feat: optimize channel retrieval by respecting original model names

RedwindA 4 місяців тому
батько
коміт
7f4056abc9
1 змінених файлів з 8 додано та 2 видалено
  1. 8 2
      model/channel_cache.go

+ 8 - 2
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
 	}