Skip to content

Commit 986a7ac

Browse files
authored
chore: correcting openai stream error handling (#12)
Signed-off-by: Danny Kopping <[email protected]>
1 parent 3f4ec16 commit 986a7ac

File tree

2 files changed

+19
-4
lines changed

2 files changed

+19
-4
lines changed

bridge_integration_test.go

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -871,10 +871,25 @@ func TestErrorHandling(t *testing.T) {
871871
return aibridge.NewRequestBridge(t.Context(), []aibridge.Provider{aibridge.NewOpenAIProvider(cfg(addr, apiKey))}, logger, client, srvProxyMgr)
872872
},
873873
responseHandlerFn: func(streaming bool, resp *http.Response) {
874-
body, err := io.ReadAll(resp.Body)
875-
require.NoError(t, err)
874+
if streaming {
875+
// Server responds first with 200 OK then starts streaming.
876+
require.Equal(t, http.StatusOK, resp.StatusCode)
876877

877-
t.Log(body)
878+
sp := aibridge.NewSSEParser()
879+
require.NoError(t, sp.Parse(resp.Body))
880+
// OpenAI sends all events under the same type.
881+
messageEvents := sp.MessageEvents()
882+
require.NotEmpty(t, messageEvents)
883+
884+
errEvent := sp.MessageEvents()[len(sp.MessageEvents())-2] // Last event is termination marker ("[DONE]").
885+
require.NotEmpty(t, errEvent)
886+
require.Contains(t, errEvent.Data, "The server had an error while processing your request. Sorry about that!")
887+
} else {
888+
require.Equal(t, resp.StatusCode, http.StatusInternalServerError)
889+
body, err := io.ReadAll(resp.Body)
890+
require.NoError(t, err)
891+
require.Contains(t, string(body), "The server had an error while processing your request. Sorry about that")
892+
}
878893
},
879894
},
880895
}

intercept_openai_chat_streaming.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ func (i *OpenAIStreamingChatInterception) ProcessRequest(w http.ResponseWriter,
185185
// We can't reflect an error back if there's a connection error or the request context was canceled.
186186
} else if oaiErr := getOpenAIErrorResponse(streamErr); oaiErr != nil {
187187
logger.Warn(ctx, "openai stream error", slog.Error(streamErr))
188-
interceptionErr = fmt.Errorf("stream error: %w", oaiErr)
188+
interceptionErr = oaiErr
189189
} else {
190190
logger.Warn(ctx, "unknown error", slog.Error(streamErr))
191191
// Unfortunately, the OpenAI SDK does not support parsing errors received in the stream

0 commit comments

Comments
 (0)