Commit 175ea56f by Apple\Apple

🚚 Refactor(ratio_setting): refactor ratio management into standalone `ratio_setting` package

Summary
• Migrated all ratio-related sources into `setting/ratio_setting/`
  – `model_ratio.go` (renamed from model-ratio.go)
  – `cache_ratio.go`
  – `group_ratio.go`
• Changed package name to `ratio_setting` and relocated initialization (`ratio_setting.InitRatioSettings()` in main).
• Updated every import & call site:
  – Model / cache / completion / image ratio helpers
  – Group ratio helpers (`GetGroupRatio*`, `ContainsGroupRatio`, `CheckGroupRatio`, etc.)
  – JSON-serialization & update helpers (`*Ratio2JSONString`, `Update*RatioByJSONString`)
• Adjusted controllers, middleware, relay helpers, services and models to reference the new package.
• Removed obsolete `setting` / `operation_setting` imports; added missing `ratio_setting` imports.
• Adopted idiomatic map iteration (`for key := range m`) where value is unused.
• Ran static checks to ensure clean build.

This commit centralises all ratio configuration (model, cache and group) in one cohesive module, simplifying future maintenance and improving code clarity.
parent ee793087
...@@ -4,13 +4,14 @@ import ( ...@@ -4,13 +4,14 @@ import (
"net/http" "net/http"
"one-api/model" "one-api/model"
"one-api/setting" "one-api/setting"
"one-api/setting/ratio_setting"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
) )
func GetGroups(c *gin.Context) { func GetGroups(c *gin.Context) {
groupNames := make([]string, 0) groupNames := make([]string, 0)
for groupName, _ := range setting.GetGroupRatioCopy() { for groupName := range ratio_setting.GetGroupRatioCopy() {
groupNames = append(groupNames, groupName) groupNames = append(groupNames, groupName)
} }
c.JSON(http.StatusOK, gin.H{ c.JSON(http.StatusOK, gin.H{
...@@ -25,7 +26,7 @@ func GetUserGroups(c *gin.Context) { ...@@ -25,7 +26,7 @@ func GetUserGroups(c *gin.Context) {
userGroup := "" userGroup := ""
userId := c.GetInt("id") userId := c.GetInt("id")
userGroup, _ = model.GetUserGroup(userId, false) userGroup, _ = model.GetUserGroup(userId, false)
for groupName, ratio := range setting.GetGroupRatioCopy() { for groupName, ratio := range ratio_setting.GetGroupRatioCopy() {
// UserUsableGroups contains the groups that the user can use // UserUsableGroups contains the groups that the user can use
userUsableGroups := setting.GetUserUsableGroups(userGroup) userUsableGroups := setting.GetUserUsableGroups(userGroup)
if desc, ok := userUsableGroups[groupName]; ok { if desc, ok := userUsableGroups[groupName]; ok {
......
...@@ -7,6 +7,7 @@ import ( ...@@ -7,6 +7,7 @@ import (
"one-api/model" "one-api/model"
"one-api/setting" "one-api/setting"
"one-api/setting/console_setting" "one-api/setting/console_setting"
"one-api/setting/ratio_setting"
"one-api/setting/system_setting" "one-api/setting/system_setting"
"strings" "strings"
...@@ -103,7 +104,7 @@ func UpdateOption(c *gin.Context) { ...@@ -103,7 +104,7 @@ func UpdateOption(c *gin.Context) {
return return
} }
case "GroupRatio": case "GroupRatio":
err = setting.CheckGroupRatio(option.Value) err = ratio_setting.CheckGroupRatio(option.Value)
if err != nil { if err != nil {
c.JSON(http.StatusOK, gin.H{ c.JSON(http.StatusOK, gin.H{
"success": false, "success": false,
......
...@@ -3,7 +3,7 @@ package controller ...@@ -3,7 +3,7 @@ package controller
import ( import (
"one-api/model" "one-api/model"
"one-api/setting" "one-api/setting"
"one-api/setting/operation_setting" "one-api/setting/ratio_setting"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
) )
...@@ -13,7 +13,7 @@ func GetPricing(c *gin.Context) { ...@@ -13,7 +13,7 @@ func GetPricing(c *gin.Context) {
userId, exists := c.Get("id") userId, exists := c.Get("id")
usableGroup := map[string]string{} usableGroup := map[string]string{}
groupRatio := map[string]float64{} groupRatio := map[string]float64{}
for s, f := range setting.GetGroupRatioCopy() { for s, f := range ratio_setting.GetGroupRatioCopy() {
groupRatio[s] = f groupRatio[s] = f
} }
var group string var group string
...@@ -22,7 +22,7 @@ func GetPricing(c *gin.Context) { ...@@ -22,7 +22,7 @@ func GetPricing(c *gin.Context) {
if err == nil { if err == nil {
group = user.Group group = user.Group
for g := range groupRatio { for g := range groupRatio {
ratio, ok := setting.GetGroupGroupRatio(group, g) ratio, ok := ratio_setting.GetGroupGroupRatio(group, g)
if ok { if ok {
groupRatio[g] = ratio groupRatio[g] = ratio
} }
...@@ -32,7 +32,7 @@ func GetPricing(c *gin.Context) { ...@@ -32,7 +32,7 @@ func GetPricing(c *gin.Context) {
usableGroup = setting.GetUserUsableGroups(group) usableGroup = setting.GetUserUsableGroups(group)
// check groupRatio contains usableGroup // check groupRatio contains usableGroup
for group := range setting.GetGroupRatioCopy() { for group := range ratio_setting.GetGroupRatioCopy() {
if _, ok := usableGroup[group]; !ok { if _, ok := usableGroup[group]; !ok {
delete(groupRatio, group) delete(groupRatio, group)
} }
...@@ -47,7 +47,7 @@ func GetPricing(c *gin.Context) { ...@@ -47,7 +47,7 @@ func GetPricing(c *gin.Context) {
} }
func ResetModelRatio(c *gin.Context) { func ResetModelRatio(c *gin.Context) {
defaultStr := operation_setting.DefaultModelRatio2JSONString() defaultStr := ratio_setting.DefaultModelRatio2JSONString()
err := model.UpdateOption("ModelRatio", defaultStr) err := model.UpdateOption("ModelRatio", defaultStr)
if err != nil { if err != nil {
c.JSON(200, gin.H{ c.JSON(200, gin.H{
...@@ -56,7 +56,7 @@ func ResetModelRatio(c *gin.Context) { ...@@ -56,7 +56,7 @@ func ResetModelRatio(c *gin.Context) {
}) })
return return
} }
err = operation_setting.UpdateModelRatioByJSONString(defaultStr) err = ratio_setting.UpdateModelRatioByJSONString(defaultStr)
if err != nil { if err != nil {
c.JSON(200, gin.H{ c.JSON(200, gin.H{
"success": false, "success": false,
......
...@@ -12,7 +12,7 @@ import ( ...@@ -12,7 +12,7 @@ import (
"one-api/model" "one-api/model"
"one-api/router" "one-api/router"
"one-api/service" "one-api/service"
"one-api/setting/operation_setting" "one-api/setting/ratio_setting"
"os" "os"
"strconv" "strconv"
...@@ -74,7 +74,7 @@ func main() { ...@@ -74,7 +74,7 @@ func main() {
} }
// Initialize model settings // Initialize model settings
operation_setting.InitRatioSettings() ratio_setting.InitRatioSettings()
// Initialize constants // Initialize constants
constant.InitEnv() constant.InitEnv()
// Initialize options // Initialize options
......
...@@ -11,6 +11,7 @@ import ( ...@@ -11,6 +11,7 @@ import (
relayconstant "one-api/relay/constant" relayconstant "one-api/relay/constant"
"one-api/service" "one-api/service"
"one-api/setting" "one-api/setting"
"one-api/setting/ratio_setting"
"strconv" "strconv"
"strings" "strings"
"time" "time"
...@@ -48,7 +49,7 @@ func Distribute() func(c *gin.Context) { ...@@ -48,7 +49,7 @@ func Distribute() func(c *gin.Context) {
return return
} }
// check group in common.GroupRatio // check group in common.GroupRatio
if !setting.ContainsGroupRatio(tokenGroup) { if !ratio_setting.ContainsGroupRatio(tokenGroup) {
if tokenGroup != "auto" { if tokenGroup != "auto" {
abortWithOpenAiMessage(c, http.StatusForbidden, fmt.Sprintf("分组 %s 已被弃用", tokenGroup)) abortWithOpenAiMessage(c, http.StatusForbidden, fmt.Sprintf("分组 %s 已被弃用", tokenGroup))
return return
......
...@@ -5,6 +5,7 @@ import ( ...@@ -5,6 +5,7 @@ import (
"one-api/setting" "one-api/setting"
"one-api/setting/config" "one-api/setting/config"
"one-api/setting/operation_setting" "one-api/setting/operation_setting"
"one-api/setting/ratio_setting"
"strconv" "strconv"
"strings" "strings"
"time" "time"
...@@ -96,13 +97,13 @@ func InitOptionMap() { ...@@ -96,13 +97,13 @@ func InitOptionMap() {
common.OptionMap["ModelRequestRateLimitDurationMinutes"] = strconv.Itoa(setting.ModelRequestRateLimitDurationMinutes) common.OptionMap["ModelRequestRateLimitDurationMinutes"] = strconv.Itoa(setting.ModelRequestRateLimitDurationMinutes)
common.OptionMap["ModelRequestRateLimitSuccessCount"] = strconv.Itoa(setting.ModelRequestRateLimitSuccessCount) common.OptionMap["ModelRequestRateLimitSuccessCount"] = strconv.Itoa(setting.ModelRequestRateLimitSuccessCount)
common.OptionMap["ModelRequestRateLimitGroup"] = setting.ModelRequestRateLimitGroup2JSONString() common.OptionMap["ModelRequestRateLimitGroup"] = setting.ModelRequestRateLimitGroup2JSONString()
common.OptionMap["ModelRatio"] = operation_setting.ModelRatio2JSONString() common.OptionMap["ModelRatio"] = ratio_setting.ModelRatio2JSONString()
common.OptionMap["ModelPrice"] = operation_setting.ModelPrice2JSONString() common.OptionMap["ModelPrice"] = ratio_setting.ModelPrice2JSONString()
common.OptionMap["CacheRatio"] = operation_setting.CacheRatio2JSONString() common.OptionMap["CacheRatio"] = ratio_setting.CacheRatio2JSONString()
common.OptionMap["GroupRatio"] = setting.GroupRatio2JSONString() common.OptionMap["GroupRatio"] = ratio_setting.GroupRatio2JSONString()
common.OptionMap["GroupGroupRatio"] = setting.GroupGroupRatio2JSONString() common.OptionMap["GroupGroupRatio"] = ratio_setting.GroupGroupRatio2JSONString()
common.OptionMap["UserUsableGroups"] = setting.UserUsableGroups2JSONString() common.OptionMap["UserUsableGroups"] = setting.UserUsableGroups2JSONString()
common.OptionMap["CompletionRatio"] = operation_setting.CompletionRatio2JSONString() common.OptionMap["CompletionRatio"] = ratio_setting.CompletionRatio2JSONString()
common.OptionMap["TopUpLink"] = common.TopUpLink common.OptionMap["TopUpLink"] = common.TopUpLink
//common.OptionMap["ChatLink"] = common.ChatLink //common.OptionMap["ChatLink"] = common.ChatLink
//common.OptionMap["ChatLink2"] = common.ChatLink2 //common.OptionMap["ChatLink2"] = common.ChatLink2
...@@ -358,19 +359,19 @@ func updateOptionMap(key string, value string) (err error) { ...@@ -358,19 +359,19 @@ func updateOptionMap(key string, value string) (err error) {
case "DataExportDefaultTime": case "DataExportDefaultTime":
common.DataExportDefaultTime = value common.DataExportDefaultTime = value
case "ModelRatio": case "ModelRatio":
err = operation_setting.UpdateModelRatioByJSONString(value) err = ratio_setting.UpdateModelRatioByJSONString(value)
case "GroupRatio": case "GroupRatio":
err = setting.UpdateGroupRatioByJSONString(value) err = ratio_setting.UpdateGroupRatioByJSONString(value)
case "GroupGroupRatio": case "GroupGroupRatio":
err = setting.UpdateGroupGroupRatioByJSONString(value) err = ratio_setting.UpdateGroupGroupRatioByJSONString(value)
case "UserUsableGroups": case "UserUsableGroups":
err = setting.UpdateUserUsableGroupsByJSONString(value) err = setting.UpdateUserUsableGroupsByJSONString(value)
case "CompletionRatio": case "CompletionRatio":
err = operation_setting.UpdateCompletionRatioByJSONString(value) err = ratio_setting.UpdateCompletionRatioByJSONString(value)
case "ModelPrice": case "ModelPrice":
err = operation_setting.UpdateModelPriceByJSONString(value) err = ratio_setting.UpdateModelPriceByJSONString(value)
case "CacheRatio": case "CacheRatio":
err = operation_setting.UpdateCacheRatioByJSONString(value) err = ratio_setting.UpdateCacheRatioByJSONString(value)
case "TopUpLink": case "TopUpLink":
common.TopUpLink = value common.TopUpLink = value
//case "ChatLink": //case "ChatLink":
......
...@@ -2,7 +2,7 @@ package model ...@@ -2,7 +2,7 @@ package model
import ( import (
"one-api/common" "one-api/common"
"one-api/setting/operation_setting" "one-api/setting/ratio_setting"
"sync" "sync"
"time" "time"
) )
...@@ -65,14 +65,14 @@ func updatePricing() { ...@@ -65,14 +65,14 @@ func updatePricing() {
ModelName: model, ModelName: model,
EnableGroup: groups, EnableGroup: groups,
} }
modelPrice, findPrice := operation_setting.GetModelPrice(model, false) modelPrice, findPrice := ratio_setting.GetModelPrice(model, false)
if findPrice { if findPrice {
pricing.ModelPrice = modelPrice pricing.ModelPrice = modelPrice
pricing.QuotaType = 1 pricing.QuotaType = 1
} else { } else {
modelRatio, _ := operation_setting.GetModelRatio(model) modelRatio, _ := ratio_setting.GetModelRatio(model)
pricing.ModelRatio = modelRatio pricing.ModelRatio = modelRatio
pricing.CompletionRatio = operation_setting.GetCompletionRatio(model) pricing.CompletionRatio = ratio_setting.GetCompletionRatio(model)
pricing.QuotaType = 0 pricing.QuotaType = 0
} }
pricingMap = append(pricingMap, pricing) pricingMap = append(pricingMap, pricing)
......
...@@ -5,8 +5,7 @@ import ( ...@@ -5,8 +5,7 @@ import (
"one-api/common" "one-api/common"
constant2 "one-api/constant" constant2 "one-api/constant"
relaycommon "one-api/relay/common" relaycommon "one-api/relay/common"
"one-api/setting" "one-api/setting/ratio_setting"
"one-api/setting/operation_setting"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
) )
...@@ -49,21 +48,21 @@ func HandleGroupRatio(ctx *gin.Context, relayInfo *relaycommon.RelayInfo) GroupR ...@@ -49,21 +48,21 @@ func HandleGroupRatio(ctx *gin.Context, relayInfo *relaycommon.RelayInfo) GroupR
} }
// check user group special ratio // check user group special ratio
userGroupRatio, ok := setting.GetGroupGroupRatio(relayInfo.UserGroup, relayInfo.Group) userGroupRatio, ok := ratio_setting.GetGroupGroupRatio(relayInfo.UserGroup, relayInfo.Group)
if ok { if ok {
// user group special ratio // user group special ratio
groupRatioInfo.GroupSpecialRatio = userGroupRatio groupRatioInfo.GroupSpecialRatio = userGroupRatio
groupRatioInfo.GroupRatio = userGroupRatio groupRatioInfo.GroupRatio = userGroupRatio
} else { } else {
// normal group ratio // normal group ratio
groupRatioInfo.GroupRatio = setting.GetGroupRatio(relayInfo.Group) groupRatioInfo.GroupRatio = ratio_setting.GetGroupRatio(relayInfo.Group)
} }
return groupRatioInfo return groupRatioInfo
} }
func ModelPriceHelper(c *gin.Context, info *relaycommon.RelayInfo, promptTokens int, maxTokens int) (PriceData, error) { func ModelPriceHelper(c *gin.Context, info *relaycommon.RelayInfo, promptTokens int, maxTokens int) (PriceData, error) {
modelPrice, usePrice := operation_setting.GetModelPrice(info.OriginModelName, false) modelPrice, usePrice := ratio_setting.GetModelPrice(info.OriginModelName, false)
groupRatioInfo := HandleGroupRatio(c, info) groupRatioInfo := HandleGroupRatio(c, info)
...@@ -79,7 +78,7 @@ func ModelPriceHelper(c *gin.Context, info *relaycommon.RelayInfo, promptTokens ...@@ -79,7 +78,7 @@ func ModelPriceHelper(c *gin.Context, info *relaycommon.RelayInfo, promptTokens
preConsumedTokens = promptTokens + maxTokens preConsumedTokens = promptTokens + maxTokens
} }
var success bool var success bool
modelRatio, success = operation_setting.GetModelRatio(info.OriginModelName) modelRatio, success = ratio_setting.GetModelRatio(info.OriginModelName)
if !success { if !success {
acceptUnsetRatio := false acceptUnsetRatio := false
if accept, ok := info.UserSetting[constant2.UserAcceptUnsetRatioModel]; ok { if accept, ok := info.UserSetting[constant2.UserAcceptUnsetRatioModel]; ok {
...@@ -92,10 +91,10 @@ func ModelPriceHelper(c *gin.Context, info *relaycommon.RelayInfo, promptTokens ...@@ -92,10 +91,10 @@ func ModelPriceHelper(c *gin.Context, info *relaycommon.RelayInfo, promptTokens
return PriceData{}, fmt.Errorf("模型 %s 倍率或价格未配置,请联系管理员设置或开始自用模式;Model %s ratio or price not set, please set or start self-use mode", info.OriginModelName, info.OriginModelName) return PriceData{}, fmt.Errorf("模型 %s 倍率或价格未配置,请联系管理员设置或开始自用模式;Model %s ratio or price not set, please set or start self-use mode", info.OriginModelName, info.OriginModelName)
} }
} }
completionRatio = operation_setting.GetCompletionRatio(info.OriginModelName) completionRatio = ratio_setting.GetCompletionRatio(info.OriginModelName)
cacheRatio, _ = operation_setting.GetCacheRatio(info.OriginModelName) cacheRatio, _ = ratio_setting.GetCacheRatio(info.OriginModelName)
cacheCreationRatio, _ = operation_setting.GetCreateCacheRatio(info.OriginModelName) cacheCreationRatio, _ = ratio_setting.GetCreateCacheRatio(info.OriginModelName)
imageRatio, _ = operation_setting.GetImageRatio(info.OriginModelName) imageRatio, _ = ratio_setting.GetImageRatio(info.OriginModelName)
ratio := modelRatio * groupRatioInfo.GroupRatio ratio := modelRatio * groupRatioInfo.GroupRatio
preConsumedQuota = int(float64(preConsumedTokens) * ratio) preConsumedQuota = int(float64(preConsumedTokens) * ratio)
} else { } else {
...@@ -122,11 +121,11 @@ func ModelPriceHelper(c *gin.Context, info *relaycommon.RelayInfo, promptTokens ...@@ -122,11 +121,11 @@ func ModelPriceHelper(c *gin.Context, info *relaycommon.RelayInfo, promptTokens
} }
func ContainPriceOrRatio(modelName string) bool { func ContainPriceOrRatio(modelName string) bool {
_, ok := operation_setting.GetModelPrice(modelName, false) _, ok := ratio_setting.GetModelPrice(modelName, false)
if ok { if ok {
return true return true
} }
_, ok = operation_setting.GetModelRatio(modelName) _, ok = ratio_setting.GetModelRatio(modelName)
if ok { if ok {
return true return true
} }
......
...@@ -15,7 +15,7 @@ import ( ...@@ -15,7 +15,7 @@ import (
relayconstant "one-api/relay/constant" relayconstant "one-api/relay/constant"
"one-api/service" "one-api/service"
"one-api/setting" "one-api/setting"
"one-api/setting/operation_setting" "one-api/setting/ratio_setting"
"strconv" "strconv"
"strings" "strings"
"time" "time"
...@@ -174,17 +174,17 @@ func RelaySwapFace(c *gin.Context) *dto.MidjourneyResponse { ...@@ -174,17 +174,17 @@ func RelaySwapFace(c *gin.Context) *dto.MidjourneyResponse {
return service.MidjourneyErrorWrapper(constant.MjRequestError, "sour_base64_and_target_base64_is_required") return service.MidjourneyErrorWrapper(constant.MjRequestError, "sour_base64_and_target_base64_is_required")
} }
modelName := service.CoverActionToModelName(constant.MjActionSwapFace) modelName := service.CoverActionToModelName(constant.MjActionSwapFace)
modelPrice, success := operation_setting.GetModelPrice(modelName, true) modelPrice, success := ratio_setting.GetModelPrice(modelName, true)
// 如果没有配置价格,则使用默认价格 // 如果没有配置价格,则使用默认价格
if !success { if !success {
defaultPrice, ok := operation_setting.GetDefaultModelRatioMap()[modelName] defaultPrice, ok := ratio_setting.GetDefaultModelRatioMap()[modelName]
if !ok { if !ok {
modelPrice = 0.1 modelPrice = 0.1
} else { } else {
modelPrice = defaultPrice modelPrice = defaultPrice
} }
} }
groupRatio := setting.GetGroupRatio(group) groupRatio := ratio_setting.GetGroupRatio(group)
ratio := modelPrice * groupRatio ratio := modelPrice * groupRatio
userQuota, err := model.GetUserQuota(userId, false) userQuota, err := model.GetUserQuota(userId, false)
if err != nil { if err != nil {
...@@ -480,17 +480,17 @@ func RelayMidjourneySubmit(c *gin.Context, relayMode int) *dto.MidjourneyRespons ...@@ -480,17 +480,17 @@ func RelayMidjourneySubmit(c *gin.Context, relayMode int) *dto.MidjourneyRespons
fullRequestURL := fmt.Sprintf("%s%s", baseURL, requestURL) fullRequestURL := fmt.Sprintf("%s%s", baseURL, requestURL)
modelName := service.CoverActionToModelName(midjRequest.Action) modelName := service.CoverActionToModelName(midjRequest.Action)
modelPrice, success := operation_setting.GetModelPrice(modelName, true) modelPrice, success := ratio_setting.GetModelPrice(modelName, true)
// 如果没有配置价格,则使用默认价格 // 如果没有配置价格,则使用默认价格
if !success { if !success {
defaultPrice, ok := operation_setting.GetDefaultModelRatioMap()[modelName] defaultPrice, ok := ratio_setting.GetDefaultModelRatioMap()[modelName]
if !ok { if !ok {
modelPrice = 0.1 modelPrice = 0.1
} else { } else {
modelPrice = defaultPrice modelPrice = defaultPrice
} }
} }
groupRatio := setting.GetGroupRatio(group) groupRatio := ratio_setting.GetGroupRatio(group)
ratio := modelPrice * groupRatio ratio := modelPrice * groupRatio
userQuota, err := model.GetUserQuota(userId, false) userQuota, err := model.GetUserQuota(userId, false)
if err != nil { if err != nil {
......
...@@ -15,8 +15,7 @@ import ( ...@@ -15,8 +15,7 @@ import (
relaycommon "one-api/relay/common" relaycommon "one-api/relay/common"
relayconstant "one-api/relay/constant" relayconstant "one-api/relay/constant"
"one-api/service" "one-api/service"
"one-api/setting" "one-api/setting/ratio_setting"
"one-api/setting/operation_setting"
) )
/* /*
...@@ -38,9 +37,9 @@ func RelayTaskSubmit(c *gin.Context, relayMode int) (taskErr *dto.TaskError) { ...@@ -38,9 +37,9 @@ func RelayTaskSubmit(c *gin.Context, relayMode int) (taskErr *dto.TaskError) {
} }
modelName := service.CoverTaskActionToModelName(platform, relayInfo.Action) modelName := service.CoverTaskActionToModelName(platform, relayInfo.Action)
modelPrice, success := operation_setting.GetModelPrice(modelName, true) modelPrice, success := ratio_setting.GetModelPrice(modelName, true)
if !success { if !success {
defaultPrice, ok := operation_setting.GetDefaultModelRatioMap()[modelName] defaultPrice, ok := ratio_setting.GetDefaultModelRatioMap()[modelName]
if !ok { if !ok {
modelPrice = 0.1 modelPrice = 0.1
} else { } else {
...@@ -49,7 +48,7 @@ func RelayTaskSubmit(c *gin.Context, relayMode int) (taskErr *dto.TaskError) { ...@@ -49,7 +48,7 @@ func RelayTaskSubmit(c *gin.Context, relayMode int) (taskErr *dto.TaskError) {
} }
// 预扣 // 预扣
groupRatio := setting.GetGroupRatio(relayInfo.Group) groupRatio := ratio_setting.GetGroupRatio(relayInfo.Group)
ratio := modelPrice * groupRatio ratio := modelPrice * groupRatio
userQuota, err := model.GetUserQuota(relayInfo.UserId, false) userQuota, err := model.GetUserQuota(relayInfo.UserId, false)
if err != nil { if err != nil {
......
...@@ -11,7 +11,7 @@ import ( ...@@ -11,7 +11,7 @@ import (
relaycommon "one-api/relay/common" relaycommon "one-api/relay/common"
"one-api/relay/helper" "one-api/relay/helper"
"one-api/setting" "one-api/setting"
"one-api/setting/operation_setting" "one-api/setting/ratio_setting"
"strings" "strings"
"time" "time"
...@@ -46,9 +46,9 @@ func calculateAudioQuota(info QuotaInfo) int { ...@@ -46,9 +46,9 @@ func calculateAudioQuota(info QuotaInfo) int {
return int(quota.IntPart()) return int(quota.IntPart())
} }
completionRatio := decimal.NewFromFloat(operation_setting.GetCompletionRatio(info.ModelName)) completionRatio := decimal.NewFromFloat(ratio_setting.GetCompletionRatio(info.ModelName))
audioRatio := decimal.NewFromFloat(operation_setting.GetAudioRatio(info.ModelName)) audioRatio := decimal.NewFromFloat(ratio_setting.GetAudioRatio(info.ModelName))
audioCompletionRatio := decimal.NewFromFloat(operation_setting.GetAudioCompletionRatio(info.ModelName)) audioCompletionRatio := decimal.NewFromFloat(ratio_setting.GetAudioCompletionRatio(info.ModelName))
groupRatio := decimal.NewFromFloat(info.GroupRatio) groupRatio := decimal.NewFromFloat(info.GroupRatio)
modelRatio := decimal.NewFromFloat(info.ModelRatio) modelRatio := decimal.NewFromFloat(info.ModelRatio)
...@@ -94,18 +94,18 @@ func PreWssConsumeQuota(ctx *gin.Context, relayInfo *relaycommon.RelayInfo, usag ...@@ -94,18 +94,18 @@ func PreWssConsumeQuota(ctx *gin.Context, relayInfo *relaycommon.RelayInfo, usag
textOutTokens := usage.OutputTokenDetails.TextTokens textOutTokens := usage.OutputTokenDetails.TextTokens
audioInputTokens := usage.InputTokenDetails.AudioTokens audioInputTokens := usage.InputTokenDetails.AudioTokens
audioOutTokens := usage.OutputTokenDetails.AudioTokens audioOutTokens := usage.OutputTokenDetails.AudioTokens
groupRatio := setting.GetGroupRatio(relayInfo.Group) groupRatio := ratio_setting.GetGroupRatio(relayInfo.Group)
modelRatio, _ := operation_setting.GetModelRatio(modelName) modelRatio, _ := ratio_setting.GetModelRatio(modelName)
autoGroup, exists := ctx.Get("auto_group") autoGroup, exists := ctx.Get("auto_group")
if exists { if exists {
groupRatio = setting.GetGroupRatio(autoGroup.(string)) groupRatio = ratio_setting.GetGroupRatio(autoGroup.(string))
log.Printf("final group ratio: %f", groupRatio) log.Printf("final group ratio: %f", groupRatio)
relayInfo.Group = autoGroup.(string) relayInfo.Group = autoGroup.(string)
} }
actualGroupRatio := groupRatio actualGroupRatio := groupRatio
userGroupRatio, ok := setting.GetGroupGroupRatio(relayInfo.UserGroup, relayInfo.Group) userGroupRatio, ok := ratio_setting.GetGroupGroupRatio(relayInfo.UserGroup, relayInfo.Group)
if ok { if ok {
actualGroupRatio = userGroupRatio actualGroupRatio = userGroupRatio
} }
...@@ -154,9 +154,9 @@ func PostWssConsumeQuota(ctx *gin.Context, relayInfo *relaycommon.RelayInfo, mod ...@@ -154,9 +154,9 @@ func PostWssConsumeQuota(ctx *gin.Context, relayInfo *relaycommon.RelayInfo, mod
audioOutTokens := usage.OutputTokenDetails.AudioTokens audioOutTokens := usage.OutputTokenDetails.AudioTokens
tokenName := ctx.GetString("token_name") tokenName := ctx.GetString("token_name")
completionRatio := decimal.NewFromFloat(operation_setting.GetCompletionRatio(modelName)) completionRatio := decimal.NewFromFloat(ratio_setting.GetCompletionRatio(modelName))
audioRatio := decimal.NewFromFloat(operation_setting.GetAudioRatio(relayInfo.OriginModelName)) audioRatio := decimal.NewFromFloat(ratio_setting.GetAudioRatio(relayInfo.OriginModelName))
audioCompletionRatio := decimal.NewFromFloat(operation_setting.GetAudioCompletionRatio(modelName)) audioCompletionRatio := decimal.NewFromFloat(ratio_setting.GetAudioCompletionRatio(modelName))
modelRatio := priceData.ModelRatio modelRatio := priceData.ModelRatio
groupRatio := priceData.GroupRatioInfo.GroupRatio groupRatio := priceData.GroupRatioInfo.GroupRatio
...@@ -289,9 +289,9 @@ func PostAudioConsumeQuota(ctx *gin.Context, relayInfo *relaycommon.RelayInfo, ...@@ -289,9 +289,9 @@ func PostAudioConsumeQuota(ctx *gin.Context, relayInfo *relaycommon.RelayInfo,
audioOutTokens := usage.CompletionTokenDetails.AudioTokens audioOutTokens := usage.CompletionTokenDetails.AudioTokens
tokenName := ctx.GetString("token_name") tokenName := ctx.GetString("token_name")
completionRatio := decimal.NewFromFloat(operation_setting.GetCompletionRatio(relayInfo.OriginModelName)) completionRatio := decimal.NewFromFloat(ratio_setting.GetCompletionRatio(relayInfo.OriginModelName))
audioRatio := decimal.NewFromFloat(operation_setting.GetAudioRatio(relayInfo.OriginModelName)) audioRatio := decimal.NewFromFloat(ratio_setting.GetAudioRatio(relayInfo.OriginModelName))
audioCompletionRatio := decimal.NewFromFloat(operation_setting.GetAudioCompletionRatio(relayInfo.OriginModelName)) audioCompletionRatio := decimal.NewFromFloat(ratio_setting.GetAudioCompletionRatio(relayInfo.OriginModelName))
modelRatio := priceData.ModelRatio modelRatio := priceData.ModelRatio
groupRatio := priceData.GroupRatioInfo.GroupRatio groupRatio := priceData.GroupRatioInfo.GroupRatio
......
package operation_setting package ratio_setting
import ( import (
"encoding/json" "encoding/json"
......
package setting package ratio_setting
import ( import (
"encoding/json" "encoding/json"
......
package operation_setting package ratio_setting
import ( import (
"encoding/json" "encoding/json"
"one-api/common" "one-api/common"
"one-api/setting/operation_setting"
"strings" "strings"
"sync" "sync"
) )
...@@ -366,7 +367,7 @@ func GetModelRatio(name string) (float64, bool) { ...@@ -366,7 +367,7 @@ func GetModelRatio(name string) (float64, bool) {
} }
ratio, ok := modelRatioMap[name] ratio, ok := modelRatioMap[name]
if !ok { if !ok {
return 37.5, SelfUseModeEnabled return 37.5, operation_setting.SelfUseModeEnabled
} }
return ratio, true return ratio, true
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment