mirror of
https://github.com/router-for-me/CLIProxyAPI.git
synced 2026-02-20 05:10:52 +08:00
fix: filter whitespace-only text in Claude to OpenAI translation
Skip text content blocks that are empty or contain only whitespace when translating Claude messages to OpenAI format. This fixes GLM-4.6 and other strict OpenAI-compatible providers that reject empty text with error 'text cannot be empty'.
This commit is contained in:
@@ -8,6 +8,7 @@ package claude
|
|||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
|
"strings"
|
||||||
|
|
||||||
"github.com/tidwall/gjson"
|
"github.com/tidwall/gjson"
|
||||||
"github.com/tidwall/sjson"
|
"github.com/tidwall/sjson"
|
||||||
@@ -245,8 +246,12 @@ func convertClaudeContentPart(part gjson.Result) (string, bool) {
|
|||||||
if !part.Get("text").Exists() {
|
if !part.Get("text").Exists() {
|
||||||
return "", false
|
return "", false
|
||||||
}
|
}
|
||||||
|
text := part.Get("text").String()
|
||||||
|
if strings.TrimSpace(text) == "" {
|
||||||
|
return "", false
|
||||||
|
}
|
||||||
textContent := `{"type":"text","text":""}`
|
textContent := `{"type":"text","text":""}`
|
||||||
textContent, _ = sjson.Set(textContent, "text", part.Get("text").String())
|
textContent, _ = sjson.Set(textContent, "text", text)
|
||||||
return textContent, true
|
return textContent, true
|
||||||
|
|
||||||
case "image":
|
case "image":
|
||||||
|
|||||||
Reference in New Issue
Block a user