Просмотр исходного кода

feat(task-pricing): expose model pricing rules api

master
fengsilin 3 недель назад
Родитель
Сommit
285323d765
2 измененных файлов: 60 добавлений и 0 удалений
  1. +56
    -0
      controller/model_pricing_controller.go
  2. +4
    -0
      router/api-router.go

+ 56
- 0
controller/model_pricing_controller.go Просмотреть файл

@@ -0,0 +1,56 @@
package controller

import (
"net/http"

"github.com/QuantumNous/new-api/common"
"github.com/QuantumNous/new-api/model"
"github.com/QuantumNous/new-api/setting/ratio_setting"
"github.com/QuantumNous/new-api/types"
"github.com/gin-gonic/gin"
)

func GetModelPricingRules(c *gin.Context) {
common.ApiSuccess(c, ratio_setting.GetPricingConfigCopy())
}

func GetModelPricingRule(c *gin.Context) {
modelName := c.Param("model")
cfg := ratio_setting.GetPricingConfig(modelName)
if cfg == nil {
c.JSON(http.StatusNotFound, gin.H{"success": false, "message": "model pricing rule not found"})
return
}
common.ApiSuccess(c, cfg)
}

func UpdateModelPricingRule(c *gin.Context) {
modelName := c.Param("model")
var cfg types.PricingConfig
if err := common.DecodeJson(c.Request.Body, &cfg); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"success": false, "message": err.Error()})
return
}
if err := ratio_setting.SetPricingConfig(modelName, &cfg); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"success": false, "message": err.Error()})
return
}
if err := model.UpdateOption(ratio_setting.ModelPricingRulesOptionKey, ratio_setting.ModelPricingRules2JSONString()); err != nil {
c.JSON(http.StatusInternalServerError, gin.H{"success": false, "message": err.Error()})
return
}
common.ApiSuccess(c, ratio_setting.GetPricingConfig(modelName))
}

func DeleteModelPricingRule(c *gin.Context) {
modelName := c.Param("model")
if err := ratio_setting.DeletePricingConfig(modelName); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"success": false, "message": err.Error()})
return
}
if err := model.UpdateOption(ratio_setting.ModelPricingRulesOptionKey, ratio_setting.ModelPricingRules2JSONString()); err != nil {
c.JSON(http.StatusInternalServerError, gin.H{"success": false, "message": err.Error()})
return
}
common.ApiSuccess(c, nil)
}

+ 4
- 0
router/api-router.go Просмотреть файл

@@ -185,6 +185,10 @@ func SetApiRouter(router *gin.Engine) {
{ {
optionRoute.GET("/", controller.GetOptions) optionRoute.GET("/", controller.GetOptions)
optionRoute.PUT("/", controller.UpdateOption) optionRoute.PUT("/", controller.UpdateOption)
optionRoute.GET("/model_pricing", controller.GetModelPricingRules)
optionRoute.GET("/model_pricing/:model", controller.GetModelPricingRule)
optionRoute.PUT("/model_pricing/:model", controller.UpdateModelPricingRule)
optionRoute.DELETE("/model_pricing/:model", controller.DeleteModelPricingRule)
optionRoute.GET("/channel_affinity_cache", controller.GetChannelAffinityCacheStats) optionRoute.GET("/channel_affinity_cache", controller.GetChannelAffinityCacheStats)
optionRoute.DELETE("/channel_affinity_cache", controller.ClearChannelAffinityCache) optionRoute.DELETE("/channel_affinity_cache", controller.ClearChannelAffinityCache)
optionRoute.POST("/rest_model_ratio", controller.ResetModelRatio) optionRoute.POST("/rest_model_ratio", controller.ResetModelRatio)


Загрузка…
Отмена
Сохранить