api.go 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251
  1. package router
  2. import (
  3. "github.com/gin-contrib/gzip"
  4. "github.com/gin-gonic/gin"
  5. "github.com/labring/aiproxy/core/common/env"
  6. "github.com/labring/aiproxy/core/controller"
  7. mcp "github.com/labring/aiproxy/core/controller/mcp"
  8. "github.com/labring/aiproxy/core/middleware"
  9. )
  10. func SetAPIRouter(router *gin.Engine) {
  11. api := router.Group("/api")
  12. if env.Bool("GZIP_ENABLED", false) {
  13. api.Use(gzip.Gzip(gzip.DefaultCompression))
  14. }
  15. healthRouter := api.Group("")
  16. healthRouter.GET("/status", controller.GetStatus)
  17. apiRouter := api.Group("")
  18. apiRouter.Use(middleware.AdminAuth)
  19. {
  20. modelsRoute := apiRouter.Group("/models")
  21. {
  22. modelsRoute.GET("/builtin", controller.BuiltinModels)
  23. modelsRoute.GET("/builtin/channel", controller.ChannelBuiltinModels)
  24. modelsRoute.GET("/builtin/channel/:type", controller.ChannelBuiltinModelsByType)
  25. modelsRoute.GET("/enabled", controller.EnabledModels)
  26. modelsRoute.GET("/enabled/:set", controller.EnabledModelsSet)
  27. modelsRoute.GET("/sets", controller.EnabledModelSets)
  28. modelsRoute.GET("/default", controller.ChannelDefaultModelsAndMapping)
  29. modelsRoute.GET("/default/:type", controller.ChannelDefaultModelsAndMappingByType)
  30. }
  31. dashboardRoute := apiRouter.Group("/dashboard")
  32. {
  33. dashboardRoute.GET("/", controller.GetDashboard)
  34. dashboardRoute.GET("/:group", controller.GetGroupDashboard)
  35. dashboardRoute.GET("/:group/models", controller.GetGroupDashboardModels)
  36. }
  37. dashboardV2Route := apiRouter.Group("/dashboardv2")
  38. {
  39. dashboardV2Route.GET("/", controller.GetTimeSeriesModelData)
  40. dashboardV2Route.GET("/:group", controller.GetGroupTimeSeriesModelData)
  41. }
  42. groupsRoute := apiRouter.Group("/groups")
  43. {
  44. groupsRoute.GET("/", controller.GetGroups)
  45. groupsRoute.GET("/search", controller.SearchGroups)
  46. groupsRoute.POST("/batch_delete", controller.DeleteGroups)
  47. groupsRoute.POST("/batch_status", controller.UpdateGroupsStatus)
  48. groupsRoute.GET("/ip_groups", controller.GetIPGroupList)
  49. }
  50. groupRoute := apiRouter.Group("/group")
  51. {
  52. groupRoute.POST("/:group", controller.CreateGroup)
  53. groupRoute.PUT("/:group", controller.UpdateGroup)
  54. groupRoute.GET("/:group", controller.GetGroup)
  55. groupRoute.DELETE("/:group", controller.DeleteGroup)
  56. groupRoute.POST("/:group/status", controller.UpdateGroupStatus)
  57. groupRoute.POST("/:group/rpm_ratio", controller.UpdateGroupRPMRatio)
  58. groupRoute.POST("/:group/tpm_ratio", controller.UpdateGroupTPMRatio)
  59. groupModelConfigsRoute := groupRoute.Group("/:group/model_configs")
  60. {
  61. groupModelConfigsRoute.GET("/", controller.GetGroupModelConfigs)
  62. groupModelConfigsRoute.POST("/", controller.SaveGroupModelConfigs)
  63. groupModelConfigsRoute.PUT("/", controller.UpdateGroupModelConfigs)
  64. groupModelConfigsRoute.DELETE("/", controller.DeleteGroupModelConfigs)
  65. }
  66. groupModelConfigRoute := groupRoute.Group("/:group/model_config")
  67. {
  68. groupModelConfigRoute.POST("/*model", controller.SaveGroupModelConfig)
  69. groupModelConfigRoute.PUT("/*model", controller.UpdateGroupModelConfig)
  70. groupModelConfigRoute.DELETE("/*model", controller.DeleteGroupModelConfig)
  71. groupModelConfigRoute.GET("/*model", controller.GetGroupModelConfig)
  72. }
  73. groupMcpRoute := groupRoute.Group("/:group/mcp")
  74. {
  75. groupMcpRoute.GET("/", mcp.GetGroupPublicMCPs)
  76. groupMcpRoute.GET("/:id", mcp.GetGroupPublicMCPByID)
  77. }
  78. }
  79. optionRoute := apiRouter.Group("/option")
  80. {
  81. optionRoute.GET("/", controller.GetOptions)
  82. optionRoute.GET("/:key", controller.GetOption)
  83. optionRoute.PUT("/", controller.UpdateOption)
  84. optionRoute.POST("/", controller.UpdateOption)
  85. optionRoute.PUT("/:key", controller.UpdateOptionByKey)
  86. optionRoute.POST("/batch", controller.UpdateOptions)
  87. }
  88. channelsRoute := apiRouter.Group("/channels")
  89. {
  90. channelsRoute.GET("/", controller.GetChannels)
  91. channelsRoute.GET("/all", controller.GetAllChannels)
  92. channelsRoute.GET("/type_metas", controller.ChannelTypeMetas)
  93. channelsRoute.POST("/", controller.AddChannels)
  94. channelsRoute.GET("/search", controller.SearchChannels)
  95. channelsRoute.GET("/update_balance", controller.UpdateAllChannelsBalance)
  96. channelsRoute.POST("/batch_delete", controller.DeleteChannels)
  97. channelsRoute.GET("/test", controller.TestAllChannels)
  98. importRoute := channelsRoute.Group("/import")
  99. {
  100. importRoute.POST("/oneapi", controller.ImportChannelFromOneAPI)
  101. }
  102. }
  103. channelRoute := apiRouter.Group("/channel")
  104. {
  105. channelRoute.GET("/:id", controller.GetChannel)
  106. channelRoute.POST("/", controller.AddChannel)
  107. channelRoute.PUT("/:id", controller.UpdateChannel)
  108. channelRoute.POST("/:id/status", controller.UpdateChannelStatus)
  109. channelRoute.DELETE("/:id", controller.DeleteChannel)
  110. channelRoute.GET("/:id/test", controller.TestChannelModels)
  111. channelRoute.GET("/:id/test/*model", controller.TestChannel)
  112. channelRoute.GET("/:id/update_balance", controller.UpdateChannelBalance)
  113. }
  114. tokensRoute := apiRouter.Group("/tokens")
  115. {
  116. tokensRoute.GET("/", controller.GetTokens)
  117. tokensRoute.GET("/:id", controller.GetToken)
  118. tokensRoute.PUT("/:id", controller.UpdateToken)
  119. tokensRoute.POST("/:id/status", controller.UpdateTokenStatus)
  120. tokensRoute.POST("/:id/name", controller.UpdateTokenName)
  121. tokensRoute.DELETE("/:id", controller.DeleteToken)
  122. tokensRoute.GET("/search", controller.SearchTokens)
  123. tokensRoute.POST("/batch_delete", controller.DeleteTokens)
  124. }
  125. tokenRoute := apiRouter.Group("/token")
  126. {
  127. tokenRoute.GET("/:group/search", controller.SearchGroupTokens)
  128. tokenRoute.POST("/:group/batch_delete", controller.DeleteGroupTokens)
  129. tokenRoute.GET("/:group", controller.GetGroupTokens)
  130. tokenRoute.GET("/:group/:id", controller.GetGroupToken)
  131. tokenRoute.POST("/:group", controller.AddGroupToken)
  132. tokenRoute.PUT("/:group/:id", controller.UpdateGroupToken)
  133. tokenRoute.POST("/:group/:id/status", controller.UpdateGroupTokenStatus)
  134. tokenRoute.POST("/:group/:id/name", controller.UpdateGroupTokenName)
  135. tokenRoute.DELETE("/:group/:id", controller.DeleteGroupToken)
  136. }
  137. logsRoute := apiRouter.Group("/logs")
  138. {
  139. logsRoute.GET("/", controller.GetLogs)
  140. logsRoute.DELETE("/", controller.DeleteHistoryLogs)
  141. logsRoute.GET("/search", controller.SearchLogs)
  142. logsRoute.GET("/consume_error", controller.SearchConsumeError)
  143. logsRoute.GET("/detail/:log_id", controller.GetLogDetail)
  144. }
  145. logRoute := apiRouter.Group("/log")
  146. {
  147. logRoute.GET("/:group", controller.GetGroupLogs)
  148. logRoute.GET("/:group/search", controller.SearchGroupLogs)
  149. logRoute.GET("/:group/detail/:log_id", controller.GetGroupLogDetail)
  150. }
  151. modelConfigsRoute := apiRouter.Group("/model_configs")
  152. {
  153. modelConfigsRoute.GET("/", controller.GetModelConfigs)
  154. modelConfigsRoute.GET("/search", controller.SearchModelConfigs)
  155. modelConfigsRoute.GET("/all", controller.GetAllModelConfigs)
  156. modelConfigsRoute.POST("/contains", controller.GetModelConfigsByModelsContains)
  157. modelConfigsRoute.POST("/", controller.SaveModelConfigs)
  158. modelConfigsRoute.POST("/batch_delete", controller.DeleteModelConfigs)
  159. }
  160. modelConfigRoute := apiRouter.Group("/model_config")
  161. {
  162. modelConfigRoute.GET("/*model", controller.GetModelConfig)
  163. modelConfigRoute.POST("/*model", controller.SaveModelConfig)
  164. modelConfigRoute.DELETE("/*model", controller.DeleteModelConfig)
  165. }
  166. monitorRoute := apiRouter.Group("/monitor")
  167. {
  168. monitorRoute.GET("/", controller.GetAllChannelModelErrorRates)
  169. monitorRoute.GET("/:id", controller.GetChannelModelErrorRates)
  170. monitorRoute.DELETE("/", controller.ClearAllModelErrors)
  171. monitorRoute.DELETE("/:id", controller.ClearChannelAllModelErrors)
  172. monitorRoute.DELETE("/:id/*model", controller.ClearChannelModelErrors)
  173. monitorRoute.GET("/models", controller.GetModelsErrorRate)
  174. monitorRoute.GET("/banned_channels", controller.GetAllBannedModelChannels)
  175. }
  176. publicsMcpRoute := apiRouter.Group("/mcp/publics")
  177. {
  178. publicsMcpRoute.GET("/", mcp.GetPublicMCPs)
  179. publicsMcpRoute.GET("/all", mcp.GetAllPublicMCPs)
  180. publicsMcpRoute.POST("/", mcp.SavePublicMCPs)
  181. }
  182. publicMcpRoute := apiRouter.Group("/mcp/public")
  183. {
  184. publicMcpRoute.GET("/:id", mcp.GetPublicMCPByID)
  185. publicMcpRoute.POST("/", mcp.CreatePublicMCP)
  186. publicMcpRoute.POST("/:id", mcp.UpdatePublicMCP)
  187. publicMcpRoute.PUT("/:id", mcp.SavePublicMCP)
  188. publicMcpRoute.DELETE("/:id", mcp.DeletePublicMCP)
  189. publicMcpRoute.POST("/:id/status", mcp.UpdatePublicMCPStatus)
  190. publicMcpRoute.GET("/:id/group/:group/params", mcp.GetGroupPublicMCPReusingParam)
  191. publicMcpRoute.POST(
  192. "/:id/group/:group/params",
  193. mcp.SaveGroupPublicMCPReusingParam,
  194. )
  195. }
  196. groupMcpRoute := apiRouter.Group("/mcp/group")
  197. {
  198. groupMcpRoute.GET("/:group", mcp.GetGroupMCPs)
  199. groupMcpRoute.GET("/all", mcp.GetAllGroupMCPs)
  200. groupMcpRoute.GET("/:group/:id", mcp.GetGroupMCPByID)
  201. groupMcpRoute.POST("/:group", mcp.CreateGroupMCP)
  202. groupMcpRoute.PUT("/:group/:id", mcp.UpdateGroupMCP)
  203. groupMcpRoute.DELETE("/:group/:id", mcp.DeleteGroupMCP)
  204. groupMcpRoute.POST("/:group/:id/status", mcp.UpdateGroupMCPStatus)
  205. }
  206. embedMcpRoute := apiRouter.Group("/embedmcp")
  207. {
  208. embedMcpRoute.GET("/", mcp.GetEmbedMCPs)
  209. embedMcpRoute.POST("/", mcp.SaveEmbedMCP)
  210. }
  211. testEmbedMcpRoute := apiRouter.Group("/test-embedmcp")
  212. {
  213. testEmbedMcpRoute.GET("/:id/sse", mcp.TestEmbedMCPSseServer)
  214. testEmbedMcpRoute.GET("/:id", mcp.TestEmbedMCPStreamable)
  215. testEmbedMcpRoute.POST("/:id", mcp.TestEmbedMCPStreamable)
  216. testEmbedMcpRoute.DELETE("/:id", mcp.TestEmbedMCPStreamable)
  217. }
  218. testPublicMcpRoute := apiRouter.Group("/test-publicmcp")
  219. {
  220. testPublicMcpRoute.GET("/:group/:id/sse", mcp.TestPublicMCPSSEServer)
  221. }
  222. }
  223. }