fix: 流模式网络错误导致0补

This commit is contained in:
CaIon 2024-03-23 23:52:04 +08:00
parent 6eb30ec3e6
commit 2d36dee17c

View File

@ -75,11 +75,20 @@ func OpenaiStreamHandler(c *gin.Context, resp *http.Response, relayMode int) (*d
err := json.Unmarshal(common.StringToByteSlice(streamResp), &streamResponses) err := json.Unmarshal(common.StringToByteSlice(streamResp), &streamResponses)
if err != nil { if err != nil {
common.SysError("error unmarshalling stream response: " + err.Error()) common.SysError("error unmarshalling stream response: " + err.Error())
return // just ignore the error for _, item := range streamItems {
} var streamResponse dto.ChatCompletionsStreamResponseSimple
for _, streamResponse := range streamResponses { err := json.Unmarshal(common.StringToByteSlice(item), &streamResponse)
for _, choice := range streamResponse.Choices { if err == nil {
responseTextBuilder.WriteString(choice.Delta.Content) for _, choice := range streamResponse.Choices {
responseTextBuilder.WriteString(choice.Delta.Content)
}
}
}
} else {
for _, streamResponse := range streamResponses {
for _, choice := range streamResponse.Choices {
responseTextBuilder.WriteString(choice.Delta.Content)
}
} }
} }
case relayconstant.RelayModeCompletions: case relayconstant.RelayModeCompletions:
@ -87,11 +96,20 @@ func OpenaiStreamHandler(c *gin.Context, resp *http.Response, relayMode int) (*d
err := json.Unmarshal(common.StringToByteSlice(streamResp), &streamResponses) err := json.Unmarshal(common.StringToByteSlice(streamResp), &streamResponses)
if err != nil { if err != nil {
common.SysError("error unmarshalling stream response: " + err.Error()) common.SysError("error unmarshalling stream response: " + err.Error())
return // just ignore the error for _, item := range streamItems {
} var streamResponse dto.CompletionsStreamResponse
for _, streamResponse := range streamResponses { err := json.Unmarshal(common.StringToByteSlice(item), &streamResponse)
for _, choice := range streamResponse.Choices { if err == nil {
responseTextBuilder.WriteString(choice.Text) for _, choice := range streamResponse.Choices {
responseTextBuilder.WriteString(choice.Text)
}
}
}
} else {
for _, streamResponse := range streamResponses {
for _, choice := range streamResponse.Choices {
responseTextBuilder.WriteString(choice.Text)
}
} }
} }
} }