From 467c506e33880736d4f729daecf43df5cd193d2f Mon Sep 17 00:00:00 2001 From: Ishaan Jaff Date: Tue, 6 Aug 2024 13:03:14 -0700 Subject: [PATCH 1/3] caching use file_checksum --- litellm/caching.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/litellm/caching.py b/litellm/caching.py index 6ed6eb9fd..e23bd5bfc 100644 --- a/litellm/caching.py +++ b/litellm/caching.py @@ -10,6 +10,7 @@ import ast import asyncio import hashlib +import io import json import logging import time @@ -1889,8 +1890,10 @@ class Cache: metadata = kwargs.get("metadata", {}) litellm_params = kwargs.get("litellm_params", {}) + # get checksum of file content param_value = ( - getattr(file, "name", None) + metadata.get("file_checksum") + or getattr(file, "name", None) or metadata.get("file_name") or litellm_params.get("file_name") ) From c19066e78ebb73dd90c438434ca3280747b43e21 Mon Sep 17 00:00:00 2001 From: Ishaan Jaff Date: Tue, 6 Aug 2024 13:55:22 -0700 Subject: [PATCH 2/3] use file_checksum --- litellm/utils.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/litellm/utils.py b/litellm/utils.py index fbe6bd26e..c859a962d 100644 --- a/litellm/utils.py +++ b/litellm/utils.py @@ -13,6 +13,7 @@ import base64 import binascii import copy import datetime +import hashlib import inspect import itertools import json @@ -554,6 +555,12 @@ def function_setup( ): _file_name: BinaryIO = args[1] if len(args) > 1 else kwargs["file"] file_name = getattr(_file_name, "name", "audio_file") + # Add file checksum to metadata + file_checksum = hashlib.sha256(_file_name.read()).hexdigest() + if "metadata" in kwargs: + kwargs["metadata"]["file_checksum"] = file_checksum + else: + kwargs["metadata"] = {"file_checksum": file_checksum} messages = file_name elif ( call_type == CallTypes.aspeech.value or call_type == CallTypes.speech.value From aa06df4101357ef09adf76c54fca05e5977ceb3d Mon Sep 17 00:00:00 2001 From: Ishaan Jaff Date: Tue, 6 Aug 2024 15:18:50 -0700 Subject: [PATCH 3/3] use file size _ name to get file check sum --- litellm/utils.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/litellm/utils.py b/litellm/utils.py index c859a962d..20beb47dc 100644 --- a/litellm/utils.py +++ b/litellm/utils.py @@ -555,8 +555,11 @@ def function_setup( ): _file_name: BinaryIO = args[1] if len(args) > 1 else kwargs["file"] file_name = getattr(_file_name, "name", "audio_file") - # Add file checksum to metadata - file_checksum = hashlib.sha256(_file_name.read()).hexdigest() + file_descriptor = _file_name.fileno() + file_stat = os.fstat(file_descriptor) + file_size = str(file_stat.st_size) + + file_checksum = _file_name.name + file_size if "metadata" in kwargs: kwargs["metadata"]["file_checksum"] = file_checksum else: