From 5470bc6fd01c5427292f08adb56de8c0bae3c76f Mon Sep 17 00:00:00 2001 From: Krrish Dholakia Date: Sat, 16 Sep 2023 11:02:00 -0700 Subject: [PATCH] improvements to streaming --- litellm/__pycache__/main.cpython-311.pyc | Bin 33794 -> 33793 bytes litellm/__pycache__/utils.cpython-311.pyc | Bin 109276 -> 110725 bytes litellm/tests/test_streaming.py | 1 + litellm/utils.py | 12 ++++-------- 4 files changed, 5 insertions(+), 8 deletions(-) diff --git a/litellm/__pycache__/main.cpython-311.pyc b/litellm/__pycache__/main.cpython-311.pyc index 78da5f6ab8e2926add70c5abe665c9a906315fa4..b78bc9b00fe1c3ad3acc83cbb8999e1b17202d99 100644 GIT binary patch delta 3454 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 y2EwJ=WSTA}+D(~oBrL}uz$bSG7vu7^= diff --git a/litellm/__pycache__/utils.cpython-311.pyc b/litellm/__pycache__/utils.cpython-311.pyc index 37f9204e00c23ea1d074fc3e49b33c133e0bb331..dec3f35b39512f8ed99436a1c59f8f0a44c38e5f 100644 GIT binary patch delta 9298 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 CO$QVJ delta 8136 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 qAZoG(Vy>%xfphhqC^b^aF_(3cGW diff --git a/litellm/tests/test_streaming.py b/litellm/tests/test_streaming.py index eff0ddcb3..49b5a4ede 100644 --- a/litellm/tests/test_streaming.py +++ b/litellm/tests/test_streaming.py @@ -172,6 +172,7 @@ def validate_last_format(chunk): def streaming_format_tests(idx, chunk): extracted_chunk = "" finished = False + print(f"chunk: {chunk}") if idx == 0: # ensure role assistant is set validate_first_format(chunk=chunk) role = chunk["choices"][0]["delta"]["role"] diff --git a/litellm/utils.py b/litellm/utils.py index b52136035..3e21ea7d0 100644 --- a/litellm/utils.py +++ b/litellm/utils.py @@ -112,7 +112,6 @@ class StreamingChoices(OpenAIObject): self.finish_reason = finish_reason self.index = index if delta: - print(f"delta passed in: {delta}") self.delta = delta else: self.delta = Delta() @@ -2456,6 +2455,7 @@ class CustomStreamWrapper: def handle_openai_text_completion_chunk(self, chunk): try: + print(f"chunk: {chunk}") return chunk["choices"][0]["text"] except: raise ValueError(f"Unable to parse response. Original response: {chunk}") @@ -2507,6 +2507,7 @@ class CustomStreamWrapper: model_response = ModelResponse(stream=True, model=self.model) try: # return this for all models + print(f"self.sent_first_chunk: {self.sent_first_chunk}") if self.sent_first_chunk == False: model_response.choices[0].delta.role = "assistant" self.sent_first_chunk = True @@ -2563,18 +2564,13 @@ class CustomStreamWrapper: # LOGGING threading.Thread(target=self.logging_obj.success_handler, args=(completion_obj,)).start() - model_response = ModelResponse(stream=True) - model_response.choices[0].delta = completion_obj model_response.model = self.model - - if model_response.choices[0].delta.content == "": - model_response.choices[0].delta = { - "content": completion_obj["content"], - } + model_response.choices[0].delta["content"] = completion_obj["content"] return model_response except StopIteration: raise StopIteration except Exception as e: + traceback.print_exc() model_response.choices[0].finish_reason = "stop" return model_response