فهرست منبع

修复语音系列模型计费bug

CaIon 2 سال پیش
والد
کامیت
773e48ed6f
3فایلهای تغییر یافته به همراه46 افزوده شده و 2 حذف شده
  1. 2 0
      common/model-ratio.go
  2. 36 0
      controller/model.go
  3. 8 2
      controller/relay-audio.go

+ 2 - 0
common/model-ratio.go

@@ -39,7 +39,9 @@ var ModelRatio = map[string]float64{
 	"code-davinci-edit-001":     10,
 	"whisper-1":                 15,  // $0.006 / minute -> $0.006 / 150 words -> $0.006 / 200 tokens -> $0.03 / 1k tokens
 	"tts-1":                     7.5, // 1k characters -> $0.015
+	"tts-1-1106":                7.5, // 1k characters -> $0.015
 	"tts-1-hd":                  15,  // 1k characters -> $0.03
+	"tts-1-hd-1106":             15,  // 1k characters -> $0.03
 	"davinci":                   10,
 	"curie":                     10,
 	"babbage":                   10,

+ 36 - 0
controller/model.go

@@ -90,6 +90,42 @@ func init() {
 			Root:       "whisper-1",
 			Parent:     nil,
 		},
+		{
+			Id:         "tts-1",
+			Object:     "model",
+			Created:    1677649963,
+			OwnedBy:    "openai",
+			Permission: permission,
+			Root:       "tts-1",
+			Parent:     nil,
+		},
+		{
+			Id:         "tts-1-1106",
+			Object:     "model",
+			Created:    1677649963,
+			OwnedBy:    "openai",
+			Permission: permission,
+			Root:       "tts-1-1106",
+			Parent:     nil,
+		},
+		{
+			Id:         "tts-1-hd",
+			Object:     "model",
+			Created:    1677649963,
+			OwnedBy:    "openai",
+			Permission: permission,
+			Root:       "tts-1-hd",
+			Parent:     nil,
+		},
+		{
+			Id:         "tts-1-hd-1106",
+			Object:     "model",
+			Created:    1677649963,
+			OwnedBy:    "openai",
+			Permission: permission,
+			Root:       "tts-1-hd-1106",
+			Parent:     nil,
+		},
 		{
 			Id:         "gpt-3.5-turbo",
 			Object:     "model",

+ 8 - 2
controller/relay-audio.go

@@ -126,12 +126,18 @@ func relayAudioHelper(c *gin.Context, relayMode int) *OpenAIErrorWithStatusCode
 
 	defer func(ctx context.Context) {
 		go func() {
-			var quota int
+			quota := 0
+			var promptTokens = 0
 			if strings.HasPrefix(audioRequest.Model, "tts-1") {
 				quota = countAudioToken(audioRequest.Input, audioRequest.Model)
+				promptTokens = quota
 			} else {
 				quota = countAudioToken(audioResponse.Text, audioRequest.Model)
 			}
+			quota = int(float64(quota) * ratio)
+			if ratio != 0 && quota <= 0 {
+				quota = 1
+			}
 			quotaDelta := quota - preConsumedQuota
 			err := model.PostConsumeTokenQuota(tokenId, userQuota, quotaDelta, preConsumedQuota, true)
 			if err != nil {
@@ -144,7 +150,7 @@ func relayAudioHelper(c *gin.Context, relayMode int) *OpenAIErrorWithStatusCode
 			if quota != 0 {
 				tokenName := c.GetString("token_name")
 				logContent := fmt.Sprintf("模型倍率 %.2f,分组倍率 %.2f", modelRatio, groupRatio)
-				model.RecordConsumeLog(ctx, userId, channelId, 0, 0, audioRequest.Model, tokenName, quota, logContent, tokenId)
+				model.RecordConsumeLog(ctx, userId, channelId, promptTokens, 0, audioRequest.Model, tokenName, quota, logContent, tokenId)
 				model.UpdateUserUsedQuotaAndRequestCount(userId, quota)
 				channelId := c.GetInt("channel_id")
 				model.UpdateChannelUsedQuota(channelId, quota)