fix: handle strings.Builder write errors in assistant parsing
This commit is contained in:
@@ -232,6 +232,10 @@ func parseAssistantContent(raw json.RawMessage) (string, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var b strings.Builder
|
var b strings.Builder
|
||||||
|
write := func(v string) error {
|
||||||
|
_, err := b.WriteString(v)
|
||||||
|
return err
|
||||||
|
}
|
||||||
for _, p := range parts {
|
for _, p := range parts {
|
||||||
typ, _ := p["type"].(string)
|
typ, _ := p["type"].(string)
|
||||||
text, _ := p["text"].(string)
|
text, _ := p["text"].(string)
|
||||||
@@ -240,17 +244,31 @@ func parseAssistantContent(raw json.RawMessage) (string, error) {
|
|||||||
switch typ {
|
switch typ {
|
||||||
case "thinking", "reasoning":
|
case "thinking", "reasoning":
|
||||||
if thinking != "" {
|
if thinking != "" {
|
||||||
b.WriteString("<thinking>")
|
if err := write("<thinking>"); err != nil {
|
||||||
b.WriteString(thinking)
|
return "", err
|
||||||
b.WriteString("</thinking>")
|
}
|
||||||
|
if err := write(thinking); err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
if err := write("</thinking>"); err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
} else if text != "" {
|
} else if text != "" {
|
||||||
b.WriteString("<thinking>")
|
if err := write("<thinking>"); err != nil {
|
||||||
b.WriteString(text)
|
return "", err
|
||||||
b.WriteString("</thinking>")
|
}
|
||||||
|
if err := write(text); err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
if err := write("</thinking>"); err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
if text != "" {
|
if text != "" {
|
||||||
b.WriteString(text)
|
if err := write(text); err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user