fix: fix zhipu streaming (#349)
* Fix #348 * chore: update implementation --------- Co-authored-by: JustSong <songquanpeng@foxmail.com>
This commit is contained in:
parent
30a7f1a1c7
commit
c2c455c980
@ -194,8 +194,8 @@ func zhipuStreamHandler(c *gin.Context, resp *http.Response) (*OpenAIErrorWithSt
|
|||||||
if atEOF && len(data) == 0 {
|
if atEOF && len(data) == 0 {
|
||||||
return 0, nil, nil
|
return 0, nil, nil
|
||||||
}
|
}
|
||||||
if i := strings.Index(string(data), "\n"); i >= 0 {
|
if i := strings.Index(string(data), "\n\n"); i >= 0 && strings.Index(string(data), ":") >= 0 {
|
||||||
return i + 1, data[0:i], nil
|
return i + 2, data[0:i], nil
|
||||||
}
|
}
|
||||||
if atEOF {
|
if atEOF {
|
||||||
return len(data), data, nil
|
return len(data), data, nil
|
||||||
@ -208,14 +208,19 @@ func zhipuStreamHandler(c *gin.Context, resp *http.Response) (*OpenAIErrorWithSt
|
|||||||
go func() {
|
go func() {
|
||||||
for scanner.Scan() {
|
for scanner.Scan() {
|
||||||
data := scanner.Text()
|
data := scanner.Text()
|
||||||
data = strings.Trim(data, "\"")
|
lines := strings.Split(data, "\n")
|
||||||
if len(data) < 5 { // ignore blank line or wrong format
|
for i, line := range lines {
|
||||||
continue
|
if len(line) < 5 {
|
||||||
}
|
continue
|
||||||
if data[:5] == "data:" {
|
}
|
||||||
dataChan <- data[5:]
|
if line[:5] == "data:" {
|
||||||
} else if data[:5] == "meta:" {
|
dataChan <- line[5:]
|
||||||
metaChan <- data[5:]
|
if i != len(lines)-1 {
|
||||||
|
dataChan <- "\n"
|
||||||
|
}
|
||||||
|
} else if line[:5] == "meta:" {
|
||||||
|
metaChan <- line[5:]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
stopChan <- true
|
stopChan <- true
|
||||||
|
Loading…
Reference in New Issue
Block a user