Explorar o código

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

JustSong %!s(int64=2) %!d(string=hai) anos
pai
achega
01863d3e44
Modificáronse 1 ficheiros con 7 adicións e 0 borrados
  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)
 		}
 	}