From dce8bbe1cadf978a780cd42456faaf52195ce590 Mon Sep 17 00:00:00 2001 From: mrhaoji Date: Mon, 24 Jul 2023 22:28:16 +0800 Subject: [PATCH 1/6] fix: relay router typo for List models (#320) via: https://platform.openai.com/docs/api-reference/models/list --- router/relay-router.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/router/relay-router.go b/router/relay-router.go index 0c8e9415..c3c84d8b 100644 --- a/router/relay-router.go +++ b/router/relay-router.go @@ -12,7 +12,7 @@ func SetRelayRouter(router *gin.Engine) { modelsRouter := router.Group("/v1/models") modelsRouter.Use(middleware.TokenAuth()) { - modelsRouter.GET("/", controller.ListModels) + modelsRouter.GET("", controller.ListModels) modelsRouter.GET("/:model", controller.RetrieveModel) } relayV1Router := router.Group("/v1") From 929e43ef817c40fda8e6008f3a2433cd6dccef07 Mon Sep 17 00:00:00 2001 From: mrhaoji Date: Mon, 24 Jul 2023 22:37:57 +0800 Subject: [PATCH 2/6] fix: baseURL not working in APITypePaLM (#317) * fix: baseURL not working in APITypePaLM * chore: use the same logic as claude --------- Co-authored-by: JustSong --- controller/relay-text.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/controller/relay-text.go b/controller/relay-text.go index 8dfdf6e1..25a10679 100644 --- a/controller/relay-text.go +++ b/controller/relay-text.go @@ -140,6 +140,9 @@ func relayTextHelper(c *gin.Context, relayMode int) *OpenAIErrorWithStatusCode { fullRequestURL += "?access_token=" + apiKey // TODO: access token expire in 30 days case APITypePaLM: fullRequestURL = "https://generativelanguage.googleapis.com/v1beta2/models/chat-bison-001:generateMessage" + if baseURL != "" { + fullRequestURL = fmt.Sprintf("%s/v1beta2/models/chat-bison-001:generateMessage", baseURL) + } apiKey := c.Request.Header.Get("Authorization") apiKey = strings.TrimPrefix(apiKey, "Bearer ") fullRequestURL += "?key=" + apiKey From c134604cee3fed967165ffe7f879a980cf235d1f Mon Sep 17 00:00:00 2001 From: JustSong Date: Mon, 24 Jul 2023 23:34:14 +0800 Subject: [PATCH 3/6] fix: use channel type to determine api type (close #321) --- controller/relay-text.go | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/controller/relay-text.go b/controller/relay-text.go index 25a10679..52e10f2b 100644 --- a/controller/relay-text.go +++ b/controller/relay-text.go @@ -85,13 +85,14 @@ func relayTextHelper(c *gin.Context, relayMode int) *OpenAIErrorWithStatusCode { } } apiType := APITypeOpenAI - if strings.HasPrefix(textRequest.Model, "claude") { + switch channelType { + case common.ChannelTypeAnthropic: apiType = APITypeClaude - } else if strings.HasPrefix(textRequest.Model, "ERNIE") { + case common.ChannelTypeBaidu: apiType = APITypeBaidu - } else if strings.HasPrefix(textRequest.Model, "PaLM") { + case common.ChannelTypePaLM: apiType = APITypePaLM - } else if strings.HasPrefix(textRequest.Model, "chatglm_") { + case common.ChannelTypeZhipu: apiType = APITypeZhipu } baseURL := common.ChannelBaseURLs[channelType] From 0a39521a3d77e6ddcf2f4bf62a652499f3c68184 Mon Sep 17 00:00:00 2001 From: JustSong Date: Thu, 27 Jul 2023 23:16:11 +0800 Subject: [PATCH 4/6] fix: convert system message to user message (close #328) --- controller/relay-baidu.go | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/controller/relay-baidu.go b/controller/relay-baidu.go index e82f4904..4267757d 100644 --- a/controller/relay-baidu.go +++ b/controller/relay-baidu.go @@ -57,10 +57,21 @@ type BaiduChatStreamResponse struct { func requestOpenAI2Baidu(request GeneralOpenAIRequest) *BaiduChatRequest { messages := make([]BaiduMessage, 0, len(request.Messages)) for _, message := range request.Messages { - messages = append(messages, BaiduMessage{ - Role: message.Role, - Content: message.Content, - }) + if message.Role == "system" { + messages = append(messages, BaiduMessage{ + Role: "user", + Content: message.Content, + }) + messages = append(messages, BaiduMessage{ + Role: "assistant", + Content: "Okay", + }) + } else { + messages = append(messages, BaiduMessage{ + Role: message.Role, + Content: message.Content, + }) + } } return &BaiduChatRequest{ Messages: messages, From b9f6461dd424cfb2e8f527e1947b8722a42fe513 Mon Sep 17 00:00:00 2001 From: JustSong Date: Thu, 27 Jul 2023 23:26:56 +0800 Subject: [PATCH 5/6] fix: convert system message to user message for claude --- controller/relay-claude.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/controller/relay-claude.go b/controller/relay-claude.go index 22f41cef..1d67fa7b 100644 --- a/controller/relay-claude.go +++ b/controller/relay-claude.go @@ -69,11 +69,11 @@ func requestOpenAI2Claude(textRequest GeneralOpenAIRequest) *ClaudeRequest { prompt += fmt.Sprintf("\n\nHuman: %s", message.Content) } else if message.Role == "assistant" { prompt += fmt.Sprintf("\n\nAssistant: %s", message.Content) - } else { - // ignore other roles + } else if message.Role == "system" { + prompt += fmt.Sprintf("\n\nSystem: %s", message.Content) } - prompt += "\n\nAssistant:" } + prompt += "\n\nAssistant:" claudeRequest.Prompt = prompt return &claudeRequest } From d1b6f492b6f13c4b1f3d63046b721f3677e876db Mon Sep 17 00:00:00 2001 From: JustSong Date: Thu, 27 Jul 2023 23:32:00 +0800 Subject: [PATCH 6/6] fix: convert system message to user message for zhipu --- controller/relay-zhipu.go | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/controller/relay-zhipu.go b/controller/relay-zhipu.go index 349f4742..33d141c7 100644 --- a/controller/relay-zhipu.go +++ b/controller/relay-zhipu.go @@ -111,10 +111,21 @@ func getZhipuToken(apikey string) string { func requestOpenAI2Zhipu(request GeneralOpenAIRequest) *ZhipuRequest { messages := make([]ZhipuMessage, 0, len(request.Messages)) for _, message := range request.Messages { - messages = append(messages, ZhipuMessage{ - Role: message.Role, - Content: message.Content, - }) + if message.Role == "system" { + messages = append(messages, ZhipuMessage{ + Role: "system", + Content: message.Content, + }) + messages = append(messages, ZhipuMessage{ + Role: "user", + Content: "Okay", + }) + } else { + messages = append(messages, ZhipuMessage{ + Role: message.Role, + Content: message.Content, + }) + } } return &ZhipuRequest{ Prompt: messages,