From a8ac8a25d522dceda91112b3ca92f2559a808316 Mon Sep 17 00:00:00 2001 From: CalciumIon <1808837298@qq.com> Date: Sat, 24 Aug 2024 17:15:55 +0800 Subject: [PATCH] feat: format claude messages when first role is not user --- relay/channel/claude/relay-claude.go | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/relay/channel/claude/relay-claude.go b/relay/channel/claude/relay-claude.go index 47abe313..1c9d4e61 100644 --- a/relay/channel/claude/relay-claude.go +++ b/relay/channel/claude/relay-claude.go @@ -139,6 +139,7 @@ func RequestOpenAI2ClaudeMessage(textRequest dto.GeneralOpenAIRequest) (*ClaudeR } claudeMessages := make([]ClaudeMessage, 0) + isFirstMessage := true for _, message := range formatMessages { if message.Role == "system" { if message.IsStringContent() { @@ -154,6 +155,22 @@ func RequestOpenAI2ClaudeMessage(textRequest dto.GeneralOpenAIRequest) (*ClaudeR claudeRequest.System = content } } else { + if isFirstMessage { + isFirstMessage = false + if message.Role != "user" { + // fix: first message is assistant, add user message + claudeMessage := ClaudeMessage{ + Role: "user", + Content: []ClaudeMediaMessage{ + { + Type: "text", + Text: "...", + }, + }, + } + claudeMessages = append(claudeMessages, claudeMessage) + } + } claudeMessage := ClaudeMessage{ Role: message.Role, }