|
@@ -165,8 +165,23 @@ func GeminiHelper(c *gin.Context) (openaiErr *dto.OpenAIErrorWithStatusCode) {
|
|
|
return service.OpenAIErrorWrapperLocal(err, "do_request_failed", http.StatusInternalServerError)
|
|
return service.OpenAIErrorWrapperLocal(err, "do_request_failed", http.StatusInternalServerError)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ statusCodeMappingStr := c.GetString("status_code_mapping")
|
|
|
|
|
+
|
|
|
|
|
+ var httpResp *http.Response
|
|
|
|
|
+ if resp != nil {
|
|
|
|
|
+ httpResp = resp.(*http.Response)
|
|
|
|
|
+ relayInfo.IsStream = relayInfo.IsStream || strings.HasPrefix(httpResp.Header.Get("Content-Type"), "text/event-stream")
|
|
|
|
|
+ if httpResp.StatusCode != http.StatusOK {
|
|
|
|
|
+ openaiErr = service.RelayErrorHandler(httpResp, false)
|
|
|
|
|
+ // reset status code 重置状态码
|
|
|
|
|
+ service.ResetStatusCode(openaiErr, statusCodeMappingStr)
|
|
|
|
|
+ return openaiErr
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
usage, openaiErr := adaptor.DoResponse(c, resp.(*http.Response), relayInfo)
|
|
usage, openaiErr := adaptor.DoResponse(c, resp.(*http.Response), relayInfo)
|
|
|
if openaiErr != nil {
|
|
if openaiErr != nil {
|
|
|
|
|
+ service.ResetStatusCode(openaiErr, statusCodeMappingStr)
|
|
|
return openaiErr
|
|
return openaiErr
|
|
|
}
|
|
}
|
|
|
|
|
|