parent
76f9288c34
commit
495fc628e4
@ -48,7 +48,7 @@ type AIProxyLibraryStreamResponse struct {
|
|||||||
func requestOpenAI2AIProxyLibrary(request GeneralOpenAIRequest) *AIProxyLibraryRequest {
|
func requestOpenAI2AIProxyLibrary(request GeneralOpenAIRequest) *AIProxyLibraryRequest {
|
||||||
query := ""
|
query := ""
|
||||||
if len(request.Messages) != 0 {
|
if len(request.Messages) != 0 {
|
||||||
query = request.Messages[len(request.Messages)-1].Content
|
query = request.Messages[len(request.Messages)-1].StringContent()
|
||||||
}
|
}
|
||||||
return &AIProxyLibraryRequest{
|
return &AIProxyLibraryRequest{
|
||||||
Model: request.Model,
|
Model: request.Model,
|
||||||
|
@ -88,18 +88,18 @@ func requestOpenAI2Ali(request GeneralOpenAIRequest) *AliChatRequest {
|
|||||||
message := request.Messages[i]
|
message := request.Messages[i]
|
||||||
if message.Role == "system" {
|
if message.Role == "system" {
|
||||||
messages = append(messages, AliMessage{
|
messages = append(messages, AliMessage{
|
||||||
User: message.Content,
|
User: message.StringContent(),
|
||||||
Bot: "Okay",
|
Bot: "Okay",
|
||||||
})
|
})
|
||||||
continue
|
continue
|
||||||
} else {
|
} else {
|
||||||
if i == len(request.Messages)-1 {
|
if i == len(request.Messages)-1 {
|
||||||
prompt = message.Content
|
prompt = message.StringContent()
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
messages = append(messages, AliMessage{
|
messages = append(messages, AliMessage{
|
||||||
User: message.Content,
|
User: message.StringContent(),
|
||||||
Bot: request.Messages[i+1].Content,
|
Bot: request.Messages[i+1].StringContent(),
|
||||||
})
|
})
|
||||||
i++
|
i++
|
||||||
}
|
}
|
||||||
|
@ -89,7 +89,7 @@ func requestOpenAI2Baidu(request GeneralOpenAIRequest) *BaiduChatRequest {
|
|||||||
if message.Role == "system" {
|
if message.Role == "system" {
|
||||||
messages = append(messages, BaiduMessage{
|
messages = append(messages, BaiduMessage{
|
||||||
Role: "user",
|
Role: "user",
|
||||||
Content: message.Content,
|
Content: message.StringContent(),
|
||||||
})
|
})
|
||||||
messages = append(messages, BaiduMessage{
|
messages = append(messages, BaiduMessage{
|
||||||
Role: "assistant",
|
Role: "assistant",
|
||||||
@ -98,7 +98,7 @@ func requestOpenAI2Baidu(request GeneralOpenAIRequest) *BaiduChatRequest {
|
|||||||
} else {
|
} else {
|
||||||
messages = append(messages, BaiduMessage{
|
messages = append(messages, BaiduMessage{
|
||||||
Role: message.Role,
|
Role: message.Role,
|
||||||
Content: message.Content,
|
Content: message.StringContent(),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -132,7 +132,7 @@ func openaiHandler(c *gin.Context, resp *http.Response, consumeQuota bool, promp
|
|||||||
if textResponse.Usage.TotalTokens == 0 {
|
if textResponse.Usage.TotalTokens == 0 {
|
||||||
completionTokens := 0
|
completionTokens := 0
|
||||||
for _, choice := range textResponse.Choices {
|
for _, choice := range textResponse.Choices {
|
||||||
completionTokens += countTokenText(choice.Message.Content, model)
|
completionTokens += countTokenText(choice.Message.StringContent(), model)
|
||||||
}
|
}
|
||||||
textResponse.Usage = Usage{
|
textResponse.Usage = Usage{
|
||||||
PromptTokens: promptTokens,
|
PromptTokens: promptTokens,
|
||||||
|
@ -59,7 +59,7 @@ func requestOpenAI2PaLM(textRequest GeneralOpenAIRequest) *PaLMChatRequest {
|
|||||||
}
|
}
|
||||||
for _, message := range textRequest.Messages {
|
for _, message := range textRequest.Messages {
|
||||||
palmMessage := PaLMChatMessage{
|
palmMessage := PaLMChatMessage{
|
||||||
Content: message.Content,
|
Content: message.StringContent(),
|
||||||
}
|
}
|
||||||
if message.Role == "user" {
|
if message.Role == "user" {
|
||||||
palmMessage.Author = "0"
|
palmMessage.Author = "0"
|
||||||
|
@ -84,7 +84,7 @@ func requestOpenAI2Tencent(request GeneralOpenAIRequest) *TencentChatRequest {
|
|||||||
if message.Role == "system" {
|
if message.Role == "system" {
|
||||||
messages = append(messages, TencentMessage{
|
messages = append(messages, TencentMessage{
|
||||||
Role: "user",
|
Role: "user",
|
||||||
Content: message.Content,
|
Content: message.StringContent(),
|
||||||
})
|
})
|
||||||
messages = append(messages, TencentMessage{
|
messages = append(messages, TencentMessage{
|
||||||
Role: "assistant",
|
Role: "assistant",
|
||||||
@ -93,7 +93,7 @@ func requestOpenAI2Tencent(request GeneralOpenAIRequest) *TencentChatRequest {
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
messages = append(messages, TencentMessage{
|
messages = append(messages, TencentMessage{
|
||||||
Content: message.Content,
|
Content: message.StringContent(),
|
||||||
Role: message.Role,
|
Role: message.Role,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -87,7 +87,7 @@ func countTokenMessages(messages []Message, model string) int {
|
|||||||
tokenNum := 0
|
tokenNum := 0
|
||||||
for _, message := range messages {
|
for _, message := range messages {
|
||||||
tokenNum += tokensPerMessage
|
tokenNum += tokensPerMessage
|
||||||
tokenNum += getTokenNum(tokenEncoder, message.Content)
|
tokenNum += getTokenNum(tokenEncoder, message.StringContent())
|
||||||
tokenNum += getTokenNum(tokenEncoder, message.Role)
|
tokenNum += getTokenNum(tokenEncoder, message.Role)
|
||||||
if message.Name != nil {
|
if message.Name != nil {
|
||||||
tokenNum += tokensPerName
|
tokenNum += tokensPerName
|
||||||
|
@ -81,7 +81,7 @@ func requestOpenAI2Xunfei(request GeneralOpenAIRequest, xunfeiAppId string, doma
|
|||||||
if message.Role == "system" {
|
if message.Role == "system" {
|
||||||
messages = append(messages, XunfeiMessage{
|
messages = append(messages, XunfeiMessage{
|
||||||
Role: "user",
|
Role: "user",
|
||||||
Content: message.Content,
|
Content: message.StringContent(),
|
||||||
})
|
})
|
||||||
messages = append(messages, XunfeiMessage{
|
messages = append(messages, XunfeiMessage{
|
||||||
Role: "assistant",
|
Role: "assistant",
|
||||||
@ -90,7 +90,7 @@ func requestOpenAI2Xunfei(request GeneralOpenAIRequest, xunfeiAppId string, doma
|
|||||||
} else {
|
} else {
|
||||||
messages = append(messages, XunfeiMessage{
|
messages = append(messages, XunfeiMessage{
|
||||||
Role: message.Role,
|
Role: message.Role,
|
||||||
Content: message.Content,
|
Content: message.StringContent(),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -114,7 +114,7 @@ func requestOpenAI2Zhipu(request GeneralOpenAIRequest) *ZhipuRequest {
|
|||||||
if message.Role == "system" {
|
if message.Role == "system" {
|
||||||
messages = append(messages, ZhipuMessage{
|
messages = append(messages, ZhipuMessage{
|
||||||
Role: "system",
|
Role: "system",
|
||||||
Content: message.Content,
|
Content: message.StringContent(),
|
||||||
})
|
})
|
||||||
messages = append(messages, ZhipuMessage{
|
messages = append(messages, ZhipuMessage{
|
||||||
Role: "user",
|
Role: "user",
|
||||||
@ -123,7 +123,7 @@ func requestOpenAI2Zhipu(request GeneralOpenAIRequest) *ZhipuRequest {
|
|||||||
} else {
|
} else {
|
||||||
messages = append(messages, ZhipuMessage{
|
messages = append(messages, ZhipuMessage{
|
||||||
Role: message.Role,
|
Role: message.Role,
|
||||||
Content: message.Content,
|
Content: message.StringContent(),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -12,10 +12,49 @@ import (
|
|||||||
|
|
||||||
type Message struct {
|
type Message struct {
|
||||||
Role string `json:"role"`
|
Role string `json:"role"`
|
||||||
Content string `json:"content"`
|
Content any `json:"content"`
|
||||||
Name *string `json:"name,omitempty"`
|
Name *string `json:"name,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type ImageURL struct {
|
||||||
|
Url string `json:"url,omitempty"`
|
||||||
|
Detail string `json:"detail,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type TextContent struct {
|
||||||
|
Type string `json:"type,omitempty"`
|
||||||
|
Text string `json:"text,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type ImageContent struct {
|
||||||
|
Type string `json:"type,omitempty"`
|
||||||
|
ImageURL *ImageURL `json:"image_url,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m Message) StringContent() string {
|
||||||
|
content, ok := m.Content.(string)
|
||||||
|
if ok {
|
||||||
|
return content
|
||||||
|
}
|
||||||
|
contentList, ok := m.Content.([]any)
|
||||||
|
if ok {
|
||||||
|
var contentStr string
|
||||||
|
for _, contentItem := range contentList {
|
||||||
|
contentMap, ok := contentItem.(map[string]any)
|
||||||
|
if !ok {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if contentMap["type"] == "text" {
|
||||||
|
if subStr, ok := contentMap["text"].(string); ok {
|
||||||
|
contentStr += subStr
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return contentStr
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
const (
|
const (
|
||||||
RelayModeUnknown = iota
|
RelayModeUnknown = iota
|
||||||
RelayModeChatCompletions
|
RelayModeChatCompletions
|
||||||
|
Loading…
Reference in New Issue
Block a user