Преглед изворни кода

fix: fix quota not return when error occurred (close #518)

JustSong пре 2 година
родитељ
комит
01863d3e44
1 измењених фајлова са 7 додато и 0 уклоњено
  1. 7 0
      controller/relay-text.go

+ 7 - 0
controller/relay-text.go

@@ -347,6 +347,13 @@ func relayTextHelper(c *gin.Context, relayMode int) *OpenAIErrorWithStatusCode {
 		isStream = isStream || strings.HasPrefix(resp.Header.Get("Content-Type"), "text/event-stream")
 
 		if resp.StatusCode != http.StatusOK {
+			go func() {
+				// return pre-consumed quota
+				err := model.PostConsumeTokenQuota(tokenId, -preConsumedQuota)
+				if err != nil {
+					common.SysError("error return pre-consumed quota: " + err.Error())
+				}
+			}()
 			return relayErrorHandler(resp)
 		}
 	}