diff --git a/internal/llm/provider/gemini.go b/internal/llm/provider/gemini.go index 2c43a22bb203d5a3427961dcfa90a1fa455aca86..ebc3611994045ab8bf1bc00c37ab5e24416998a3 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() {