From 432c9fd84827e684b723e8153beb9088131f4655 Mon Sep 17 00:00:00 2001 From: Tom X Nguyen Date: Fri, 6 Jun 2025 10:49:57 +0700 Subject: [PATCH] fix(provider/gemini): prevent empty parts in assistant messages --- internal/llm/provider/gemini.go | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/internal/llm/provider/gemini.go b/internal/llm/provider/gemini.go index 2c43a22b..ebc36119 100644 --- a/internal/llm/provider/gemini.go +++ b/internal/llm/provider/gemini.go @@ -69,19 +69,16 @@ func (g *geminiClient) convertMessages(messages []message.Message) []*genai.Cont Role: "user", }) case message.Assistant: - content := &genai.Content{ - Role: "model", - Parts: []*genai.Part{}, - } + var assistantParts []*genai.Part if msg.Content().String() != "" { - content.Parts = append(content.Parts, &genai.Part{Text: msg.Content().String()}) + assistantParts = append(assistantParts, &genai.Part{Text: msg.Content().String()}) } if len(msg.ToolCalls()) > 0 { for _, call := range msg.ToolCalls() { args, _ := parseJsonToMap(call.Input) - content.Parts = append(content.Parts, &genai.Part{ + assistantParts = append(assistantParts, &genai.Part{ FunctionCall: &genai.FunctionCall{ Name: call.Name, Args: args, @@ -90,7 +87,12 @@ func (g *geminiClient) convertMessages(messages []message.Message) []*genai.Cont } } - history = append(history, content) + if len(assistantParts) > 0 { + history = append(history, &genai.Content{ + Role: "model", + Parts: assistantParts, + }) + } case message.Tool: for _, result := range msg.ToolResults() {