modelconfig.go 6.7 KB

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