Merge branch 'songquanpeng:main' into channel-stream-mode

This commit is contained in:
ckt 2023-07-28 14:53:48 +08:00 committed by GitHub
commit 43740f4079
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 42 additions and 16 deletions

View File

@ -57,10 +57,21 @@ type BaiduChatStreamResponse struct {
func requestOpenAI2Baidu(request GeneralOpenAIRequest) *BaiduChatRequest { func requestOpenAI2Baidu(request GeneralOpenAIRequest) *BaiduChatRequest {
messages := make([]BaiduMessage, 0, len(request.Messages)) messages := make([]BaiduMessage, 0, len(request.Messages))
for _, message := range request.Messages { for _, message := range request.Messages {
messages = append(messages, BaiduMessage{ if message.Role == "system" {
Role: message.Role, messages = append(messages, BaiduMessage{
Content: message.Content, 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{ return &BaiduChatRequest{
Messages: messages, Messages: messages,

View File

@ -69,11 +69,11 @@ func requestOpenAI2Claude(textRequest GeneralOpenAIRequest) *ClaudeRequest {
prompt += fmt.Sprintf("\n\nHuman: %s", message.Content) prompt += fmt.Sprintf("\n\nHuman: %s", message.Content)
} else if message.Role == "assistant" { } else if message.Role == "assistant" {
prompt += fmt.Sprintf("\n\nAssistant: %s", message.Content) prompt += fmt.Sprintf("\n\nAssistant: %s", message.Content)
} else { } else if message.Role == "system" {
// ignore other roles prompt += fmt.Sprintf("\n\nSystem: %s", message.Content)
} }
prompt += "\n\nAssistant:"
} }
prompt += "\n\nAssistant:"
claudeRequest.Prompt = prompt claudeRequest.Prompt = prompt
return &claudeRequest return &claudeRequest
} }

View File

@ -85,13 +85,14 @@ func relayTextHelper(c *gin.Context, relayMode int) *OpenAIErrorWithStatusCode {
} }
} }
apiType := APITypeOpenAI apiType := APITypeOpenAI
if strings.HasPrefix(textRequest.Model, "claude") { switch channelType {
case common.ChannelTypeAnthropic:
apiType = APITypeClaude apiType = APITypeClaude
} else if strings.HasPrefix(textRequest.Model, "ERNIE") { case common.ChannelTypeBaidu:
apiType = APITypeBaidu apiType = APITypeBaidu
} else if strings.HasPrefix(textRequest.Model, "PaLM") { case common.ChannelTypePaLM:
apiType = APITypePaLM apiType = APITypePaLM
} else if strings.HasPrefix(textRequest.Model, "chatglm_") { case common.ChannelTypeZhipu:
apiType = APITypeZhipu apiType = APITypeZhipu
} }
baseURL := common.ChannelBaseURLs[channelType] baseURL := common.ChannelBaseURLs[channelType]
@ -140,6 +141,9 @@ func relayTextHelper(c *gin.Context, relayMode int) *OpenAIErrorWithStatusCode {
fullRequestURL += "?access_token=" + apiKey // TODO: access token expire in 30 days fullRequestURL += "?access_token=" + apiKey // TODO: access token expire in 30 days
case APITypePaLM: case APITypePaLM:
fullRequestURL = "https://generativelanguage.googleapis.com/v1beta2/models/chat-bison-001:generateMessage" 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 := c.Request.Header.Get("Authorization")
apiKey = strings.TrimPrefix(apiKey, "Bearer ") apiKey = strings.TrimPrefix(apiKey, "Bearer ")
fullRequestURL += "?key=" + apiKey fullRequestURL += "?key=" + apiKey

View File

@ -111,10 +111,21 @@ func getZhipuToken(apikey string) string {
func requestOpenAI2Zhipu(request GeneralOpenAIRequest) *ZhipuRequest { func requestOpenAI2Zhipu(request GeneralOpenAIRequest) *ZhipuRequest {
messages := make([]ZhipuMessage, 0, len(request.Messages)) messages := make([]ZhipuMessage, 0, len(request.Messages))
for _, message := range request.Messages { for _, message := range request.Messages {
messages = append(messages, ZhipuMessage{ if message.Role == "system" {
Role: message.Role, messages = append(messages, ZhipuMessage{
Content: message.Content, 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{ return &ZhipuRequest{
Prompt: messages, Prompt: messages,

View File

@ -12,7 +12,7 @@ func SetRelayRouter(router *gin.Engine) {
modelsRouter := router.Group("/v1/models") modelsRouter := router.Group("/v1/models")
modelsRouter.Use(middleware.TokenAuth()) modelsRouter.Use(middleware.TokenAuth())
{ {
modelsRouter.GET("/", controller.ListModels) modelsRouter.GET("", controller.ListModels)
modelsRouter.GET("/:model", controller.RetrieveModel) modelsRouter.GET("/:model", controller.RetrieveModel)
} }
relayV1Router := router.Group("/v1") relayV1Router := router.Group("/v1")