From 87a75b056562f42fe72bf333dffa77e8be0cea96 Mon Sep 17 00:00:00 2001 From: CaIon Date: Wed, 31 Dec 2025 21:29:10 +0800 Subject: [PATCH] feat(ratio): add functions to check for audio ratios and clean up unused code --- relay/compatible_handler.go | 6 ++++- setting/ratio_setting/model_ratio.go | 36 +++++++++++++--------------- 2 files changed, 21 insertions(+), 21 deletions(-) diff --git a/relay/compatible_handler.go b/relay/compatible_handler.go index 97649ca9..a536e165 100644 --- a/relay/compatible_handler.go +++ b/relay/compatible_handler.go @@ -18,6 +18,7 @@ import ( "github.com/QuantumNous/new-api/service" "github.com/QuantumNous/new-api/setting/model_setting" "github.com/QuantumNous/new-api/setting/operation_setting" + "github.com/QuantumNous/new-api/setting/ratio_setting" "github.com/QuantumNous/new-api/types" "github.com/shopspring/decimal" @@ -181,7 +182,10 @@ func TextHelper(c *gin.Context, info *relaycommon.RelayInfo) (newAPIError *types return newApiErr } - if usage.(*dto.Usage).CompletionTokenDetails.AudioTokens > 0 || usage.(*dto.Usage).PromptTokensDetails.AudioTokens > 0 { + var containAudioTokens = usage.(*dto.Usage).CompletionTokenDetails.AudioTokens > 0 || usage.(*dto.Usage).PromptTokensDetails.AudioTokens > 0 + var containsAudioRatios = ratio_setting.ContainsAudioRatio(info.OriginModelName) || ratio_setting.ContainsAudioCompletionRatio(info.OriginModelName) + + if containAudioTokens && containsAudioRatios { service.PostAudioConsumeQuota(c, info, usage.(*dto.Usage), "") } else { postConsumeQuota(c, info, usage.(*dto.Usage)) diff --git a/setting/ratio_setting/model_ratio.go b/setting/ratio_setting/model_ratio.go index 017048eb..039d4a02 100644 --- a/setting/ratio_setting/model_ratio.go +++ b/setting/ratio_setting/model_ratio.go @@ -674,6 +674,22 @@ func GetAudioCompletionRatio(name string) float64 { return 1 } +func ContainsAudioRatio(name string) bool { + audioRatioMapMutex.RLock() + defer audioRatioMapMutex.RUnlock() + name = FormatMatchingModelName(name) + _, ok := audioRatioMap[name] + return ok +} + +func ContainsAudioCompletionRatio(name string) bool { + audioCompletionRatioMapMutex.RLock() + defer audioCompletionRatioMapMutex.RUnlock() + name = FormatMatchingModelName(name) + _, ok := audioCompletionRatioMap[name] + return ok +} + func ModelRatio2JSONString() string { modelRatioMapMutex.RLock() defer modelRatioMapMutex.RUnlock() @@ -749,16 +765,6 @@ func UpdateAudioRatioByJSONString(jsonStr string) error { return nil } -func GetAudioRatioCopy() map[string]float64 { - audioRatioMapMutex.RLock() - defer audioRatioMapMutex.RUnlock() - copyMap := make(map[string]float64, len(audioRatioMap)) - for k, v := range audioRatioMap { - copyMap[k] = v - } - return copyMap -} - func AudioCompletionRatio2JSONString() string { audioCompletionRatioMapMutex.RLock() defer audioCompletionRatioMapMutex.RUnlock() @@ -781,16 +787,6 @@ func UpdateAudioCompletionRatioByJSONString(jsonStr string) error { return nil } -func GetAudioCompletionRatioCopy() map[string]float64 { - audioCompletionRatioMapMutex.RLock() - defer audioCompletionRatioMapMutex.RUnlock() - copyMap := make(map[string]float64, len(audioCompletionRatioMap)) - for k, v := range audioCompletionRatioMap { - copyMap[k] = v - } - return copyMap -} - func GetModelRatioCopy() map[string]float64 { modelRatioMapMutex.RLock() defer modelRatioMapMutex.RUnlock()