fest: Add dummy model message for system message in gemini model

This commit is contained in:
David Zhuang 2023-12-16 13:42:33 -05:00
parent 655405462f
commit 8e82edcd8c

View File

@ -72,7 +72,7 @@ func requestOpenAI2GeminiChat(textRequest GeneralOpenAIRequest) *GeminiChatReque
}, },
}, },
} }
systemPrompt := "" shouldAddDummyModelMessage := false
for _, message := range textRequest.Messages { for _, message := range textRequest.Messages {
content := GeminiChatContents{ content := GeminiChatContents{
Role: message.Role, Role: message.Role,
@ -88,18 +88,23 @@ func requestOpenAI2GeminiChat(textRequest GeneralOpenAIRequest) *GeminiChatReque
} }
// Converting system prompt to prompt from user for the same reason // Converting system prompt to prompt from user for the same reason
if content.Role == "system" { if content.Role == "system" {
systemPrompt = message.StringContent() content.Role = "user"
continue shouldAddDummyModelMessage = true
}
if content.Role == "user" && systemPrompt != "" {
content.Parts = []GeminiChatParts{
{
Text: systemPrompt + "\n\nHuman: " + message.StringContent(),
},
}
systemPrompt = ""
} }
geminiRequest.Contents = append(geminiRequest.Contents, content) geminiRequest.Contents = append(geminiRequest.Contents, content)
// If a system message is the last message, we need to add a dummy model message to make gemini happy
if shouldAddDummyModelMessage {
geminiRequest.Contents = append(geminiRequest.Contents, GeminiChatContents{
Role: "model",
Parts: []GeminiChatParts{
{
Text: "ok",
},
},
})
shouldAddDummyModelMessage = false
}
} }
return &geminiRequest return &geminiRequest