Quellcode durchsuchen

fix: model name contain / (#304)

zijiren vor 6 Monaten
Ursprung
Commit
3e471c777c

+ 2 - 1
core/controller/channel-test.go

@@ -11,6 +11,7 @@ import (
 	"net/url"
 	"slices"
 	"strconv"
+	"strings"
 	"sync"
 	"sync/atomic"
 	"time"
@@ -170,7 +171,7 @@ func TestChannel(c *gin.Context) {
 		return
 	}
 
-	modelName := c.Param("model")
+	modelName := strings.TrimPrefix(c.Param("model"), "/")
 	if modelName == "" {
 		c.JSON(http.StatusOK, middleware.APIResponse{
 			Success: false,

+ 9 - 8
core/controller/group.go

@@ -3,6 +3,7 @@ package controller
 import (
 	"net/http"
 	"strconv"
+	"strings"
 	"time"
 
 	"github.com/bytedance/sonic"
@@ -457,7 +458,7 @@ func (r *SaveGroupModelConfigRequest) ToGroupModelConfig(groupID string) model.G
 //	@Param			group	path		string							true	"Group name"
 //	@Param			data	body		[]SaveGroupModelConfigRequest	true	"Group model config information"
 //	@Success		200		{object}	middleware.APIResponse
-//	@Router			/api/group/{group}/model_configs/ [post]
+//	@Router			/api/group/{group}/model_configs [post]
 func SaveGroupModelConfigs(c *gin.Context) {
 	group := c.Param("group")
 	if group == "" {
@@ -502,7 +503,7 @@ func SaveGroupModelConfig(c *gin.Context) {
 		middleware.ErrorResponse(c, http.StatusBadRequest, "invalid parameter")
 		return
 	}
-	modelName := c.Param("model")
+	modelName := strings.TrimPrefix(c.Param("model"), "/")
 	if modelName == "" {
 		middleware.ErrorResponse(c, http.StatusBadRequest, "invalid parameter")
 		return
@@ -541,7 +542,7 @@ func DeleteGroupModelConfig(c *gin.Context) {
 		middleware.ErrorResponse(c, http.StatusBadRequest, "invalid parameter")
 		return
 	}
-	modelName := c.Param("model")
+	modelName := strings.TrimPrefix(c.Param("model"), "/")
 	if modelName == "" {
 		middleware.ErrorResponse(c, http.StatusBadRequest, "invalid parameter")
 		return
@@ -564,7 +565,7 @@ func DeleteGroupModelConfig(c *gin.Context) {
 //	@Param			group	path		string		true	"Group name"
 //	@Param			models	body		[]string	true	"Model names"
 //	@Success		200		{object}	middleware.APIResponse
-//	@Router			/api/group/{group}/model_configs/ [delete]
+//	@Router			/api/group/{group}/model_configs [delete]
 func DeleteGroupModelConfigs(c *gin.Context) {
 	group := c.Param("group")
 	if group == "" {
@@ -594,7 +595,7 @@ func DeleteGroupModelConfigs(c *gin.Context) {
 //	@Security		ApiKeyAuth
 //	@Param			group	path		string	true	"Group name"
 //	@Success		200		{object}	middleware.APIResponse{data=[]model.GroupModelConfig}
-//	@Router			/api/group/{group}/model_configs/ [get]
+//	@Router			/api/group/{group}/model_configs [get]
 func GetGroupModelConfigs(c *gin.Context) {
 	group := c.Param("group")
 	if group == "" {
@@ -626,7 +627,7 @@ func GetGroupModelConfig(c *gin.Context) {
 		middleware.ErrorResponse(c, http.StatusBadRequest, "invalid parameter")
 		return
 	}
-	modelName := c.Param("model")
+	modelName := strings.TrimPrefix(c.Param("model"), "/")
 	if modelName == "" {
 		middleware.ErrorResponse(c, http.StatusBadRequest, "invalid parameter")
 		return
@@ -658,7 +659,7 @@ func UpdateGroupModelConfig(c *gin.Context) {
 		middleware.ErrorResponse(c, http.StatusBadRequest, "invalid parameter")
 		return
 	}
-	modelName := c.Param("model")
+	modelName := strings.TrimPrefix(c.Param("model"), "/")
 	if modelName == "" {
 		middleware.ErrorResponse(c, http.StatusBadRequest, "invalid parameter")
 		return
@@ -691,7 +692,7 @@ func UpdateGroupModelConfig(c *gin.Context) {
 //	@Param			group	path		string							true	"Group name"
 //	@Param			data	body		[]SaveGroupModelConfigRequest	true	"Group model config information"
 //	@Success		200		{object}	middleware.APIResponse
-//	@Router			/api/group/{group}/model_configs/ [put]
+//	@Router			/api/group/{group}/model_configs [put]
 func UpdateGroupModelConfigs(c *gin.Context) {
 	group := c.Param("group")
 	if group == "" {

+ 3 - 2
core/controller/modelconfig.go

@@ -2,6 +2,7 @@ package controller
 
 import (
 	"net/http"
+	"strings"
 
 	"github.com/gin-gonic/gin"
 	"github.com/labring/aiproxy/core/controller/utils"
@@ -177,7 +178,7 @@ func SaveModelConfig(c *gin.Context) {
 //	@Success		200		{object}	middleware.APIResponse
 //	@Router			/api/model_config/{model} [delete]
 func DeleteModelConfig(c *gin.Context) {
-	_model := c.Param("model")
+	_model := strings.TrimPrefix(c.Param("model"), "/")
 	err := model.DeleteModelConfig(_model)
 	if err != nil {
 		middleware.ErrorResponse(c, http.StatusInternalServerError, err.Error())
@@ -222,7 +223,7 @@ func DeleteModelConfigs(c *gin.Context) {
 //	@Success		200		{object}	middleware.APIResponse{data=model.ModelConfig}
 //	@Router			/api/model_config/{model} [get]
 func GetModelConfig(c *gin.Context) {
-	_model := c.Param("model")
+	_model := strings.TrimPrefix(c.Param("model"), "/")
 	config, err := model.GetModelConfig(_model)
 	if err != nil {
 		middleware.ErrorResponse(c, http.StatusInternalServerError, err.Error())

+ 2 - 1
core/controller/monitor.go

@@ -3,6 +3,7 @@ package controller
 import (
 	"net/http"
 	"strconv"
+	"strings"
 
 	"github.com/gin-gonic/gin"
 	"github.com/labring/aiproxy/core/middleware"
@@ -105,7 +106,7 @@ func ClearChannelAllModelErrors(c *gin.Context) {
 //	@Success		200		{object}	middleware.APIResponse
 //	@Router			/api/monitor/{id}/{model} [delete]
 func ClearChannelModelErrors(c *gin.Context) {
-	model := c.Param("model")
+	model := strings.TrimPrefix(c.Param("model"), "/")
 	channelID, err := strconv.ParseInt(c.Param("id"), 10, 64)
 	if err != nil {
 		middleware.ErrorResponse(c, http.StatusBadRequest, "Invalid channel ID")

+ 1 - 1
core/docs/docs.go

@@ -1866,7 +1866,7 @@ const docTemplate = `{
                 }
             }
         },
-        "/api/group/{group}/model_configs/": {
+        "/api/group/{group}/model_configs": {
             "get": {
                 "security": [
                     {

+ 1 - 1
core/docs/swagger.json

@@ -1857,7 +1857,7 @@
                 }
             }
         },
-        "/api/group/{group}/model_configs/": {
+        "/api/group/{group}/model_configs": {
             "get": {
                 "security": [
                     {

+ 1 - 1
core/docs/swagger.yaml

@@ -3361,7 +3361,7 @@ paths:
       summary: Update group model config
       tags:
       - group
-  /api/group/{group}/model_configs/:
+  /api/group/{group}/model_configs:
     delete:
       description: Delete group model configs
       parameters:

+ 12 - 12
core/router/api.go

@@ -66,14 +66,14 @@ func SetAPIRouter(router *gin.Engine) {
 
 			groupModelConfigRoute := groupRoute.Group("/:group/model_config")
 			{
-				groupModelConfigRoute.GET("/", controller.GetGroupModelConfigs)
-				groupModelConfigRoute.POST("/", controller.SaveGroupModelConfigs)
-				groupModelConfigRoute.PUT("/", controller.UpdateGroupModelConfigs)
-				groupModelConfigRoute.DELETE("/", controller.DeleteGroupModelConfigs)
-				groupModelConfigRoute.POST("/:model", controller.SaveGroupModelConfig)
-				groupModelConfigRoute.PUT("/:model", controller.UpdateGroupModelConfig)
-				groupModelConfigRoute.DELETE("/:model", controller.DeleteGroupModelConfig)
-				groupModelConfigRoute.GET("/:model", controller.GetGroupModelConfig)
+				groupModelConfigRoute.GET("", controller.GetGroupModelConfigs)
+				groupModelConfigRoute.POST("", controller.SaveGroupModelConfigs)
+				groupModelConfigRoute.PUT("", controller.UpdateGroupModelConfigs)
+				groupModelConfigRoute.DELETE("", controller.DeleteGroupModelConfigs)
+				groupModelConfigRoute.POST("/*model", controller.SaveGroupModelConfig)
+				groupModelConfigRoute.PUT("/*model", controller.UpdateGroupModelConfig)
+				groupModelConfigRoute.DELETE("/*model", controller.DeleteGroupModelConfig)
+				groupModelConfigRoute.GET("/*model", controller.GetGroupModelConfig)
 			}
 
 			groupMcpRoute := groupRoute.Group("/:group/mcp")
@@ -117,7 +117,7 @@ func SetAPIRouter(router *gin.Engine) {
 			channelRoute.POST("/:id/status", controller.UpdateChannelStatus)
 			channelRoute.DELETE("/:id", controller.DeleteChannel)
 			channelRoute.GET("/:id/test", controller.TestChannelModels)
-			channelRoute.GET("/:id/test/:model", controller.TestChannel)
+			channelRoute.GET("/:id/test/*model", controller.TestChannel)
 			channelRoute.GET("/:id/update_balance", controller.UpdateChannelBalance)
 		}
 
@@ -171,9 +171,9 @@ func SetAPIRouter(router *gin.Engine) {
 		}
 		modelConfigRoute := apiRouter.Group("/model_config")
 		{
-			modelConfigRoute.GET("/:model", controller.GetModelConfig)
+			modelConfigRoute.GET("/*model", controller.GetModelConfig)
 			modelConfigRoute.POST("/", controller.SaveModelConfig)
-			modelConfigRoute.DELETE("/:model", controller.DeleteModelConfig)
+			modelConfigRoute.DELETE("/*model", controller.DeleteModelConfig)
 		}
 
 		monitorRoute := apiRouter.Group("/monitor")
@@ -182,7 +182,7 @@ func SetAPIRouter(router *gin.Engine) {
 			monitorRoute.GET("/:id", controller.GetChannelModelErrorRates)
 			monitorRoute.DELETE("/", controller.ClearAllModelErrors)
 			monitorRoute.DELETE("/:id", controller.ClearChannelAllModelErrors)
-			monitorRoute.DELETE("/:id/:model", controller.ClearChannelModelErrors)
+			monitorRoute.DELETE("/:id/*model", controller.ClearChannelModelErrors)
 			monitorRoute.GET("/models", controller.GetModelsErrorRate)
 			monitorRoute.GET("/banned_channels", controller.GetAllBannedModelChannels)
 		}