diff --git a/relay/claude_handler.go b/relay/claude_handler.go index da0edfd9..5f38960e 100644 --- a/relay/claude_handler.go +++ b/relay/claude_handler.go @@ -125,7 +125,7 @@ func ClaudeHelper(c *gin.Context) (newAPIError *types.NewAPIError) { var httpResp *http.Response resp, err := adaptor.DoRequest(c, relayInfo, requestBody) if err != nil { - return types.NewError(err, types.ErrorCodeDoRequestFailed) + return types.NewOpenAIError(err, types.ErrorCodeDoRequestFailed, http.StatusInternalServerError) } if resp != nil { diff --git a/relay/embedding_handler.go b/relay/embedding_handler.go index 20b028ed..be11bb2b 100644 --- a/relay/embedding_handler.go +++ b/relay/embedding_handler.go @@ -91,7 +91,7 @@ func EmbeddingHelper(c *gin.Context) (newAPIError *types.NewAPIError) { statusCodeMappingStr := c.GetString("status_code_mapping") resp, err := adaptor.DoRequest(c, relayInfo, requestBody) if err != nil { - return types.NewError(err, types.ErrorCodeDoRequestFailed) + return types.NewOpenAIError(err, types.ErrorCodeDoRequestFailed, http.StatusInternalServerError) } var httpResp *http.Response diff --git a/relay/image_handler.go b/relay/image_handler.go index 8349307f..8e059863 100644 --- a/relay/image_handler.go +++ b/relay/image_handler.go @@ -209,7 +209,7 @@ func ImageHelper(c *gin.Context) (newAPIError *types.NewAPIError) { resp, err := adaptor.DoRequest(c, relayInfo, requestBody) if err != nil { - return types.NewError(err, types.ErrorCodeDoRequestFailed) + return types.NewOpenAIError(err, types.ErrorCodeDoRequestFailed, http.StatusInternalServerError) } var httpResp *http.Response if resp != nil { diff --git a/relay/relay-text.go b/relay/relay-text.go index 9ca86a7c..60327074 100644 --- a/relay/relay-text.go +++ b/relay/relay-text.go @@ -210,7 +210,7 @@ func TextHelper(c *gin.Context) (newAPIError *types.NewAPIError) { resp, err := adaptor.DoRequest(c, relayInfo, requestBody) if err != nil { - return types.NewError(err, types.ErrorCodeDoRequestFailed) + return types.NewOpenAIError(err, types.ErrorCodeDoRequestFailed, http.StatusInternalServerError) } statusCodeMappingStr := c.GetString("status_code_mapping") diff --git a/relay/rerank_handler.go b/relay/rerank_handler.go index 72ca6a0b..a092de4b 100644 --- a/relay/rerank_handler.go +++ b/relay/rerank_handler.go @@ -84,7 +84,7 @@ func RerankHelper(c *gin.Context, relayMode int) (newAPIError *types.NewAPIError } resp, err := adaptor.DoRequest(c, relayInfo, requestBody) if err != nil { - return types.NewError(err, types.ErrorCodeDoRequestFailed) + return types.NewOpenAIError(err, types.ErrorCodeDoRequestFailed, http.StatusInternalServerError) } statusCodeMappingStr := c.GetString("status_code_mapping") diff --git a/relay/responses_handler.go b/relay/responses_handler.go index 10fa448b..52d1db6e 100644 --- a/relay/responses_handler.go +++ b/relay/responses_handler.go @@ -137,7 +137,7 @@ func ResponsesHelper(c *gin.Context) (newAPIError *types.NewAPIError) { var httpResp *http.Response resp, err := adaptor.DoRequest(c, relayInfo, requestBody) if err != nil { - return types.NewError(err, types.ErrorCodeDoRequestFailed) + return types.NewOpenAIError(err, types.ErrorCodeDoRequestFailed, http.StatusInternalServerError) } statusCodeMappingStr := c.GetString("status_code_mapping") diff --git a/service/error.go b/service/error.go index e655f448..a0713b55 100644 --- a/service/error.go +++ b/service/error.go @@ -82,6 +82,7 @@ func ClaudeErrorWrapperLocal(err error, code string, statusCode int) *dto.Claude func RelayErrorHandler(resp *http.Response, showBodyWhenFail bool) (newApiErr *types.NewAPIError) { newApiErr = &types.NewAPIError{ StatusCode: resp.StatusCode, + ErrorType: types.ErrorTypeOpenAIError, } responseBody, err := io.ReadAll(resp.Body) @@ -105,6 +106,7 @@ func RelayErrorHandler(resp *http.Response, showBodyWhenFail bool) (newApiErr *t newApiErr = types.WithOpenAIError(errResponse.Error, resp.StatusCode) } else { newApiErr = types.NewErrorWithStatusCode(errors.New(errResponse.ToMessage()), types.ErrorCodeBadResponseStatusCode, resp.StatusCode) + newApiErr.ErrorType = types.ErrorTypeOpenAIError } return } diff --git a/types/error.go b/types/error.go index 40d141cd..5c8b37d2 100644 --- a/types/error.go +++ b/types/error.go @@ -152,6 +152,14 @@ func NewError(err error, errorCode ErrorCode) *NewAPIError { } } +func NewOpenAIError(err error, errorCode ErrorCode, statusCode int) *NewAPIError { + openaiError := OpenAIError{ + Message: err.Error(), + Type: string(errorCode), + } + return WithOpenAIError(openaiError, statusCode) +} + func NewErrorWithStatusCode(err error, errorCode ErrorCode, statusCode int) *NewAPIError { return &NewAPIError{ Err: err,