- Introduce `SelfUseModeEnabled` setting to allow flexible model ratio configuration - Update error handling to provide more informative messages when model ratios are not set - Modify pricing and relay logic to support self-use mode - Add UI toggle for enabling self-use mode in operation settings - Implement fallback mechanism for model ratios when self-use mode is enabled
64 lines
1.3 KiB
Go
64 lines
1.3 KiB
Go
package controller
|
|
|
|
import (
|
|
"github.com/gin-gonic/gin"
|
|
"one-api/model"
|
|
"one-api/setting"
|
|
)
|
|
|
|
func GetPricing(c *gin.Context) {
|
|
pricing := model.GetPricing()
|
|
userId, exists := c.Get("id")
|
|
usableGroup := map[string]string{}
|
|
groupRatio := map[string]float64{}
|
|
for s, f := range setting.GetGroupRatioCopy() {
|
|
groupRatio[s] = f
|
|
}
|
|
var group string
|
|
if exists {
|
|
user, err := model.GetUserCache(userId.(int))
|
|
if err == nil {
|
|
group = user.Group
|
|
}
|
|
}
|
|
|
|
usableGroup = setting.GetUserUsableGroups(group)
|
|
// check groupRatio contains usableGroup
|
|
for group := range setting.GetGroupRatioCopy() {
|
|
if _, ok := usableGroup[group]; !ok {
|
|
delete(groupRatio, group)
|
|
}
|
|
}
|
|
|
|
c.JSON(200, gin.H{
|
|
"success": true,
|
|
"data": pricing,
|
|
"group_ratio": groupRatio,
|
|
"usable_group": usableGroup,
|
|
})
|
|
}
|
|
|
|
func ResetModelRatio(c *gin.Context) {
|
|
defaultStr := setting.DefaultModelRatio2JSONString()
|
|
err := model.UpdateOption("ModelRatio", defaultStr)
|
|
if err != nil {
|
|
c.JSON(200, gin.H{
|
|
"success": false,
|
|
"message": err.Error(),
|
|
})
|
|
return
|
|
}
|
|
err = setting.UpdateModelRatioByJSONString(defaultStr)
|
|
if err != nil {
|
|
c.JSON(200, gin.H{
|
|
"success": false,
|
|
"message": err.Error(),
|
|
})
|
|
return
|
|
}
|
|
c.JSON(200, gin.H{
|
|
"success": true,
|
|
"message": "重置模型倍率成功",
|
|
})
|
|
}
|