From 57dbe13050cc680991bdad406971d59c854c9048 Mon Sep 17 00:00:00 2001 From: Seefs Date: Thu, 30 Jul 2026 17:14:28 +0800 Subject: [PATCH] fix(relay): record Responses API stream errors --- relay/channel/openai/relay_responses.go | 13 +++++++++++++ relaykit/dto/openai_response.go | 1 + 2 files changed, 14 insertions(+) diff --git a/relay/channel/openai/relay_responses.go b/relay/channel/openai/relay_responses.go index ceca1af3b38..781bc7917b9 100644 --- a/relay/channel/openai/relay_responses.go +++ b/relay/channel/openai/relay_responses.go @@ -95,6 +95,19 @@ func OaiResponsesStreamHandler(c *gin.Context, info *relaycommon.RelayInfo, resp return } sendResponsesStreamData(c, streamResponse, data) + + switch streamResponse.Type { + case "error", "response.error", "response.failed": + streamError := streamResponse.Error + if (len(streamError) == 0 || string(streamError) == "null") && streamResponse.Response != nil && streamResponse.Response.Error != nil { + if errorBytes, err := common.Marshal(streamResponse.Response.Error); err == nil { + streamError = errorBytes + } + } + if len(streamError) > 0 && string(streamError) != "null" { + sr.Error(fmt.Errorf("%s: %s", streamResponse.Type, streamError)) + } + } switch streamResponse.Type { case "response.completed", "response.done": if streamResponse.Response != nil { diff --git a/relaykit/dto/openai_response.go b/relaykit/dto/openai_response.go index 945d0a86990..5a93e318b89 100644 --- a/relaykit/dto/openai_response.go +++ b/relaykit/dto/openai_response.go @@ -386,6 +386,7 @@ const ( type ResponsesStreamResponse struct { Type string `json:"type"` Response *OpenAIResponsesResponse `json:"response,omitempty"` + Error json.RawMessage `json:"error,omitempty"` Delta string `json:"delta,omitempty"` Item *ResponsesOutput `json:"item,omitempty"` // - response.function_call_arguments.delta