modelconfig.go 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232
  1. package controller
  2. import (
  3. "net/http"
  4. "github.com/gin-gonic/gin"
  5. "github.com/labring/aiproxy/core/controller/utils"
  6. "github.com/labring/aiproxy/core/middleware"
  7. "github.com/labring/aiproxy/core/model"
  8. )
  9. // GetModelConfigs godoc
  10. //
  11. // @Summary Get model configs
  12. // @Description Returns a list of model configs with pagination
  13. // @Tags modelconfig
  14. // @Produce json
  15. // @Security ApiKeyAuth
  16. // @Param model query string false "Model name"
  17. // @Success 200 {object} middleware.APIResponse{data=map[string]any{configs=[]model.ModelConfig,total=int}}
  18. // @Router /api/model_configs/ [get]
  19. func GetModelConfigs(c *gin.Context) {
  20. page, perPage := utils.ParsePageParams(c)
  21. _model := c.Query("model")
  22. configs, total, err := model.GetModelConfigs(page, perPage, _model)
  23. if err != nil {
  24. middleware.ErrorResponse(c, http.StatusInternalServerError, err.Error())
  25. return
  26. }
  27. middleware.SuccessResponse(c, gin.H{
  28. "configs": configs,
  29. "total": total,
  30. })
  31. }
  32. // GetAllModelConfigs godoc
  33. //
  34. // @Summary Get all model configs
  35. // @Description Returns a list of all model configs
  36. // @Tags modelconfig
  37. // @Produce json
  38. // @Security ApiKeyAuth
  39. // @Success 200 {object} middleware.APIResponse{data=[]model.ModelConfig}
  40. // @Router /api/model_configs/all [get]
  41. func GetAllModelConfigs(c *gin.Context) {
  42. configs, err := model.GetAllModelConfigs()
  43. if err != nil {
  44. middleware.ErrorResponse(c, http.StatusInternalServerError, err.Error())
  45. return
  46. }
  47. middleware.SuccessResponse(c, configs)
  48. }
  49. type GetModelConfigsByModelsContainsRequest struct {
  50. Models []string `json:"models"`
  51. }
  52. // GetModelConfigsByModelsContains godoc
  53. //
  54. // @Summary Get model configs by models contains
  55. // @Description Returns a list of model configs by models contains
  56. // @Tags modelconfig
  57. // @Produce json
  58. // @Security ApiKeyAuth
  59. // @Param models body GetModelConfigsByModelsContainsRequest true "Models"
  60. // @Success 200 {object} middleware.APIResponse{data=[]model.ModelConfig}
  61. // @Router /api/model_configs/contains [post]
  62. func GetModelConfigsByModelsContains(c *gin.Context) {
  63. request := GetModelConfigsByModelsContainsRequest{}
  64. err := c.ShouldBindJSON(&request)
  65. if err != nil {
  66. middleware.ErrorResponse(c, http.StatusBadRequest, err.Error())
  67. return
  68. }
  69. configs, err := model.GetModelConfigsByModels(request.Models)
  70. if err != nil {
  71. middleware.ErrorResponse(c, http.StatusInternalServerError, err.Error())
  72. return
  73. }
  74. middleware.SuccessResponse(c, configs)
  75. }
  76. // SearchModelConfigs godoc
  77. //
  78. // @Summary Search model configs
  79. // @Description Returns a list of model configs by keyword
  80. // @Tags modelconfig
  81. // @Produce json
  82. // @Security ApiKeyAuth
  83. // @Param keyword query string false "Keyword"
  84. // @Param model query string false "Model name"
  85. // @Param owner query string false "Owner"
  86. // @Param page query int false "Page"
  87. // @Param per_page query int false "Per page"
  88. // @Success 200 {object} middleware.APIResponse{data=map[string]any{configs=[]model.ModelConfig,total=int}}
  89. // @Router /api/model_configs/search [get]
  90. func SearchModelConfigs(c *gin.Context) {
  91. keyword := c.Query("keyword")
  92. page, perPage := utils.ParsePageParams(c)
  93. _model := c.Query("model")
  94. owner := c.Query("owner")
  95. configs, total, err := model.SearchModelConfigs(
  96. keyword,
  97. page,
  98. perPage,
  99. _model,
  100. model.ModelOwner(owner),
  101. )
  102. if err != nil {
  103. middleware.ErrorResponse(c, http.StatusInternalServerError, err.Error())
  104. return
  105. }
  106. middleware.SuccessResponse(c, gin.H{
  107. "configs": configs,
  108. "total": total,
  109. })
  110. }
  111. type SaveModelConfigsRequest = model.ModelConfig
  112. // SaveModelConfigs godoc
  113. //
  114. // @Summary Save model configs
  115. // @Description Saves a list of model configs
  116. // @Tags modelconfig
  117. // @Produce json
  118. // @Security ApiKeyAuth
  119. // @Param configs body []SaveModelConfigsRequest true "Model configs"
  120. // @Success 200 {object} middleware.APIResponse
  121. // @Router /api/model_configs/ [post]
  122. func SaveModelConfigs(c *gin.Context) {
  123. var configs []SaveModelConfigsRequest
  124. if err := c.ShouldBindJSON(&configs); err != nil {
  125. middleware.ErrorResponse(c, http.StatusBadRequest, err.Error())
  126. return
  127. }
  128. err := model.SaveModelConfigs(configs)
  129. if err != nil {
  130. middleware.ErrorResponse(c, http.StatusInternalServerError, err.Error())
  131. return
  132. }
  133. middleware.SuccessResponse(c, nil)
  134. }
  135. // SaveModelConfig godoc
  136. //
  137. // @Summary Save model config
  138. // @Description Saves a model config
  139. // @Tags modelconfig
  140. // @Produce json
  141. // @Security ApiKeyAuth
  142. // @Param config body SaveModelConfigsRequest true "Model config"
  143. // @Success 200 {object} middleware.APIResponse
  144. // @Router /api/model_config/ [post]
  145. func SaveModelConfig(c *gin.Context) {
  146. var config SaveModelConfigsRequest
  147. if err := c.ShouldBindJSON(&config); err != nil {
  148. middleware.ErrorResponse(c, http.StatusBadRequest, err.Error())
  149. return
  150. }
  151. err := model.SaveModelConfig(config)
  152. if err != nil {
  153. middleware.ErrorResponse(c, http.StatusInternalServerError, err.Error())
  154. return
  155. }
  156. middleware.SuccessResponse(c, nil)
  157. }
  158. // DeleteModelConfig godoc
  159. //
  160. // @Summary Delete model config
  161. // @Description Deletes a model config
  162. // @Tags modelconfig
  163. // @Produce json
  164. // @Security ApiKeyAuth
  165. // @Param model path string true "Model name"
  166. // @Success 200 {object} middleware.APIResponse
  167. // @Router /api/model_config/{model} [delete]
  168. func DeleteModelConfig(c *gin.Context) {
  169. _model := c.Param("model")
  170. err := model.DeleteModelConfig(_model)
  171. if err != nil {
  172. middleware.ErrorResponse(c, http.StatusInternalServerError, err.Error())
  173. return
  174. }
  175. middleware.SuccessResponse(c, nil)
  176. }
  177. // DeleteModelConfigs godoc
  178. //
  179. // @Summary Delete model configs
  180. // @Description Deletes a list of model configs
  181. // @Tags modelconfig
  182. // @Produce json
  183. // @Security ApiKeyAuth
  184. // @Param models body []string true "Model names"
  185. // @Success 200 {object} middleware.APIResponse
  186. // @Router /api/model_configs/batch_delete [post]
  187. func DeleteModelConfigs(c *gin.Context) {
  188. models := []string{}
  189. err := c.ShouldBindJSON(&models)
  190. if err != nil {
  191. middleware.ErrorResponse(c, http.StatusBadRequest, err.Error())
  192. return
  193. }
  194. err = model.DeleteModelConfigsByModels(models)
  195. if err != nil {
  196. middleware.ErrorResponse(c, http.StatusInternalServerError, err.Error())
  197. return
  198. }
  199. middleware.SuccessResponse(c, nil)
  200. }
  201. // GetModelConfig godoc
  202. //
  203. // @Summary Get model config
  204. // @Description Returns a model config
  205. // @Tags modelconfig
  206. // @Produce json
  207. // @Security ApiKeyAuth
  208. // @Param model path string true "Model name"
  209. // @Success 200 {object} middleware.APIResponse{data=model.ModelConfig}
  210. // @Router /api/model_config/{model} [get]
  211. func GetModelConfig(c *gin.Context) {
  212. _model := c.Param("model")
  213. config, err := model.GetModelConfig(_model)
  214. if err != nil {
  215. middleware.ErrorResponse(c, http.StatusInternalServerError, err.Error())
  216. return
  217. }
  218. middleware.SuccessResponse(c, config)
  219. }