fix: handle strings.Builder write errors in assistant parsing

This commit is contained in:
Ethan0x0000
2026-03-14 13:12:17 +08:00
parent ece0606fed
commit e3f1fd9b63

View File

@@ -232,6 +232,10 @@ func parseAssistantContent(raw json.RawMessage) (string, error) {
}
var b strings.Builder
write := func(v string) error {
_, err := b.WriteString(v)
return err
}
for _, p := range parts {
typ, _ := p["type"].(string)
text, _ := p["text"].(string)
@@ -240,17 +244,31 @@ func parseAssistantContent(raw json.RawMessage) (string, error) {
switch typ {
case "thinking", "reasoning":
if thinking != "" {
b.WriteString("<thinking>")
b.WriteString(thinking)
b.WriteString("</thinking>")
if err := write("<thinking>"); err != nil {
return "", err
}
if err := write(thinking); err != nil {
return "", err
}
if err := write("</thinking>"); err != nil {
return "", err
}
} else if text != "" {
b.WriteString("<thinking>")
b.WriteString(text)
b.WriteString("</thinking>")
if err := write("<thinking>"); err != nil {
return "", err
}
if err := write(text); err != nil {
return "", err
}
if err := write("</thinking>"); err != nil {
return "", err
}
}
default:
if text != "" {
b.WriteString(text)
if err := write(text); err != nil {
return "", err
}
}
}
}