fix(translator): restructure message content handling to support multiple content types

- Consolidated `input_text` and `output_text` handling into a single case.
- Added support for processing `input_image` content with associated URLs.
This commit is contained in:
Luis Pater
2026-02-09 02:05:38 +08:00
parent 3b34521ad9
commit 63643c44a1

View File

@@ -70,7 +70,7 @@ func ConvertOpenAIResponsesRequestToOpenAIChatCompletions(modelName string, inpu
if role == "developer" { if role == "developer" {
role = "user" role = "user"
} }
message := `{"role":"","content":""}` message := `{"role":"","content":[]}`
message, _ = sjson.Set(message, "role", role) message, _ = sjson.Set(message, "role", role)
if content := item.Get("content"); content.Exists() && content.IsArray() { if content := item.Get("content"); content.Exists() && content.IsArray() {
@@ -84,20 +84,16 @@ func ConvertOpenAIResponsesRequestToOpenAIChatCompletions(modelName string, inpu
} }
switch contentType { switch contentType {
case "input_text": case "input_text", "output_text":
text := contentItem.Get("text").String() text := contentItem.Get("text").String()
if messageContent != "" { contentPart := `{"type":"text","text":""}`
messageContent += "\n" + text contentPart, _ = sjson.Set(contentPart, "text", text)
} else { message, _ = sjson.SetRaw(message, "content.-1", contentPart)
messageContent = text case "input_image":
} imageURL := contentItem.Get("image_url").String()
case "output_text": contentPart := `{"type":"image_url","image_url":{"url":""}}`
text := contentItem.Get("text").String() contentPart, _ = sjson.Set(contentPart, "image_url.url", imageURL)
if messageContent != "" { message, _ = sjson.SetRaw(message, "content.-1", contentPart)
messageContent += "\n" + text
} else {
messageContent = text
}
} }
return true return true
}) })