From 46e86b7433f67c2ebc4f9562f61bd176a7c30191 Mon Sep 17 00:00:00 2001 From: Krrish Dholakia Date: Thu, 14 Sep 2023 19:27:12 -0700 Subject: [PATCH] fixes to streaming --- litellm/__pycache__/utils.cpython-311.pyc | Bin 107651 -> 107711 bytes litellm/tests/test_streaming.py | 8 ++------ litellm/utils.py | 5 +++-- 3 files changed, 5 insertions(+), 8 deletions(-) diff --git a/litellm/__pycache__/utils.cpython-311.pyc b/litellm/__pycache__/utils.cpython-311.pyc index c4098f31b1535a8d4ef4736b71e1619e5a69dc6a..189cf63d1ff670c6e606aebd880153e86f784072 100644 GIT binary patch delta 13510 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 XSC_`WaQ%h!*4@3|`3~6=M}YqYM#8mF diff --git a/litellm/tests/test_streaming.py b/litellm/tests/test_streaming.py index 7a20c6cb2..0ec8563ab 100644 --- a/litellm/tests/test_streaming.py +++ b/litellm/tests/test_streaming.py @@ -40,15 +40,13 @@ def test_completion_cohere_stream(): # Add any assertions here to check the response for chunk in response: print(f"chunk: {chunk}") - if "content" in chunk["choices"][0]["delta"]: - complete_response += chunk["choices"][0]["delta"]["content"] + complete_response += chunk["choices"][0]["delta"]["content"] if complete_response == "": raise Exception("Empty response received") print(f"completion_response: {complete_response}") except Exception as e: pytest.fail(f"Error occurred: {e}") - - + # test on baseten completion call # try: # response = completion( @@ -290,8 +288,6 @@ async def ai21_async_completion_call(): complete_response += chunk["choices"][0]["delta"]["content"] if complete_response == "": raise Exception("Empty response received") - except KeyError as e: - pass except: print(f"error occurred: {traceback.format_exc()}") pass \ No newline at end of file diff --git a/litellm/utils.py b/litellm/utils.py index 2a3544abb..77cffe3ad 100644 --- a/litellm/utils.py +++ b/litellm/utils.py @@ -103,7 +103,7 @@ class Choices(OpenAIObject): self.message = message class StreamingChoices(OpenAIObject): - def __init__(self, finish_reason=None, index=0, delta: Optional[Union[Dict, Delta]]={}, **params): + def __init__(self, finish_reason=None, index=0, delta=Delta(), **params): super(StreamingChoices, self).__init__(**params) self.finish_reason = finish_reason self.index = index @@ -2492,11 +2492,12 @@ class CustomStreamWrapper: model_response = ModelResponse(stream=True) model_response.choices[0].delta = completion_obj return model_response + except StopIteration: + raise StopIteration except Exception as e: model_response = ModelResponse(stream=True) model_response.choices[0].finish_reason = "stop" return model_response - # raise StopIteration async def __anext__(self): try: