From 9d85e8f79df309a2a0647b018582eac9826b59cc Mon Sep 17 00:00:00 2001 From: quzard <1191890118@qq.com> Date: Sat, 17 Jun 2023 09:58:08 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E4=B8=8A=E6=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- controller/relay.go | 38 +++++++++++++++++++++++++------------- router/web-router.go | 6 ++++++ 2 files changed, 31 insertions(+), 13 deletions(-) diff --git a/controller/relay.go b/controller/relay.go index 4db55b75..1b7cee5a 100644 --- a/controller/relay.go +++ b/controller/relay.go @@ -30,27 +30,27 @@ const ( // https://platform.openai.com/docs/api-reference/chat type GeneralOpenAIRequest struct { - Model string `json:"model"` - Messages []Message `json:"messages"` - Prompt any `json:"prompt"` - Stream bool `json:"stream"` + Model string `json:"model"` + Messages []Message `json:"messages"` + Prompt any `json:"prompt"` + Stream bool `json:"stream"` //MaxTokens int `json:"max_tokens"` - Temperature float64 `json:"temperature"` - TopP float64 `json:"top_p"` - N int `json:"n"` - Input any `json:"input"` + Temperature float64 `json:"temperature"` + TopP float64 `json:"top_p"` + N int `json:"n"` + Input any `json:"input"` } type ChatRequest struct { - Model string `json:"model"` - Messages []Message `json:"messages"` + Model string `json:"model"` + Messages []Message `json:"messages"` //MaxTokens int `json:"max_tokens"` } type TextRequest struct { - Model string `json:"model"` - Messages []Message `json:"messages"` - Prompt string `json:"prompt"` + Model string `json:"model"` + Messages []Message `json:"messages"` + Prompt string `json:"prompt"` //MaxTokens int `json:"max_tokens"` //Stream bool `json:"stream"` } @@ -398,3 +398,15 @@ func RelayNotImplemented(c *gin.Context) { "error": err, }) } + +func RelayNotFound(c *gin.Context) { + err := OpenAIError{ + Message: fmt.Sprintf("API not found: %s:%s", c.Request.Method, c.Request.URL.Path), + Type: "one_api_error", + Param: "", + Code: "api_not_found", + } + c.JSON(http.StatusOK, gin.H{ + "error": err, + }) +} diff --git a/router/web-router.go b/router/web-router.go index 8f6d1ac4..19fc0c04 100644 --- a/router/web-router.go +++ b/router/web-router.go @@ -7,7 +7,9 @@ import ( "github.com/gin-gonic/gin" "net/http" "one-api/common" + "one-api/controller" "one-api/middleware" + "strings" ) func SetWebRouter(router *gin.Engine, buildFS embed.FS, indexPage []byte) { @@ -16,6 +18,10 @@ func SetWebRouter(router *gin.Engine, buildFS embed.FS, indexPage []byte) { router.Use(middleware.Cache()) router.Use(static.Serve("/", common.EmbedFolder(buildFS, "web/build"))) router.NoRoute(func(c *gin.Context) { + if strings.HasPrefix(c.Request.RequestURI, "/v1") { + controller.RelayNotFound(c) + return + } c.Header("Cache-Control", "no-cache") c.Data(http.StatusOK, "text/html; charset=utf-8", indexPage) })