fix(provider/gemini): prevent empty parts in assistant messages

This commit is contained in:
Tom X Nguyen 2025-06-06 10:49:57 +07:00 • committed by Kujtim Hoxha
parent d4c8d057e4
commit 18f020cacd

View file

@ -69,19 +69,16 @@ func (g *geminiClient) convertMessages(messages []message.Message) []*genai.Cont
Role: "user", Role: "user",
}) })
case message.Assistant: case message.Assistant:
content := &genai.Content{ var assistantParts []*genai.Part
Role: "model",
Parts: []*genai.Part{},
}
if msg.Content().String() != "" { 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 { if len(msg.ToolCalls()) > 0 {
for _, call := range msg.ToolCalls() { for _, call := range msg.ToolCalls() {
args, _ := parseJsonToMap(call.Input) args, _ := parseJsonToMap(call.Input)
content.Parts = append(content.Parts, &genai.Part{ assistantParts = append(assistantParts, &genai.Part{
FunctionCall: &genai.FunctionCall{ FunctionCall: &genai.FunctionCall{
Name: call.Name, Name: call.Name,
Args: args, 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: case message.Tool:
for _, result := range msg.ToolResults() { for _, result := range msg.ToolResults() {