diff --git a/server/initialize/router.go b/server/initialize/router.go index 5d8b65c..e21b1d4 100644 --- a/server/initialize/router.go +++ b/server/initialize/router.go @@ -119,6 +119,9 @@ func Routers() *gin.Engine { // 注册业务路由 initBizRouter(PrivateGroup, PublicGroup) + // 在根路径下注册 AI 通用接口路由(不带 /api 前缀,走 /v1/**) + router.RouterGroupApp.App.InitAiProxyRootRouter(Router) + // 前端静态文件服务(放在最后,作为兜底路由) setupFrontendRoutes(Router) diff --git a/server/router/app/ai_proxy.go b/server/router/app/ai_proxy.go index 481effd..76d27d8 100644 --- a/server/router/app/ai_proxy.go +++ b/server/router/app/ai_proxy.go @@ -8,6 +8,7 @@ import ( type AiProxyRouter struct{} +// InitAiProxyRouter 使用业务路由组(通常带有 /api 前缀),供后台管理前端调用 func (s *AiProxyRouter) InitAiProxyRouter(Router *gin.RouterGroup) { aiProxyRouter := Router.Group("v1").Use(middleware.AiAuth()) aiProxyApi := v1.ApiGroupApp.AppApiGroup.AiProxyApi @@ -17,3 +18,15 @@ func (s *AiProxyRouter) InitAiProxyRouter(Router *gin.RouterGroup) { aiProxyRouter.POST("messages", aiProxyApi.ClaudeMessages) // Claude 兼容 } } + +// InitAiProxyRootRouter 在根路径下注册 AI 相关的通用接口,路径为 /v1/** +// 这样可以对外提供标准的 OpenAI/Claude 兼容地址:/v1/models、/v1/chat/completions、/v1/messages +func (s *AiProxyRouter) InitAiProxyRootRouter(engine *gin.Engine) { + aiProxyRouter := engine.Group("/v1").Use(middleware.AiAuth()) + aiProxyApi := v1.ApiGroupApp.AppApiGroup.AiProxyApi + { + aiProxyRouter.GET("/models", aiProxyApi.ListModels) // 获取模型列表 + aiProxyRouter.POST("/chat/completions", aiProxyApi.ChatCompletions) // OpenAI 兼容 + aiProxyRouter.POST("/messages", aiProxyApi.ClaudeMessages) // Claude 兼容 + } +}