From 2d75052e5729c0a63d0b67bb5faf37e2d3ad8149 Mon Sep 17 00:00:00 2001 From: Kayvan Sylvan Date: Mon, 19 May 2025 22:18:12 -0700 Subject: [PATCH] refactor: improve raw mode handling in BuildSession ## CHANGES - Fix system message handling with patterns in raw mode - Prevent duplicate inputs when using patterns - Add conditional logic for pattern vs non-pattern scenarios - Simplify message construction with clearer variable names - Improve code comments for better readability --- core/chatter.go | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/core/chatter.go b/core/chatter.go index 3d56a479..1cd27f93 100644 --- a/core/chatter.go +++ b/core/chatter.go @@ -192,18 +192,22 @@ func (o *Chatter) BuildSession(request *common.ChatRequest, raw bool) (session * } if raw { - // In raw mode, systemMessage is prepended to request.Message.Content - // and request.Message.Role is set to User. + // In raw mode, we want to avoid duplicating the input that's already in the pattern + var finalContent string if systemMessage != "" { - if request.Message != nil { - request.Message.Content = fmt.Sprintf("%s\\n\\n%s", systemMessage, request.Message.Content) - request.Message.Role = goopenai.ChatMessageRoleUser + // If we have a pattern, it already includes the user input + if request.PatternName != "" { + finalContent = systemMessage } else { - // If no user message originally, create one with the system content. - request.Message = &goopenai.ChatCompletionMessage{Role: goopenai.ChatMessageRoleUser, Content: systemMessage} + // No pattern, combine system message with user input + finalContent = fmt.Sprintf("%s\n\n%s", systemMessage, request.Message.Content) + } + request.Message = &goopenai.ChatCompletionMessage{ + Role: goopenai.ChatMessageRoleUser, + Content: finalContent, } } - // After this, if request.Message is not nil, it's the (potentially combined) message to be appended. + // After this, if request.Message is not nil, append it if request.Message != nil { session.Append(request.Message) }