🎨 优化模型配置 && 新增apikey功能 && 完善通用接口

This commit is contained in:
2026-03-03 17:13:24 +08:00
parent 2714e63d2a
commit 7dae1a6e2b
46 changed files with 3063 additions and 278 deletions

View File

@@ -0,0 +1,20 @@
package app
import (
v1 "git.echol.cn/loser/ai_proxy/server/api/v1"
"github.com/gin-gonic/gin"
)
type AiApiKeyRouter struct{}
func (s *AiApiKeyRouter) InitAiApiKeyRouter(Router *gin.RouterGroup) {
aiApiKeyRouter := Router.Group("aiApiKey")
aiApiKeyApi := v1.ApiGroupApp.AppApiGroup.AiApiKeyApi
{
aiApiKeyRouter.POST("createAiApiKey", aiApiKeyApi.CreateAiApiKey)
aiApiKeyRouter.DELETE("deleteAiApiKey", aiApiKeyApi.DeleteAiApiKey)
aiApiKeyRouter.PUT("updateAiApiKey", aiApiKeyApi.UpdateAiApiKey)
aiApiKeyRouter.GET("findAiApiKey", aiApiKeyApi.FindAiApiKey)
aiApiKeyRouter.GET("getAiApiKeyList", aiApiKeyApi.GetAiApiKeyList)
}
}

View File

@@ -0,0 +1,21 @@
package app
import (
v1 "git.echol.cn/loser/ai_proxy/server/api/v1"
"github.com/gin-gonic/gin"
)
type AiModelRouter struct{}
func (s *AiModelRouter) InitAiModelRouter(Router *gin.RouterGroup) {
aiModelRouter := Router.Group("aiModel")
aiModelApi := v1.ApiGroupApp.AppApiGroup.AiModelApi
{
aiModelRouter.POST("createAiModel", aiModelApi.CreateAiModel)
aiModelRouter.DELETE("deleteAiModel", aiModelApi.DeleteAiModel)
aiModelRouter.PUT("updateAiModel", aiModelApi.UpdateAiModel)
aiModelRouter.GET("findAiModel", aiModelApi.FindAiModel)
aiModelRouter.GET("getAiModelList", aiModelApi.GetAiModelList)
aiModelRouter.POST("syncProviderModels", aiModelApi.SyncProviderModels)
}
}

View File

@@ -16,6 +16,7 @@ func (s *AiPresetRouter) InitAiPresetRouter(Router *gin.RouterGroup) {
aiPresetRouter.PUT("updateAiPreset", aiPresetApi.UpdateAiPreset)
aiPresetRouter.GET("findAiPreset", aiPresetApi.FindAiPreset)
aiPresetRouter.GET("getAiPresetList", aiPresetApi.GetAiPresetList)
aiPresetRouter.POST("importAiPreset", aiPresetApi.ImportAiPreset)
aiPresetRouter.POST("importAiPreset", aiPresetApi.ImportAiPreset) // JSON粘贴导入
aiPresetRouter.POST("importAiPresetFile", aiPresetApi.ImportAiPresetFile) // 文件上传导入
}
}

View File

@@ -1,20 +0,0 @@
package app
import (
v1 "git.echol.cn/loser/ai_proxy/server/api/v1"
"github.com/gin-gonic/gin"
)
type AiPresetBindingRouter struct{}
func (s *AiPresetBindingRouter) InitAiPresetBindingRouter(Router *gin.RouterGroup) {
aiPresetBindingRouter := Router.Group("aiPresetBinding")
aiPresetBindingApi := v1.ApiGroupApp.AppApiGroup.AiPresetBindingApi
{
aiPresetBindingRouter.POST("createAiPresetBinding", aiPresetBindingApi.CreateAiPresetBinding)
aiPresetBindingRouter.DELETE("deleteAiPresetBinding", aiPresetBindingApi.DeleteAiPresetBinding)
aiPresetBindingRouter.PUT("updateAiPresetBinding", aiPresetBindingApi.UpdateAiPresetBinding)
aiPresetBindingRouter.GET("findAiPresetBinding", aiPresetBindingApi.FindAiPresetBinding)
aiPresetBindingRouter.GET("getAiPresetBindingList", aiPresetBindingApi.GetAiPresetBindingList)
}
}

View File

@@ -2,15 +2,18 @@ package app
import (
v1 "git.echol.cn/loser/ai_proxy/server/api/v1"
"git.echol.cn/loser/ai_proxy/server/middleware"
"github.com/gin-gonic/gin"
)
type AiProxyRouter struct{}
func (s *AiProxyRouter) InitAiProxyRouter(Router *gin.RouterGroup) {
aiProxyRouter := Router.Group("v1")
aiProxyRouter := Router.Group("v1").Use(middleware.AiAuth())
aiProxyApi := v1.ApiGroupApp.AppApiGroup.AiProxyApi
{
aiProxyRouter.POST("chat/completions", aiProxyApi.ChatCompletions)
aiProxyRouter.GET("models", aiProxyApi.ListModels) // 获取模型列表
aiProxyRouter.POST("chat/completions", aiProxyApi.ChatCompletions) // OpenAI 兼容
aiProxyRouter.POST("messages", aiProxyApi.ClaudeMessages) // Claude 兼容
}
}

View File

@@ -4,5 +4,6 @@ type RouterGroup struct {
AiProxyRouter
AiPresetRouter
AiProviderRouter
AiPresetBindingRouter
AiApiKeyRouter
AiModelRouter
}