From 09fcd88799e07d9d7e2848309eece61079133902 Mon Sep 17 00:00:00 2001 From: Krrish Dholakia Date: Thu, 10 Aug 2023 11:13:30 -0700 Subject: [PATCH] updating crash monitoring --- .gitignore | 1 + litellm/__pycache__/__init__.cpython-311.pyc | Bin 2740 -> 3653 bytes litellm/__pycache__/main.cpython-311.pyc | Bin 15255 -> 18782 bytes litellm/__pycache__/timeout.cpython-311.pyc | Bin 5169 -> 5167 bytes litellm/__pycache__/utils.cpython-311.pyc | Bin 27314 -> 35798 bytes .../__pycache__/__init__.cpython-311.pyc | Bin 203 -> 201 bytes .../__pycache__/aispend.cpython-311.pyc | Bin 4925 -> 4923 bytes .../__pycache__/berrispend.cpython-311.pyc | Bin 4692 -> 4690 bytes .../__pycache__/helicone.cpython-311.pyc | Bin 4569 -> 4526 bytes .../__pycache__/supabase.cpython-311.pyc | Bin 5617 -> 5615 bytes litellm/utils.py | 66 ++++++++++-------- pyproject.toml | 2 +- 12 files changed, 38 insertions(+), 31 deletions(-) diff --git a/.gitignore b/.gitignore index 64c8a54a9..d27a43855 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ .venv .env litellm_uuid.txt +__pycache__/ diff --git a/litellm/__pycache__/__init__.cpython-311.pyc b/litellm/__pycache__/__init__.cpython-311.pyc index aed473222132575d79b10450534a515264d37151..a8367a9a6db1f0447d4c00a8615435fab5c1eba4 100644 GIT binary patch delta 1897 zcmcgsO>7%Q6rQ!?#BpMK<2Z?vIEnLPJDX+`JAtTDTL)DYtq>p;QUME9a6H@f#{1*! zuG_>2xreF;1P9n_B_a+*s7F9b#l;s82q8uYfn{+3fq)7S7C)-w6K^(llqN{rn0)ii z`19b$}aac$31X!b>#XuVqBjRuw(uyMvk2)N6c#N_zjwd000#D&-C8oxN z7=u8bQ6|+XVM?7Arqvl?MvV(`H6bL_q>xl+g;|voIEbrE;kYulMmNNj6R;wjQ07%$ z;ME0TL0uFU)s&D@(?S}8nWqt#yhl&?<_U>tR_dmaO%hZd&U_(bzZF2lSFvtQ@n;*E0txKWV2V8TpY3Fw0|? zo?uJC)s`@^D(~K8ko3kE-G6=h><1a?=S<<;#pu^<;iruB-KqPlr>B@z8O5Mn1dp+` z_xB7JZ2Buw(c+gE9_Fo*v7wiH9kr!3Lk~Fl)Jl4}eAKp_N;mr+j7zT+%Ix7pJXo58 z$AW0W%5u{~9S=2q&f@$?vwL4&UMe)%oRTeJk(V{o%4!y$ZhBjmrE48k~L{PTa;TLfKS!2s5o2d9!1Y(mHlpx)52o*<*vU|(;(J8B}-OJV}_dJloFJZ zlx8V$l;$X%uuX5`3{S-cN{f_Il+u)po?@@+Um zP+y}H#knd+u4rUH2h^sM)nOv4B&-2y9ADib1(S?efFs&0U)?5~1{pR1wd8y?Pvk8U zF#t7w>EjDTzedKl0kvpsZ13z~XiTsHR|5fE_canOW~zaXk-gge nazEP;GmZA%r65n~9E=)uH@F^&hacGk9ZXSeQd4eW&r zXA?8uzypSG(co9`;(=f|NP6+$iCYt6VtR6Bc}ciA+2=R^=VfMRpV_auFRAH|f)E6B z3?F_+2LS+nG3R3N=i>LB_tQ(;F0cv^zXOn00UN?a&8{1OeQIX|MqEIN>{4g{A_QO* z`E~#l5eH+`;?xqV?mGf1G(5gLuq=yp~~D?>Kj zRvC7faX8{I%LsEQN*9bG5yjLz&ci$hsE(^+cpQ%70xaMnEaC|`fhXallS`=A)>utK zouV^9Np%{}z!_YEB|Hmf@f@7P^KhQla$Z4B@uq!>m+z` zpMRe5(M-wJi>_NuLy^&XUDqsS(=vSI6Q518#XWxuDVo)Ky=5e*nNeY<6tek7 z$C7T?L1&UGi`AMPIMcO-wjH^YPHG@9zjpnmWOa>K`XF}2m8y$vJAO69HXNj{#%P&T zxkVF3lAggxGo&bNk)2yY^4peHZ%LI(t;E~Wx{k4|AxUdBnwGjn-guXDw!f~*U8G10 zws@{unrX?JB~=fOy*ZBKN#FN~Z1|g;M2`Kd;a(8So9mX|Ry3201zyB?RjQxV*H1|1Q>1S5@vA zD>OlW1YrK)NHz4t)%TE%Fp0&1TR3qg`@B2pIs#%pOhlnGdjeh_{oh0W3J*Q(eg6Q? CljVj0 diff --git a/litellm/__pycache__/main.cpython-311.pyc b/litellm/__pycache__/main.cpython-311.pyc index d029f2d612c1e32b04549cd4e5d9b62d24c4d71f..98b01fd91e64237c6a495f15d8119c64910fa563 100644 GIT binary patch literal 18782 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 delta 5683 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 z zapjfB>b;HRR?R1jObz8V$Xh>iczWML&>sj>N|Jt-f39 znA|Q#b~CaENKvDcp5M9dWG8E0-mX$=W0itLnW&|p8)FS@(~$%tNk-U?leSq-+Z}(3 zhXkG&B!o4d2a=Pg1VZA}`Eb>#7g^&)MqXk>+69`G`C|?1lB~bNI0jvE8Ays{0^i~# zK^PLrlD#*fv-A2Z5C2Jq<5cM0Vv;b<9FV*iqCf2(a7pE$iHx&WDHInNcbtZHIcmsj zjF)!(QWAiYHJ0cXlF3+#sOjNdt_|N|LhN60ochC&fkZ~I;C1b)_G)KK=ur>L$=Ub>FzxN z?4!v&ySol3aC_c}92GMgzDI62GQE#wPVsq@)Qncr+j1l`ob%jPBAMo#Gp~~RPiZLL JdqTk?`X8`+tWE#` diff --git a/litellm/__pycache__/timeout.cpython-311.pyc b/litellm/__pycache__/timeout.cpython-311.pyc index cc5af312fc094a3143ce175c94c71f4dece50985..c7211e4a7ef94e6b8043acab4eb8dff1663a7f2f 100644 GIT binary patch delta 58 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 delta 6063 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 diff --git a/litellm/integrations/__pycache__/__init__.cpython-311.pyc b/litellm/integrations/__pycache__/__init__.cpython-311.pyc index 7a217d98535af6011dd1cb6e2f2d470c3c07c385..561733ee0200ef1f3212b2995f469d9d8fa8a94f 100644 GIT binary patch delta 55 zcmX@jc#@HOIWI340}ymDpP$I>rr@C;TAW%`te;&}lv$jSl98X2n4OuZ?~`> delta 57 zcmX@fc$$%WIWI340}v?HpP9(*rsSm`TAW%`tY4Lwosn3i?~+=aU6Nm*pPZkPs$Wo9 Ll98V`u`mJv?UEB0 diff --git a/litellm/integrations/__pycache__/aispend.cpython-311.pyc b/litellm/integrations/__pycache__/aispend.cpython-311.pyc index 6a3d7431c968f57f6e38f8367f620836eef286a6..fcf43e46fa9697510df6aa3045f0020c7fd6901b 100644 GIT binary patch delta 58 zcmdn1wp)#RIWI340}z;9Kev(lFSCNXerR!OQL%n@QBh`bMoLD0PGWXuqP|Oha%paA MUPi83-|zYtQE2V diff --git a/litellm/integrations/__pycache__/helicone.cpython-311.pyc b/litellm/integrations/__pycache__/helicone.cpython-311.pyc index 852086cc6c5af348bda42bb53a8b3197d49e52b7..e7edf5ad3ad8296d3eea24363f8abe9b47ff4166 100644 GIT binary patch delta 929 zcmaix&1(}u7{+I2Kax$daih@KYOtDOvuGNO1QbH8wV+__p*5F+mbJ5*n2!y!n;gn6 zsnDZ>VGatdpa&Hcgp!l^CwQrNsX6OGP^jQRdk|-m+D2?~*!?l{ydTdyyC34O;_7o% z4FI-Y%kS~WrrHm$H-}>~0w%aE(0Bg6X4R*Qvmyc)0Y*yz3(pV$FWK8&vl50gKo>vr zVTYd*{;89%812cX9l9VGS6pGX(zf29-##lur7Cx zvADEHyulOF|7kGZZP0D!LRZG}3iAA}fPFiL820S_J^P-aT!(hlnL#i?O4@0Vj8wp(S^2RRGd7qs)c#7pM}W*UKAkgihxAv z3GuMDEt7*>9H3Xkw8sDJ;PxV6dQVIb?PH?-gJBV@`!j31J?r$Xn1PQelnyb*7$4HJ zjQ43yx(c<{3+by6=5yLY$6=AReyUgrjhzCcue lTq~KQWSXTw_S$#onMjg)k=VI$2$}Ql{MOOG?-A|H_8SUZ#=HOk delta 1000 zcma)4-%Auh9G{upxx3X{y~`hH{y0-i@8Mi9?4`r*P^={FOhq^dxtuLc@AjBoHD!;J zh@N^-hKNuf&7z3Jf1^O5mzDxwg93wI>ZzH#?X)sznEA|SzVn&y=R3o^YJ1tSZCqp6kvg65>OoRrfzi6KBh2X{PcgH8S3q!)opfJpZNk)I*}Uhq+D zNgsiuAdEkW*lOw zWVI=S=vsEknl>_QA6|v!tQqy?8zBIXf#n*BX&vNb8})-5i5w=-#tVR+w>hgXX$YDv zltyc8`S+7tCmre5!6sT(0nhiagDXqd5gx8G?H&lRxSt)l;UC zp%RaTeKf!)TE`T*v0z0TSdZLY;p5R3x6vS5l)L>xXdZA_0Uz00xuM(_MOUnvRysa3WReZIq z-p*Q)b6q_VYo6XT!iWkX4GB;iVBBh6$iN3mwox@o1-S?Xsof6U`v z<$-?>26rda?+Bh^BY~=FVL*cdyuZN5?gqN@l{k6`O3>PggNNX6poR0|XjpMP#IW?t z0_9%>&?pB-NoA~QYGh}os4Rk51k2})6q$6jF%d3UpB1cBPR$QrG;NUiIlY&T@*V!I if%$~B2P3tSJ#a#2iD2kr970~^$@sMp|MrjFg7Z(A3elwi diff --git a/litellm/integrations/__pycache__/supabase.cpython-311.pyc b/litellm/integrations/__pycache__/supabase.cpython-311.pyc index 0d89ac8210f061ba80cd3763bd87400fa38878c1..098597291352596316be986399abf5d2ff2b9f9b 100644 GIT binary patch delta 58 zcmeyU{a%}UIWI340}ya=p5MqF$Ex6=A6lGRRIHy}RFqkqk&=<0lbD^EsPB@WT$-Dj MS5myWn>9@U01m?wPyhe` delta 60 zcmaE_{ZX5HIWI340}z}zdT}Fn9IKL-erR!OQL%niVs=Jik-kf6adt_5fqrs+N~(TA OWl2VU-sVo$Gywo~Fcm@o diff --git a/litellm/utils.py b/litellm/utils.py index 08210a2b9..85be206c5 100644 --- a/litellm/utils.py +++ b/litellm/utils.py @@ -39,23 +39,12 @@ def print_verbose(print_statement): import importlib import subprocess def install_and_import(package: str): + if package in globals().keys(): + print_verbose(f"{package} has already been imported.") + return try: # Import the module module = importlib.import_module(package) - - # Get the package's information - dist = pkg_resources.get_distribution(package) - required = [req for req in pkg_resources.get_distribution(package).requires()] - - # Print the version of the package - # print(f"{package} version: {dist.version}") - # Check if there are dependencies - if required: - for req in required: - install_and_import(req.project_name) - else: - print_verbose(f"{package} has been successfully installed with no dependencies.") - except (ModuleNotFoundError, ImportError): print_verbose(f"{package} is not installed. Installing...") subprocess.call([sys.executable, "-m", "pip", "install", package]) @@ -85,8 +74,8 @@ def logging(model=None, input=None, azure=False, additional_args={}, logger_fn=N if exception: model_call_details["exception"] = exception - if litellm.telemetry: - safe_crash_reporting(model=model, exception=exception, azure=azure) # log usage-crash details. Do not log any user details. If you want to turn this off, set `litellm.telemetry=False`. + # if litellm.telemetry: + # safe_crash_reporting(model=model, exception=exception, azure=azure) # log usage-crash details. Do not log any user details. If you want to turn this off, set `litellm.telemetry=False`. if input: model_call_details["input"] = input @@ -138,6 +127,17 @@ def client(original_function): print_verbose(f"[Non-Blocking] {traceback.format_exc()}") pass + def crash_reporting(*args, **kwargs): + if litellm.telemetry: + try: + model = args[0] if len(args) > 0 else kwargs["model"] + exception = kwargs["exception"] if "exception" in kwargs else None + azure = kwargs["azure"] if "azure" in kwargs else None + safe_crash_reporting(model=model, exception=exception, azure=azure) # log usage-crash details. Do not log any user details. If you want to turn this off, set `litellm.telemetry=False`. + except: + #[Non-Blocking Error] + pass + def wrapper(*args, **kwargs): start_time = None try: @@ -147,11 +147,13 @@ def client(original_function): result = original_function(*args, **kwargs) end_time = datetime.datetime.now() ## LOG SUCCESS + crash_reporting(*args, **kwargs) my_thread = threading.Thread(target=handle_success, args=(args, kwargs, result, start_time, end_time)) # don't interrupt execution of main thread my_thread.start() return result except Exception as e: traceback_exception = traceback.format_exc() + crash_reporting(*args, **kwargs, exception=traceback_exception) end_time = datetime.datetime.now() my_thread = threading.Thread(target=handle_failure, args=(e, traceback_exception, start_time, end_time, args, kwargs)) # don't interrupt execution of main thread my_thread.start() @@ -198,8 +200,8 @@ def cost_per_token(model="gpt-3.5-turbo", prompt_tokens = 0, completion_tokens = def completion_cost(model="gpt-3.5-turbo", prompt="", completion=""): - prompt_tokens = tokenizer(model=model, text=prompt) - completion_tokens = tokenizer(model=model, text=completion) + prompt_tokens = token_counter(model=model, text=prompt) + completion_tokens = token_counter(model=model, text=completion) prompt_tokens_cost_usd_dollar, completion_tokens_cost_usd_dollar = cost_per_token(model=model, prompt_tokens = prompt_tokens, completion_tokens = completion_tokens) return prompt_tokens_cost_usd_dollar + completion_tokens_cost_usd_dollar @@ -599,7 +601,7 @@ def safe_crash_reporting(model=None, exception=None, azure=None): "exception": str(exception), "azure": azure } - threading.Thread(target=litellm_telemetry, args=(data,), daemon=True).start() + threading.Thread(target=litellm_telemetry, args=(data,)).start() def litellm_telemetry(data): # Load or generate the UUID @@ -618,19 +620,23 @@ def litellm_telemetry(data): uuid_value = str(new_uuid) with open(uuid_file, 'w') as file: file.write(uuid_value) - - # Prepare the data to send to localhost:3000 - payload = { - 'uuid': uuid_value, - 'data': data - } + except: + # [Non-Blocking Error] + return + try: - # Make the POST request to localhost:3000 - response = requests.post('https://litellm.berri.ai/logging', json=payload) + # Prepare the data to send to litellm logging api + payload = { + 'uuid': uuid_value, + 'data': data, + 'version': pkg_resources.get_distribution("litellm").version + } + # Make the POST request to litellm logging api + response = requests.post('https://litellm.berri.ai/logging', headers={"Content-Type": "application/json"}, json=payload) response.raise_for_status() # Raise an exception for HTTP errors - except requests.exceptions.RequestException as e: - # Handle any errors in the request - pass + except: + # [Non-Blocking Error] + return ######### Secret Manager ############################ # checks if user has passed in a secret manager client diff --git a/pyproject.toml b/pyproject.toml index e2fbea95b..1878c21ce 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "litellm" -version = "0.1.372" +version = "0.1.373" description = "Library to easily interface with LLM API providers" authors = ["BerriAI"] license = "MIT License"