|
|
@@ -181,12 +181,13 @@ func OaiStreamHandler(c *gin.Context, resp *http.Response, info *relaycommon.Rel
|
|
|
}
|
|
|
|
|
|
func OpenaiHandler(c *gin.Context, resp *http.Response, info *relaycommon.RelayInfo) (*dto.OpenAIErrorWithStatusCode, *dto.Usage) {
|
|
|
+ defer common.CloseResponseBodyGracefully(resp)
|
|
|
+
|
|
|
var simpleResponse dto.OpenAITextResponse
|
|
|
responseBody, err := io.ReadAll(resp.Body)
|
|
|
if err != nil {
|
|
|
return service.OpenAIErrorWrapper(err, "read_response_body_failed", http.StatusInternalServerError), nil
|
|
|
}
|
|
|
- common.CloseResponseBodyGracefully(resp)
|
|
|
err = common.DecodeJson(responseBody, &simpleResponse)
|
|
|
if err != nil {
|
|
|
return service.OpenAIErrorWrapper(err, "unmarshal_response_body_failed", http.StatusInternalServerError), nil
|
|
|
@@ -264,6 +265,8 @@ func OpenaiTTSHandler(c *gin.Context, resp *http.Response, info *relaycommon.Rel
|
|
|
}
|
|
|
|
|
|
func OpenaiSTTHandler(c *gin.Context, resp *http.Response, info *relaycommon.RelayInfo, responseFormat string) (*dto.OpenAIErrorWithStatusCode, *dto.Usage) {
|
|
|
+ defer common.CloseResponseBodyGracefully(resp)
|
|
|
+
|
|
|
// count tokens by audio file duration
|
|
|
audioTokens, err := countAudioTokens(c)
|
|
|
if err != nil {
|
|
|
@@ -273,8 +276,6 @@ func OpenaiSTTHandler(c *gin.Context, resp *http.Response, info *relaycommon.Rel
|
|
|
if err != nil {
|
|
|
return service.OpenAIErrorWrapper(err, "read_response_body_failed", http.StatusInternalServerError), nil
|
|
|
}
|
|
|
- common.CloseResponseBodyGracefully(resp)
|
|
|
-
|
|
|
// 写入新的 response body
|
|
|
common.IOCopyBytesGracefully(c, resp, responseBody)
|
|
|
|
|
|
@@ -553,6 +554,8 @@ func preConsumeUsage(ctx *gin.Context, info *relaycommon.RelayInfo, usage *dto.R
|
|
|
}
|
|
|
|
|
|
func OpenaiHandlerWithUsage(c *gin.Context, resp *http.Response, info *relaycommon.RelayInfo) (*dto.OpenAIErrorWithStatusCode, *dto.Usage) {
|
|
|
+ defer common.CloseResponseBodyGracefully(resp)
|
|
|
+
|
|
|
responseBody, err := io.ReadAll(resp.Body)
|
|
|
if err != nil {
|
|
|
return service.OpenAIErrorWrapper(err, "read_response_body_failed", http.StatusInternalServerError), nil
|
|
|
@@ -564,9 +567,6 @@ func OpenaiHandlerWithUsage(c *gin.Context, resp *http.Response, info *relaycomm
|
|
|
return service.OpenAIErrorWrapper(err, "parse_response_body_failed", http.StatusInternalServerError), nil
|
|
|
}
|
|
|
|
|
|
- // 关闭旧的 response body(已被读取,再次读取会导致错误)
|
|
|
- common.CloseResponseBodyGracefully(resp)
|
|
|
-
|
|
|
// 写入新的 response body
|
|
|
common.IOCopyBytesGracefully(c, resp, responseBody)
|
|
|
|