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