diff --git a/cmd/generate_changelog/incoming/1828.txt b/cmd/generate_changelog/incoming/1828.txt new file mode 100644 index 00000000..9ad30b0d --- /dev/null +++ b/cmd/generate_changelog/incoming/1828.txt @@ -0,0 +1,6 @@ +### PR [#1828](https://github.com/danielmiessler/Fabric/pull/1828) by [ksylvan](https://github.com/ksylvan): Fix empty string detection in chatter and AI clients + +- Chore: improve message handling by trimming whitespace in content checks +- Remove default space in `BuildSession` message content +- Trim whitespace in `anthropic` message content check +- Trim whitespace in `gemini` message content check diff --git a/internal/core/chatter.go b/internal/core/chatter.go index 02ba28a0..a1a60371 100644 --- a/internal/core/chatter.go +++ b/internal/core/chatter.go @@ -175,7 +175,7 @@ func (o *Chatter) BuildSession(request *domain.ChatRequest, raw bool) (session * if request.Message == nil { request.Message = &chat.ChatCompletionMessage{ Role: chat.ChatMessageRoleUser, - Content: " ", + Content: "", } } diff --git a/internal/plugins/ai/anthropic/anthropic.go b/internal/plugins/ai/anthropic/anthropic.go index 5ddb3048..67cb2066 100644 --- a/internal/plugins/ai/anthropic/anthropic.go +++ b/internal/plugins/ai/anthropic/anthropic.go @@ -356,7 +356,7 @@ func (an *Client) toMessages(msgs []*chat.ChatCompletionMessage) (ret []anthropi lastRoleWasUser := false for _, msg := range msgs { - if msg.Content == "" { + if strings.TrimSpace(msg.Content) == "" { continue // Skip empty messages } diff --git a/internal/plugins/ai/gemini/gemini.go b/internal/plugins/ai/gemini/gemini.go index af68ba0a..251d92a7 100644 --- a/internal/plugins/ai/gemini/gemini.go +++ b/internal/plugins/ai/gemini/gemini.go @@ -456,7 +456,7 @@ func (o *Client) convertMessages(msgs []*chat.ChatCompletionMessage) []*genai.Co content.Role = "user" } - if msg.Content != "" { + if strings.TrimSpace(msg.Content) != "" { content.Parts = append(content.Parts, &genai.Part{Text: msg.Content}) }