From f11599e50cb0f889790de6a707bf1983bbbd147a Mon Sep 17 00:00:00 2001 From: Krrish Dholakia Date: Tue, 29 Aug 2023 12:54:56 -0700 Subject: [PATCH] add coverage for rate limit errors to togetherai --- litellm/__pycache__/__init__.cpython-311.pyc | Bin 7679 -> 7679 bytes litellm/__pycache__/main.cpython-311.pyc | Bin 29818 -> 28019 bytes litellm/__pycache__/utils.cpython-311.pyc | Bin 72933 -> 73465 bytes litellm/llms/together_ai.py | 131 +++++++++++++++++++ litellm/main.py | 85 +++--------- litellm/tests/test_exceptions.py | 64 +++++---- litellm/utils.py | 14 +- 7 files changed, 191 insertions(+), 103 deletions(-) create mode 100644 litellm/llms/together_ai.py diff --git a/litellm/__pycache__/__init__.cpython-311.pyc b/litellm/__pycache__/__init__.cpython-311.pyc index a37c35ddb6e860d72729510e96005ab5ec2101c2..5c001e9abd456c48f9fa455fedbc8ac1f128951f 100644 GIT binary patch delta 19 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 bPX&OFZGxC~s9-jOPuZW(F6ckAq9y+W56gq= delta 5691 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 XV+A8qUos{#Bo@v{KXBhlL&N_Ab*R?7 diff --git a/litellm/__pycache__/utils.cpython-311.pyc b/litellm/__pycache__/utils.cpython-311.pyc index b8c0d351be80aeac6a9a144e7c2a65dbc58d4834..bf7b112ca47224d20d5d4bf242caba7ef2b62ddd 100644 GIT binary patch delta 12854 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 U(acyHRm5=f$-YUf%h-_r4+>vty#N3J delta 12468 zcmaia34B!5_5ZuGWu0tfU&y{pNJ2mmMD{&E0*Hb}VVul+36spmoe2;c3{hcdXw*H>lYO7YOrNN~le*W$6eD9mggh+q?2lLHc&OP_s zbI(2Z-22|w&sskCg(dA#yFFQ<=dC5D)hinANXusv57%0lOHot2<-UscN~Wlan(D3c zRkv4D+N|2WHNM*RT3=mzozKzk@YT216J3RGQu`!Ho91osHMTeUn%bLuliMfzn%kRY zyL9gq-_-W0Ofe}M>%K_bVb4vb3g((dzv<#hRyWY4xaMokTBEk005ZuZp3)Yo8MCR3 z$QOB(_Qgcmq%F`EbeiHc@f1;Kf|@9o{C_F4B;Nt%T1w29nUrOUI$@8ZW^2_4%!=|; z`Wa9Aa#@!{b-CZFYms$%RG0s)x)o}{9;JPyS_pB~qCJ-ORixHpZ>z7Zy$vd%9!uJ( z=|rt(o_hHI-eiwyL%C z_X;uJoGaFtEdy$sT2BS*yA-vCCKLbaR7O*>L7jAf5qtU>56MT$qxu?jLfFumsWwvE zE0dJbf9h(Lra+xczh?SPq2E;PD)l1ms?Jn(+8%3ryE>i3xmvxL@EUc-o&lwOqdJo^ zo777Po$4&YYt>5$UFsTj_8#WyQ0Gw2t)wSw8>QYnZQ?658K-i@&B-|{uvWT>@ z_oV0v|EbAO_sm0)W}xrM#hT8u&vrw zMFZ#6;$OC_^C~I1BcoLdgk5V3 zn%C=e9%Q_ZN<+}&eC_~k@hG&2g2bh^dYKhk;y<#=DCw~A3Y1I%R0>~G_2e2Prvat| zE(X*BBxf6?%JA$m*jI|9NjYq-_P30wROm=Fv@ny>T#7nHT$@@mU8-UZ3g-gm z0pCs%Wy$ zVfDgme~*=mwzMYZ5IfTrvu<%Lt#OW=BXsL98*(i|pV0!yq%+l+4Krn8J%egTskl9@ zlx-HP(&sIa^I>VD=i9R)M=AMUa8{%y09T5kbf+;ZGb7V8=CA@-m2MAmk3a0(s_~9M zNaJl(77({&cBZ3GJt63F_mJ(nnYiPH>_~RjITLFW={akru12-Z7f^e>S_sahtW4UG zp5^g}!Y;C5mtS>ye8B(@^G#IW7r7(n4K{V0O?6NWcLOkeTq;ajy9-%>5clMj8*;lM z&*eS9>Ogsr>DH|-Z?AUH#1~Uuw|K&uZ>%7EshC{oVEe`4f=Zg8Hwxw!%Puy9aW}yQ zi0>Cy6@qwYVN*W()-Bxuk6%w-kDiur9^ibQ_;um5LTOLZiUMF41Z)9tky%t$EJuKe z*^#j-(ADMfcf}U}e~8wi+btNUIH~4}FN=O}Gx&&8#kFggi87QvEY(OFW%9uc>dcv*eqT#4Vt<_S;L@5?z+ zI;>;(Cu%fhy<`O(RlH5Os#i5jX~3S=R(!;JKp?4N^@g-t#5>gw=EMb;TGr+NIr-mn}<2N@V&DgL`=Hrpn0Ya1_-!}$&x^aEsR+SzoOyS>%15IiT zKi;o&r;L)RS@A%C2<4W^^TOqDSmJDRS~m83f8Y5{#I=(bWmfi+I~&VLJU@AQdgHjV zjOJDO;q=ko6eTWJccvI=E)&I5S|;3GsW2rhg)}JD{K51LmMdKk%~6UK6dLT zB4es+dSM%nX->}!a1WWD%j@J?C>Ze5yh4xsI=}#67vKhQVCoe2jYvifVsJDaol#_A z;kwoBa&OkSv^5kgyEzIHc z^dy(6lAS^9J1Or-;5C!!FPCGC>B>-yK*bLTLh-$T){(e=T6xAlQLNJ}>{3Q7vy(E# z$=V_@H0@vZ3VY)jgJ-t6IwV>>s(whA{pR}ARoi-#kUp#kUL{Vn7nBJ_c z9j?51XvXs4%9i7opQ>CtRJrz@*7g(5SDgMI`ipxQ>&^+t_l`8PeHu zlTk_>-YKhn*gjk~<7vzA%#}l{HV)6+G*q?&|2sN|JNlyOvK?p7zEfH^qOgK8K)J-S zH;YQ|nP&VuOV5azs_F07XGbhTow+-62_rp@K$&MpmNH9H=ADyjMad=E11rtS(W!+C z?aHxKM(Jbr7Nyl61 zNpX|@K5F&>B>QoTLfWxSx_#Y7OS{(_<`04RM*!F_hb4z>3I*6P=lF{`jci`zFLQow z9=HJ{4*;<0Dbj>9m1~wZ(^*JgigJtLdl4|{R@xJ2^P5j;NAmb>;6W-KBf$k!;z*NA zSU5etQ3B-NgN>IieAMMJrm2`}f$#&GsX|+-+y5mtw&(yZNwP4s2@WUq} z)Zjm(^6xT|G*Y=N-DG=}4B;-5c=nRQ$Ym{kmUIVIM;|pcTq1ToR4CeR%NB31Ocggj zlqu}162$4&oDzF{^V@0Ko7kN*+G?k{-z@%lGS}3dFJ`tiPEPBQtA!`_D{5N2kw2lI zsp;|jPK$qLzd76>n(xYC`Qj&SjRXH%%Z#xt)y#gjRpDvGF*9DSW<~d8lbYpc>V%!v z@bpn36@|_amVPU>$d0$@Hy_G5KpOlhw5W*ntJCc>;w>m1yZf%1L^ZEp`42jNiw9O$ z(+>O6>N5KcL?l;;gYkUv`RdloFQyXR>ZLu%D`T}C$zIK0=HgwUS!Koofl`d6CHI*i zWiMYky2r*NDU=)Qe2chgO`~}tZxK(gX(-P}2MMEdicL_rxq?9o(fGq?@|du$)h?5E zBW)Y;su4+hkm>+v0BLD)(@N4UkW#nxY{OqeR=K$3(hG_sYZuWW=9{$_r9T2Aa?+-E zmUcbcC6PIo<(W!SGl#P3?+-mN?cToqeUzmCCsQX4r%oD5o%BxR^2-}oQuC^5%B#~R zwU&#$SDZ7#+b6}|^+jEB)Y6_$kz@{w;T4j?npgADj@`#!q+&fglHjk4lnqtv{YdkM(^kes>BfR0sr-W`-4>=XQ%{nW6y##D zZeuHJ5f5&xD8lmQc?5bA5kQgFx2$Q{u z60{{_y60H!Bg(&n>%^>%S#(f(@UI1t+dB$b9UAh#1I_?G1AI=Pr@8~ZbiND+dNhBC zzbJ;>`D-wJx+Sb_59`VPUf*ct`7I^4^ZhxR*(E2Zb7p$%Y zM9I;E5`~M>r1%w7I=XQgJDhl{^U*@MLOsoms4}Q=Lk?~uMJ$T!? z)6J&hG!g05RJ}|5&U1AtcBQ2sUrB{-`<)ZB#oF$Cri$+F(g7TobbDujyESLn~P_*Crb^Dxx5}%$mw$h`Mp#s_d&8_JBeYO#?mOI zTU|S73pY-v=_p9u+}qV95_`&X&;!o^Ik@snq_&BkF@XjPiuK; z7)pyiYQ_0?&~$!YfHV7mt9+m7)-x0mR7L}bwPE5s`lwakY6e|KpKgSV^5MndmeI7L zgfB>QsQP?fuIhc}TNgC_+lDox3@_Ml1@1X3m2jJwxVxIwh{e0xQr1!nei>k0`0RdtW;L*}#lx7_}F_v*+f@<{4=+ML5MLv|f!kRIb zH5iKwzR$ZDK;z@1P(xu-sN7;)5G-fbj5qVEN0cQjX(cnCQI$|DPu1$EY=)h0?Gtz}5pEi9nS3nts*B-0CtAbKHb zfoVya^~DrWy=Z4hr!B~$%uD6ArFEv4YC-i<-2&6HM(fMFv7oHDOvB)68E zUn?}V7MouywwhYYBk4DPC)H-0fyBPMFSD)2s1w9Tch5+{p2rs<-y-SiLPjE1L8+jr64Z?L# z{QyE~I*s}|G*vf~1@S{@%LyFG6jJmBHL8{OLP3Zt*~{=7baY(q^^>=ZuS!f+)?{+uB6Vy-lm&9XZYy@k07NYg|*2$korDS z*d&a_a5GZ30OF@koD}(Q2psubj^r?$+!*z|f~*X=4Z}e82V&WMi>{QKm6I#OTB+l$ z)GY;kW3H!-RfAxI6N4i^fhvp4NFB? zH=qaL1FRR9K2~Ylg5(CFK33HNch7qXbTbZ8hTU+;&9?#K_97WS2(jXJyB#Fbc&`*E zAFEp?6*G>;ux$`>KnSoKY@~h3>6nf(SQ_s`YKNHrc=G`4!k9c*6aNlsq}4o(tQ_lg zD3kUQw*$j+K(Z6H(t4x_F3RdD6dgIEw@-#qNJEKRh8vAwHv@bnm`Jy|7pa(O#BU{} z;W)C!9Bbs%$MqA}-WY2EvpwkMdcX~U8vz3VX+TiFi36yq^uIgq@Gnp+=kiOW{(&}Q{fYFXXHj*b(+;*S zERJk|u`-?jE#M*X*QXEADd&z~B(Wv1qa7*BDUJ@5Z3u9$%3)OGgW}5)A@D)7aSM-9 zJyizXJh0WHYMg{>5r6!zjg4;bPY2vZ4Pv@LgA{tf=24yUWWevI+QSjgFVk4|Zd4|R zT^(M{>38`wnvFzp%QMTPF+S0II{PSg2y0#B;^=0I|A-nN6=$AVBu`Y)mx*o9`pvc@ z==o`J?D@x7rU)LLJ6#$t!VUf_fLsD{%YF{MX44z;u(MMOQ|O{PU14XB))(TBi$5PN zuY+oJt9%W}H&Tbj=_BU$XzB)0`eV^>?2?p2NbUl7MDSRdVRz4?N5CtQ|2+1(CB+a9 zg^!5sFV|-vq~niDCV+$Dsh5`yyovh9DeuUYVbX=n8)Ntrxc?dOJm3RBd`JoW$MVqgG#JPs{Sv8X#4X1Q8+wTL+vn#r96*f2p4UT1 z%;%}WIZNc^@sE=-ve5WG0E~y97QZ<)I}f%`GmQH#sX)&@)ZHygeyg(V$ajC6#cVk! zIVA2Iekw=qf%5KB?k7@%Zwl8Nr-CMw=hIkeVq*BMZt+?e#YnmiY;sWX%U7oL^%TwU?ifH)VDBjV{Re zdORh`2r47}zY8R|ev1~c0XjrU-yG{g&m2AJ#_zW<}|2Z)W1%yaBd= zH^izxtfOWBz#o!KDRIBAi=Vwa$FSNLKnnQ7Q|~=tvSZwI3Y4UW#4~@Mdoe7QW)R=x zNYzo`E8DCmN0vJUaC$~Rl>8_a>?jhuKF&_04HtLt zjl%s`d=~QHUq72FJuDU!ot|x~=B9V}dNQ4>csR7pLzjKh1q?wx#BO9AHR8oj9CQWy z_fM9wDPqQ_9mMFqPrsS@52D$TSb=-9idhvqOcgsn{ue!RvC@oxP1U-k(?f9$HXwS( zAf^3=iP!!%pV+0HUdd((*GRG0dfH`di{i}b-?f1){|ayx06)tyM1!wI^5y4H6_b?q zl_+m2{eM&y|LQ>GjI3mfsGFV9F3yfTUxF_5l=%J~GWJ$!U0;be&P=a>@Nxd!kNy*B z10KV;;j=jjt(YmdBHsI|O8nrn6O-qFj>w`Cr&5w`=+XLMbh5sIbfCb7DsKJU#jX&i zKYz3?)>609Hx)D+2o9u$@O1PWYx3+DE_Ssj{j!=C;gT=^#xyyYRKtbR9UFbfV7Oki zFfRKbhM~PgLwhmB@zVx;jd&JGlx=xicI2H9~CATLii%@|MPK^Q|=E9&_E-g67V^MIEs`U0fgryXjH_wbW-dh zRFs2Q#&!;*PJ;oUbnpyguNklIP9J%}#F`lU{ov9@erp^vHA@6 zU=0OnQ{r!pj)P0T6B`D7;o+sPz#M6MV(fZ2CX1dBqLU& z0yZ1!i|Wo`Ls!6Hh&P_Ih~eu;KC&~-%;pWYWwN$;<eiudKd09}X6 zIcq_k^v+O#Zl+H~Xw#C1x~B)<%4Ab29sGULNPGp~gpbpQu}!!IxG zXiEu%>0-{Xlbe+`s{Rvt#}%Kk?aFb=ux=H~WMm-s_;-+foIp2}>CKuN+o%DdHwQ_q+zN>ptW9 zui(5&ezV z*n4ogAV=l6m@x}PHo73fuqJ>Y8;}FY1^f|^M}Si^t<9)fuYs-KiMkU2c@UR}?rTxu zA{gMYQ?zjza~lZdT_Y|&q>Iv zIyzX8&)z$dTEM#4k?n=d! in case of random model errors - e.g. overloaded server - return True - except Exception as e: - print(f"Uncaught Exception {model}: {type(e).__name__} - {e}") - pass - return False +# def test_model_call(model): +# try: +# sample_text = "how does a court case get to the Supreme Court?" +# messages = [{ "content": sample_text,"role": "user"}] +# print(f"model: {model}") +# response = completion(model=model, messages=messages) +# except RateLimitError: +# return True +# except OpenAIError: # is at least an openai error -> in case of random model errors - e.g. overloaded server +# return True +# except Exception as e: +# print(f"Uncaught Exception {model}: {type(e).__name__} - {e}") +# traceback.print_exc() +# pass +# return False +# # Repeat each model 500 times +# extended_models = [model for model in models for _ in range(250)] -# Repeat each model 500 times -extended_models = [model for model in models for _ in range(250)] +# def worker(model): +# return test_model_call(model) -def worker(model): - return test_model(model) +# # Create a dictionary to store the results +# counts = {True: 0, False: 0} -# Create a dictionary to store the results -counts = {True: 0, False: 0} +# # Use Thread Pool Executor +# with ThreadPoolExecutor(max_workers=500) as executor: +# # Use map to start the operation in thread pool +# results = executor.map(worker, extended_models) -# Use Thread Pool Executor -with ThreadPoolExecutor(max_workers=500) as executor: - # Use map to start the operation in thread pool - results = executor.map(worker, extended_models) +# # Iterate over results and count True/False +# for result in results: +# counts[result] += 1 - # Iterate over results and count True/False - for result in results: - counts[result] += 1 - -accuracy_score = counts[True]/(counts[True] + counts[False]) -print(f"accuracy_score: {accuracy_score}") +# accuracy_score = counts[True]/(counts[True] + counts[False]) +# print(f"accuracy_score: {accuracy_score}") diff --git a/litellm/utils.py b/litellm/utils.py index 777c9f3b6..994b4916c 100644 --- a/litellm/utils.py +++ b/litellm/utils.py @@ -1451,30 +1451,36 @@ def exception_type(model, original_exception, custom_llm_provider): if "error" in error_response and "`inputs` tokens + `max_new_tokens` must be <=" in error_response["error"]: exception_mapping_worked = True raise ContextWindowExceededError( - message=error_response["error"], + message=f"TogetherAIException - {error_response['error']}", model=model, llm_provider="together_ai" ) elif "error" in error_response and "invalid private key" in error_response["error"]: exception_mapping_worked = True raise AuthenticationError( - message=error_response["error"], + message=f"TogetherAIException - {error_response['error']}", llm_provider="together_ai" ) elif "error" in error_response and "INVALID_ARGUMENT" in error_response["error"]: exception_mapping_worked = True raise InvalidRequestError( - message=error_response["error"], + message=f"TogetherAIException - {error_response['error']}", model=model, llm_provider="together_ai" ) elif "error_type" in error_response and error_response["error_type"] == "validation": exception_mapping_worked = True raise InvalidRequestError( - message=error_response["error"], + message=f"TogetherAIException - {error_response['error']}", model=model, llm_provider="together_ai" ) + elif original_exception.status_code == 429: + exception_mapping_worked = True + raise RateLimitError( + message=f"TogetherAIException - {original_exception.message}", + llm_provider="together_ai", + ) print(f"error: {error_response}") print(f"e: {original_exception}") raise original_exception # base case - return the original exception