package openai import ( "bufio" "io" "iter" "strings" ) // Server-sent event func ReadSSE(r io.ReadCloser) iter.Seq[string] { reader := bufio.NewReader(r) return func(yield func(string) bool) { for { line, err := reader.ReadString('\n') if err != nil { return } if line == "" || line == "\n" { continue } if strings.HasPrefix(line, "data: ") { line = line[len("data: "):] } line = strings.TrimSpace(line) line = strings.Trim(line, "\r") line = strings.Trim(line, "\n") if strings.HasPrefix(line, "[DONE]") { return } if !yield(line) { return } } } }