MCPcopy Create free account
hub / github.com/aiprodcoder/MIXAPI / calculateAudioQuota

Function calculateAudioQuota

service/quota.go:40–77  ·  view source on GitHub ↗
(info QuotaInfo)

Source from the content-addressed store, hash-verified

38}
39
40func calculateAudioQuota(info QuotaInfo) int {
41 if info.UsePrice {
42 modelPrice := decimal.NewFromFloat(info.ModelPrice)
43 quotaPerUnit := decimal.NewFromFloat(common.QuotaPerUnit)
44 groupRatio := decimal.NewFromFloat(info.GroupRatio)
45
46 quota := modelPrice.Mul(quotaPerUnit).Mul(groupRatio)
47 return int(quota.IntPart())
48 }
49
50 completionRatio := decimal.NewFromFloat(ratio_setting.GetCompletionRatio(info.ModelName))
51 audioRatio := decimal.NewFromFloat(ratio_setting.GetAudioRatio(info.ModelName))
52 audioCompletionRatio := decimal.NewFromFloat(ratio_setting.GetAudioCompletionRatio(info.ModelName))
53
54 groupRatio := decimal.NewFromFloat(info.GroupRatio)
55 modelRatio := decimal.NewFromFloat(info.ModelRatio)
56 ratio := groupRatio.Mul(modelRatio)
57
58 inputTextTokens := decimal.NewFromInt(int64(info.InputDetails.TextTokens))
59 outputTextTokens := decimal.NewFromInt(int64(info.OutputDetails.TextTokens))
60 inputAudioTokens := decimal.NewFromInt(int64(info.InputDetails.AudioTokens))
61 outputAudioTokens := decimal.NewFromInt(int64(info.OutputDetails.AudioTokens))
62
63 quota := decimal.Zero
64 quota = quota.Add(inputTextTokens)
65 quota = quota.Add(outputTextTokens.Mul(completionRatio))
66 quota = quota.Add(inputAudioTokens.Mul(audioRatio))
67 quota = quota.Add(outputAudioTokens.Mul(audioRatio).Mul(audioCompletionRatio))
68
69 quota = quota.Mul(ratio)
70
71 // If ratio is not zero and quota is less than or equal to zero, set quota to 1
72 if !ratio.IsZero() && quota.LessThanOrEqual(decimal.Zero) {
73 quota = decimal.NewFromInt(1)
74 }
75
76 return int(quota.Round(0).IntPart())
77}
78
79func PreWssConsumeQuota(ctx *gin.Context, relayInfo *relaycommon.RelayInfo, usage *dto.RealtimeUsage) error {
80 if relayInfo.UsePrice {

Callers 3

PreWssConsumeQuotaFunction · 0.85
PostWssConsumeQuotaFunction · 0.85
PostAudioConsumeQuotaFunction · 0.85

Calls 4

GetCompletionRatioFunction · 0.92
GetAudioRatioFunction · 0.92
GetAudioCompletionRatioFunction · 0.92
AddMethod · 0.80

Tested by

no test coverage detected