forked from phoenix/litellm-mirror
fix(caching.py): support default ttl for caching
This commit is contained in:
parent
e1c75c009f
commit
591a0a376e
2 changed files with 23 additions and 0 deletions
|
@ -874,6 +874,7 @@ class Cache:
|
||||||
port: Optional[str] = None,
|
port: Optional[str] = None,
|
||||||
password: Optional[str] = None,
|
password: Optional[str] = None,
|
||||||
namespace: Optional[str] = None,
|
namespace: Optional[str] = None,
|
||||||
|
ttl: Optional[float] = None,
|
||||||
similarity_threshold: Optional[float] = None,
|
similarity_threshold: Optional[float] = None,
|
||||||
supported_call_types: Optional[
|
supported_call_types: Optional[
|
||||||
List[
|
List[
|
||||||
|
@ -967,6 +968,7 @@ class Cache:
|
||||||
self.supported_call_types = supported_call_types # default to ["completion", "acompletion", "embedding", "aembedding"]
|
self.supported_call_types = supported_call_types # default to ["completion", "acompletion", "embedding", "aembedding"]
|
||||||
self.type = type
|
self.type = type
|
||||||
self.namespace = namespace
|
self.namespace = namespace
|
||||||
|
self.ttl = ttl
|
||||||
|
|
||||||
def get_cache_key(self, *args, **kwargs):
|
def get_cache_key(self, *args, **kwargs):
|
||||||
"""
|
"""
|
||||||
|
@ -1206,6 +1208,9 @@ class Cache:
|
||||||
if isinstance(result, OpenAIObject):
|
if isinstance(result, OpenAIObject):
|
||||||
result = result.model_dump_json()
|
result = result.model_dump_json()
|
||||||
|
|
||||||
|
## DEFAULT TTL ##
|
||||||
|
if self.ttl is not None:
|
||||||
|
kwargs["ttl"] = self.ttl
|
||||||
## Get Cache-Controls ##
|
## Get Cache-Controls ##
|
||||||
if kwargs.get("cache", None) is not None and isinstance(
|
if kwargs.get("cache", None) is not None and isinstance(
|
||||||
kwargs.get("cache"), dict
|
kwargs.get("cache"), dict
|
||||||
|
@ -1213,6 +1218,7 @@ class Cache:
|
||||||
for k, v in kwargs.get("cache").items():
|
for k, v in kwargs.get("cache").items():
|
||||||
if k == "ttl":
|
if k == "ttl":
|
||||||
kwargs["ttl"] = v
|
kwargs["ttl"] = v
|
||||||
|
|
||||||
cached_data = {"timestamp": time.time(), "response": result}
|
cached_data = {"timestamp": time.time(), "response": result}
|
||||||
return cache_key, cached_data, kwargs
|
return cache_key, cached_data, kwargs
|
||||||
else:
|
else:
|
||||||
|
|
|
@ -116,6 +116,23 @@ def test_caching_with_ttl():
|
||||||
pytest.fail(f"Error occurred: {e}")
|
pytest.fail(f"Error occurred: {e}")
|
||||||
|
|
||||||
|
|
||||||
|
def test_caching_with_default_ttl():
|
||||||
|
try:
|
||||||
|
litellm.set_verbose = True
|
||||||
|
litellm.cache = Cache(ttl=0)
|
||||||
|
response1 = completion(model="gpt-3.5-turbo", messages=messages, caching=True)
|
||||||
|
response2 = completion(model="gpt-3.5-turbo", messages=messages, caching=True)
|
||||||
|
print(f"response1: {response1}")
|
||||||
|
print(f"response2: {response2}")
|
||||||
|
litellm.cache = None # disable cache
|
||||||
|
litellm.success_callback = []
|
||||||
|
litellm._async_success_callback = []
|
||||||
|
assert response2["id"] != response1["id"]
|
||||||
|
except Exception as e:
|
||||||
|
print(f"error occurred: {traceback.format_exc()}")
|
||||||
|
pytest.fail(f"Error occurred: {e}")
|
||||||
|
|
||||||
|
|
||||||
def test_caching_with_cache_controls():
|
def test_caching_with_cache_controls():
|
||||||
try:
|
try:
|
||||||
litellm.set_verbose = True
|
litellm.set_verbose = True
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue