|
|
@@ -330,22 +330,15 @@ func claudeStreamHandler(c *gin.Context, resp *http.Response, info *relaycommon.
|
|
|
response.Created = createdTime
|
|
|
response.Model = info.UpstreamModelName
|
|
|
|
|
|
- jsonStr, err := json.Marshal(response)
|
|
|
+ err = service.ObjectData(c, response)
|
|
|
if err != nil {
|
|
|
- common.SysError("error marshalling stream response: " + err.Error())
|
|
|
- return true
|
|
|
+ common.SysError(err.Error())
|
|
|
}
|
|
|
- c.Render(-1, common.CustomEvent{Data: "data: " + string(jsonStr)})
|
|
|
return true
|
|
|
case <-stopChan:
|
|
|
- c.Render(-1, common.CustomEvent{Data: "data: [DONE]"})
|
|
|
return false
|
|
|
}
|
|
|
})
|
|
|
- err := resp.Body.Close()
|
|
|
- if err != nil {
|
|
|
- return service.OpenAIErrorWrapper(err, "close_response_body_failed", http.StatusInternalServerError), nil
|
|
|
- }
|
|
|
if requestMode == RequestModeCompletion {
|
|
|
usage, _ = service.ResponseText2Usage(responseText, info.UpstreamModelName, info.PromptTokens)
|
|
|
} else {
|
|
|
@@ -356,6 +349,16 @@ func claudeStreamHandler(c *gin.Context, resp *http.Response, info *relaycommon.
|
|
|
usage, _ = service.ResponseText2Usage(responseText, info.UpstreamModelName, usage.PromptTokens)
|
|
|
}
|
|
|
}
|
|
|
+ response := service.GenerateFinalUsageResponse(responseId, createdTime, info.UpstreamModelName, *usage)
|
|
|
+ err := service.ObjectData(c, response)
|
|
|
+ if err != nil {
|
|
|
+ common.SysError(err.Error())
|
|
|
+ }
|
|
|
+ service.Done(c)
|
|
|
+ err = resp.Body.Close()
|
|
|
+ if err != nil {
|
|
|
+ return service.OpenAIErrorWrapperLocal(err, "close_response_body_failed", http.StatusInternalServerError), nil
|
|
|
+ }
|
|
|
return nil, usage
|
|
|
}
|
|
|
|