From 0737fdb3484247ee95c3f78e9dac9ed32549a599 Mon Sep 17 00:00:00 2001 From: Ishaan Jaff Date: Wed, 27 Mar 2024 20:35:45 -0700 Subject: [PATCH 1/3] (fix) remove deep copy for all requests --- litellm/proxy/proxy_server.py | 6 ------ 1 file changed, 6 deletions(-) diff --git a/litellm/proxy/proxy_server.py b/litellm/proxy/proxy_server.py index 8fa2862f276..c3a91bdfa99 100644 --- a/litellm/proxy/proxy_server.py +++ b/litellm/proxy/proxy_server.py @@ -3084,7 +3084,6 @@ async def chat_completion( "url": str(request.url), "method": request.method, "headers": dict(request.headers), - "body": copy.copy(data), # use copy instead of deepcopy } ## Cache Controls @@ -3312,7 +3311,6 @@ async def embeddings( "url": str(request.url), "method": request.method, "headers": dict(request.headers), - "body": copy.copy(data), # use copy instead of deepcopy } if data.get("user", None) is None and user_api_key_dict.user_id is not None: @@ -3488,7 +3486,6 @@ async def image_generation( "url": str(request.url), "method": request.method, "headers": dict(request.headers), - "body": copy.copy(data), # use copy instead of deepcopy } if data.get("user", None) is None and user_api_key_dict.user_id is not None: @@ -3641,7 +3638,6 @@ async def audio_transcriptions( "url": str(request.url), "method": request.method, "headers": dict(request.headers), - "body": copy.copy(data), # use copy instead of deepcopy } if data.get("user", None) is None and user_api_key_dict.user_id is not None: @@ -3811,7 +3807,6 @@ async def moderations( "url": str(request.url), "method": request.method, "headers": dict(request.headers), - "body": copy.copy(data), # use copy instead of deepcopy } if data.get("user", None) is None and user_api_key_dict.user_id is not None: @@ -6802,7 +6797,6 @@ async def async_queue_request( "url": str(request.url), "method": request.method, "headers": dict(request.headers), - "body": copy.copy(data), # use copy instead of deepcopy } verbose_proxy_logger.debug("receiving data: %s", data) From f2e1d938f3ede577bb4c6be4175472c12df820a8 Mon Sep 17 00:00:00 2001 From: Ishaan Jaff Date: Wed, 27 Mar 2024 20:36:53 -0700 Subject: [PATCH 2/3] (fix) remove deep copy from all responses --- litellm/proxy/utils.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/litellm/proxy/utils.py b/litellm/proxy/utils.py index ba8d7080458..bf9be1bd6c2 100644 --- a/litellm/proxy/utils.py +++ b/litellm/proxy/utils.py @@ -449,16 +449,15 @@ class ProxyLogging: Covers: 1. /chat/completions """ - new_response = copy.deepcopy(response) for callback in litellm.callbacks: try: if isinstance(callback, CustomLogger): await callback.async_post_call_success_hook( - user_api_key_dict=user_api_key_dict, response=new_response + user_api_key_dict=user_api_key_dict, response=response ) except Exception as e: raise e - return new_response + return response async def post_call_streaming_hook( self, From 29fb7e126f323c95ec0e2719e4b0d21b43ebc777 Mon Sep 17 00:00:00 2001 From: Ishaan Jaff Date: Wed, 27 Mar 2024 21:15:12 -0700 Subject: [PATCH 3/3] Revert "(fix) remove deep copy for all requests" This reverts commit 0737fdb3484247ee95c3f78e9dac9ed32549a599. --- litellm/proxy/proxy_server.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/litellm/proxy/proxy_server.py b/litellm/proxy/proxy_server.py index c3a91bdfa99..8fa2862f276 100644 --- a/litellm/proxy/proxy_server.py +++ b/litellm/proxy/proxy_server.py @@ -3084,6 +3084,7 @@ async def chat_completion( "url": str(request.url), "method": request.method, "headers": dict(request.headers), + "body": copy.copy(data), # use copy instead of deepcopy } ## Cache Controls @@ -3311,6 +3312,7 @@ async def embeddings( "url": str(request.url), "method": request.method, "headers": dict(request.headers), + "body": copy.copy(data), # use copy instead of deepcopy } if data.get("user", None) is None and user_api_key_dict.user_id is not None: @@ -3486,6 +3488,7 @@ async def image_generation( "url": str(request.url), "method": request.method, "headers": dict(request.headers), + "body": copy.copy(data), # use copy instead of deepcopy } if data.get("user", None) is None and user_api_key_dict.user_id is not None: @@ -3638,6 +3641,7 @@ async def audio_transcriptions( "url": str(request.url), "method": request.method, "headers": dict(request.headers), + "body": copy.copy(data), # use copy instead of deepcopy } if data.get("user", None) is None and user_api_key_dict.user_id is not None: @@ -3807,6 +3811,7 @@ async def moderations( "url": str(request.url), "method": request.method, "headers": dict(request.headers), + "body": copy.copy(data), # use copy instead of deepcopy } if data.get("user", None) is None and user_api_key_dict.user_id is not None: @@ -6797,6 +6802,7 @@ async def async_queue_request( "url": str(request.url), "method": request.method, "headers": dict(request.headers), + "body": copy.copy(data), # use copy instead of deepcopy } verbose_proxy_logger.debug("receiving data: %s", data)