From 8e82edcd8cd44690cece797f8bc111b0304584d6 Mon Sep 17 00:00:00 2001 From: David Zhuang Date: Sat, 16 Dec 2023 13:42:33 -0500 Subject: [PATCH] fest: Add dummy model message for system message in gemini model --- controller/relay-gemini-chat.go | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/controller/relay-gemini-chat.go b/controller/relay-gemini-chat.go index d2c252e7..a6c8358f 100644 --- a/controller/relay-gemini-chat.go +++ b/controller/relay-gemini-chat.go @@ -72,7 +72,7 @@ func requestOpenAI2GeminiChat(textRequest GeneralOpenAIRequest) *GeminiChatReque }, }, } - systemPrompt := "" + shouldAddDummyModelMessage := false for _, message := range textRequest.Messages { content := GeminiChatContents{ Role: message.Role, @@ -88,18 +88,23 @@ func requestOpenAI2GeminiChat(textRequest GeneralOpenAIRequest) *GeminiChatReque } // Converting system prompt to prompt from user for the same reason if content.Role == "system" { - systemPrompt = message.StringContent() - continue - } - if content.Role == "user" && systemPrompt != "" { - content.Parts = []GeminiChatParts{ - { - Text: systemPrompt + "\n\nHuman: " + message.StringContent(), - }, - } - systemPrompt = "" + content.Role = "user" + shouldAddDummyModelMessage = true } 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