From 39c3f2d6eca7be839bbfe4f136e0bb9334980898 Mon Sep 17 00:00:00 2001 From: Krrish Dholakia Date: Wed, 20 Sep 2023 19:50:38 -0700 Subject: [PATCH] add response ms to response object --- litellm/__pycache__/utils.cpython-311.pyc | Bin 115189 -> 115347 bytes litellm/tests/test_completion.py | 3 ++- litellm/utils.py | 7 ++++++- pyproject.toml | 2 +- 4 files changed, 9 insertions(+), 3 deletions(-) diff --git a/litellm/__pycache__/utils.cpython-311.pyc b/litellm/__pycache__/utils.cpython-311.pyc index c9511669f9a0d2a227ecaa1c7393443d30131ae7..734fe46bb7753a40f4a6f18e23be3a2f83da3bd1 100644 GIT binary patch delta 10492 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 m{vB?<>?=^eZD-9hwm(kWJ1>f*&Szsf;3bae delta 10253 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