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",
})
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() {