fix(provider/gemini): prevent empty parts in assistant messages
This commit is contained in:
parent
d4c8d057e4
commit
18f020cacd
1 changed files with 9 additions and 7 deletions
|
|
@ -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() {
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue