From ee7cedd5776cafbd9dd39fdee88cee51614b293d Mon Sep 17 00:00:00 2001 From: power <244875489@qq.com> Date: Wed, 15 Apr 2026 20:51:10 +0800 Subject: [PATCH] fix: use json.RawMessage for Instructions field in OpenAIResponsesResponse (#4260) The Instructions field in OpenAIResponsesResponse was defined as string, but upstream providers may return null or non-string JSON values for this field. This causes json.Unmarshal to fail, resulting in HTTP 500 on /v1/responses endpoint. Other fields in the same struct (Status, ToolChoice, Truncation, etc.) already use json.RawMessage. The request-side DTO (openai_request.go) also defines Instructions as json.RawMessage. This fix aligns the response-side with both patterns. Co-authored-by: 40005415C\Administrator Co-authored-by: Claude Opus 4.6 --- dto/openai_response.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dto/openai_response.go b/dto/openai_response.go index b5bc7b0d..c3673bb4 100644 --- a/dto/openai_response.go +++ b/dto/openai_response.go @@ -272,7 +272,7 @@ type OpenAIResponsesResponse struct { Status json.RawMessage `json:"status"` Error any `json:"error,omitempty"` IncompleteDetails *IncompleteDetails `json:"incomplete_details,omitempty"` - Instructions string `json:"instructions"` + Instructions json.RawMessage `json:"instructions"` MaxOutputTokens int `json:"max_output_tokens"` Model string `json:"model"` Output []ResponsesOutput `json:"output"`