diff --git a/openai/api_requestor.py b/openai/api_requestor.py index 504f7c4411..0b44949839 100644 --- a/openai/api_requestor.py +++ b/openai/api_requestor.py @@ -98,16 +98,18 @@ def _make_session() -> requests.Session: def parse_stream_helper(line: bytes) -> Optional[str]: - if line: - if line.strip() == b"data: [DONE]": - # return here will cause GeneratorExit exception in urllib3 - # and it will close http connection with TCP Reset - return None + if line and line.startswith(b"data:"): if line.startswith(b"data: "): + # SSE event may be valid when it contain whitespace line = line[len(b"data: "):] - return line.decode("utf-8") else: + line = line[len(b"data:"):] + if line.strip() == b"[DONE]": + # return here will cause GeneratorExit exception in urllib3 + # and it will close http connection with TCP Reset return None + else: + return line.decode("utf-8") return None