From f636c50c84f1327a7b3baf7d08ca6f8d6b9b9a40 Mon Sep 17 00:00:00 2001 From: Qiying Wang <781345688@qq.com> Date: Tue, 9 Jul 2024 22:43:59 +0800 Subject: [PATCH] fix: duplicate [DONE] (#1629) --- relay/adaptor/openai/main.go | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/relay/adaptor/openai/main.go b/relay/adaptor/openai/main.go index 1d534644..9ee547b3 100644 --- a/relay/adaptor/openai/main.go +++ b/relay/adaptor/openai/main.go @@ -4,11 +4,12 @@ import ( "bufio" "bytes" "encoding/json" - "github.com/songquanpeng/one-api/common/render" "io" "net/http" "strings" + "github.com/songquanpeng/one-api/common/render" + "github.com/gin-gonic/gin" "github.com/songquanpeng/one-api/common" "github.com/songquanpeng/one-api/common/conv" @@ -31,6 +32,7 @@ func StreamHandler(c *gin.Context, resp *http.Response, relayMode int) (*model.E common.SetEventStreamHeaders(c) + doneRendered := false for scanner.Scan() { data := scanner.Text() if len(data) < dataPrefixLength { // ignore blank line or wrong format @@ -41,6 +43,7 @@ func StreamHandler(c *gin.Context, resp *http.Response, relayMode int) (*model.E } if strings.HasPrefix(data[dataPrefixLength:], done) { render.StringData(c, data) + doneRendered = true continue } switch relayMode { @@ -81,7 +84,9 @@ func StreamHandler(c *gin.Context, resp *http.Response, relayMode int) (*model.E logger.SysError("error reading stream: " + err.Error()) } - render.Done(c) + if !doneRendered { + render.Done(c) + } err := resp.Body.Close() if err != nil {