From c419264a708593a1692d639a109996b324427b28 Mon Sep 17 00:00:00 2001 From: Luis Pater Date: Thu, 16 Oct 2025 06:34:00 +0800 Subject: [PATCH] fix(responses): handle empty and invalid rawJSON in ConvertOpenAIChatCompletionsResponseToOpenAIResponses --- .../responses/openai_openai-responses_response.go | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/internal/translator/openai/openai/responses/openai_openai-responses_response.go b/internal/translator/openai/openai/responses/openai_openai-responses_response.go index c1dcb6ca..00ec5c7f 100644 --- a/internal/translator/openai/openai/responses/openai_openai-responses_response.go +++ b/internal/translator/openai/openai/responses/openai_openai-responses_response.go @@ -67,9 +67,20 @@ func ConvertOpenAIChatCompletionsResponseToOpenAIResponses(ctx context.Context, rawJSON = bytes.TrimSpace(rawJSON[5:]) } + rawJSON = bytes.TrimSpace(rawJSON) + if len(rawJSON) == 0 { + return []string{} + } + if bytes.Equal(rawJSON, []byte("[DONE]")) { + return []string{} + } + root := gjson.ParseBytes(rawJSON) - obj := root.Get("object").String() - if obj != "chat.completion.chunk" { + obj := root.Get("object") + if obj.Exists() && obj.String() != "" && obj.String() != "chat.completion.chunk" { + return []string{} + } + if !root.Get("choices").Exists() || !root.Get("choices").IsArray() { return []string{} }