mirror of
https://github.com/linux-do/new-api.git
synced 2025-09-22 10:16:36 +08:00
feat: realtime扣费时检测令牌额度
(cherry picked from commit 91511b8b64fc0d28dbf657cb97e12b7d1e50070d)
This commit is contained in:
parent
3b53a2a5ce
commit
4131183378
@ -9,6 +9,7 @@ import (
|
|||||||
"one-api/dto"
|
"one-api/dto"
|
||||||
"one-api/model"
|
"one-api/model"
|
||||||
relaycommon "one-api/relay/common"
|
relaycommon "one-api/relay/common"
|
||||||
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -20,6 +21,12 @@ func PreWssConsumeQuota(ctx *gin.Context, relayInfo *relaycommon.RelayInfo, usag
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
token, err := model.CacheGetTokenByKey(strings.TrimLeft(relayInfo.ApiKey, "sk-"))
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
modelName := relayInfo.UpstreamModelName
|
modelName := relayInfo.UpstreamModelName
|
||||||
textInputTokens := usage.InputTokenDetails.TextTokens
|
textInputTokens := usage.InputTokenDetails.TextTokens
|
||||||
textOutTokens := usage.OutputTokenDetails.TextTokens
|
textOutTokens := usage.OutputTokenDetails.TextTokens
|
||||||
@ -46,6 +53,10 @@ func PreWssConsumeQuota(ctx *gin.Context, relayInfo *relaycommon.RelayInfo, usag
|
|||||||
return errors.New(fmt.Sprintf("用户额度不足,剩余额度为 %d", userQuota))
|
return errors.New(fmt.Sprintf("用户额度不足,剩余额度为 %d", userQuota))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if token.RemainQuota < quota {
|
||||||
|
return errors.New(fmt.Sprintf("令牌额度不足,剩余额度为 %d", token.RemainQuota))
|
||||||
|
}
|
||||||
|
|
||||||
err = model.PostConsumeTokenQuota(relayInfo, 0, quota, 0, false)
|
err = model.PostConsumeTokenQuota(relayInfo, 0, quota, 0, false)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
Loading…
Reference in New Issue
Block a user