From 9cda24e1b29a522c625db92437141b9a064154c2 Mon Sep 17 00:00:00 2001 From: Krrish Dholakia Date: Sat, 7 Oct 2023 15:37:31 -0700 Subject: [PATCH] fix(utils): adds complete streaming response to success handler --- litellm/__pycache__/__init__.cpython-311.pyc | Bin 13216 -> 13216 bytes litellm/__pycache__/main.cpython-311.pyc | Bin 50546 -> 50626 bytes litellm/__pycache__/utils.cpython-311.pyc | Bin 158260 -> 158894 bytes litellm/main.py | 5 +- litellm/tests/test_logging.py | 225 +++++++++++-------- litellm/tests/test_stream_chunk_builder.py | 3 +- litellm/utils.py | 25 ++- 7 files changed, 161 insertions(+), 97 deletions(-) diff --git a/litellm/__pycache__/__init__.cpython-311.pyc b/litellm/__pycache__/__init__.cpython-311.pyc index bff4121c2c92b5e53f4e56cc42e3a6e42ff1ff3a..56dc8017c9795b38a44a3e9c308261c3eb370513 100644 GIT binary patch delta 19 ZcmZ3Gz95}zIWI340}w*+Q>D{7yvn|1$+Pi diff --git a/litellm/__pycache__/main.cpython-311.pyc b/litellm/__pycache__/main.cpython-311.pyc index 61460c06ad71d4465fa0ef69f4092f043133f4cc..5cde9036ab79d54dda692f57c1ab8fd8d5578c07 100644 GIT binary patch delta 838 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 delta 14800 zcmbt)34D~*)%TodGLvPpK?q9{APJB#?E5BLfCQ+JuobO{!z43=2}veCGhs8DP?uK3 zx;(8{SuCh1n+Oat)?!7mRzcR%3Xd!JwidUdqIGM1&;LA0CQ$u;-}n2{`sY69o_p@O z=bn4+x%bYlvx)moC#F7;l9FWOzx(U*{0A@WNu8G0Il&iy8(o*+v(L4;6V3P;!OF@& zZDmD*TJ#)sAe(V(-uIDv^M6T{WOV7d$hfO#fPQU!(epm%iGyF=7rHLj}SO7I%UO z(eFc>-GE;Mtoq29A(P3u0fYyQTZf)q4Xf&IlvzP&jStu zUIrXyFf;0cp|GdITV3s`4pw^n%lx%r%OWvVj)40$26wzZ5oJ+&lP!abVig(YQPi9? z&Q2Ucvm?nx3+(ZBrhGmi!Kj_GEHzC0(fsGr)Ti0h(YU@}he6?l7OKrw8ZY@e+AX1vASOJBoLill zksh#JE|uxC-|pDxYkxV}m(ki$Hx|>mMU1aQY%Xq&Z-~FFE;ClQj9vK0>Kfu>e7=rS zc8GlCd7rwd1rc&h^L1&q)4(g{zpXB9`uhQyF_9zV#_~t)^8W{gVvQT)R%k1QL;i1w_AUwQHd1S2Y>#{TJab8k8T9?(%?90C^X=hH1(uk%vCp0Adxc2Bg zoEYmO<_%RjEz}=x9UIzW3fP#h)n^`~UlFCjYr8hj#;7nEPrb{FV+$%@n6;qjMo7XKILz1rG6J#68LEsEM~J#G4en-eb!JGtS> zvHGff!<*I7*gd|3Ea<#&2^Mr(NsL2J3r|(YH7&^M?K5K#kwD*9Mo%K4GRe>n4F8y6G=~zY6do;1J*?z#jp!?Hxu5yMmb* z+bUiKQMO8KXl9bPE-=$;{B2f7`rD}40HVFp&wGktpFQ|$Y({2sMSUn7tU*4&oB0)6 zlk77|vd@@Kwnlw*xOse#cN}m6aMHMQcGpB~Iw3@DW6$i-&bxUvgf!#g>>Qe9q|E6< zZ$+M&b0}`aWP4dZ+o8;#^exr2V>XRHj%i6{g^pv%Md@Yvj^jB_CLParFzI+9c#rq% zHLF8p&oy7$U3<`(3D|2qy=>Qlf{41iDTSl;?Zz$w5Pz&`>r8^F^>=W2KN{U}BOB1)VT`=*uPZ88>B`?`LQ z?3;*|3*+tTLONnNYlh@s;f2uHoh*)L#(DM1kbd5{uBHziHEyq| zp-GX?Yi7mC;7!grFJu_k>j_^EZ2PSTmUpNn2Ee_IYc1ld;p>t z6Ha3q$qjw7UIeWYaE0~0HfA++WjC*F$hsyrW{FbbxUycv1WxFaB3<~9HeeR7>w_tu0wHQsQ=68#zDqgy9A z`f|lPk)gN!l&GI^=k5Jyr?LO`GCF2B?-=16!j)fY#-uySTw9>(eGCUm4X_h%Jzyc=8n9eTs^}zTx~yRSN2bq+^j#mO z9-FynrYsKX6@Cx4h+utK){+^&%&(UR`2^!KUfeKg={peBm%*K`FNQ=k)GN7UI=rju zb${~;1R;4zy`1wri@g;r1SD5D$ezSr9O9_s;@y$Q zHx?(;dE=vP-FUWK+skRaQM=u(xyX3lT#7UdxQ!r&iE=k%yk@N9~a$==Ff*3~thYVZ6S3^jsl> zqOWRYSc%dKzz|pfotbI1^);SKf308lh68-;GpSC7&GS|TrkI?1qhgOYv(0x*ka2cT z|GXf7|3Ir&u9ZgN-rVjo!XFZ1DQ7I+Tb?D=G9*z!nux~Bjq`hlx?%y=)-BlCxN zRvOv+hIWtD#8htEx@Mo-6Vt7A!0uFCht)!WSW7X3=wjIdwJ~Wj2uWpbLPY}uud&}7 zU+gPuoR5#J|1Y7Cr;B9qKv@RZ3(V9|oxdW$*9KP1(Zx#}!F?CtA?9hP{{qD(z@30K z#_6ZWIiBU>?nuY|=Tdl4sD+PE=SaJk=Ehz7bFkbBSPQs^;TsxrVIoVi7GzS8cR`(3 zJLg|dfMo-N>GD?l>y~)D)pbj}Jo(;`Kg?WvP#*zoi5z(47D^w7@@PN>fQ+9Uo{_zu zi)Lzbo0dH#iuz}aJ%{^s#}2{!V(ZXNmlbk(%;6AcGT$BU={U;lBO<+yOmR+a9f6rz zHmkU_Xu79p)^yL+#Xpk~neB>7=S`baHf#FiR=SKJrD*z)!Gl|A2aVk)yL5U1s-;aT znp-@txU{wI9^>7U9kLbbGN%1>>eT6_Q%i~_7q`~$G15+T>LTH*-JIfCGp0{2nis1L z8WTM_?bjPf{Ovyu1bZjSf4xFRy;&%^A_pMv@a94;^9O29}<@CBS?(BG1EKpV&cbpwX|1zFGJ2+1anG!Rk6-p)k ze}LX9jdo^Mmh7P^t%nK3c55HKXcU|M9N#eKtC3}9N=o(tG?I9!u}brFvHVF8YmA5A zA2s!R6m49m6F?m56lm}&{jUHRNk0pCp22L78Jkn~(|N^nTCMqn(e)qhMp#>a9U!xn zjM-{sLGaT}z(K%i0H#j=3qZW^442%Q`imfV;mn7)WNN{X8Sk%M7SMyW9O;?j^sivg z_31Bx@s9xU*~*yHz6|1@0Ix8Z?VI;3Y*{VN`>Is5*|}OO;OhEe0Q{SSqd4`yLHG~A zW%Ro+&6&*B`rHv&b>U1ZMIv**`hw_PWBNBe=t-mIn;hC>toddVr5i`TDI4a5VdDWv zz09~kZ6Iu&z~mHg1S8Evbw@x~K#no%TR(kh?EiLp}Os4d{)}Sb8W) zc^YUR0mPdU+GN&px=81SX1fqFCeFfi7=`yXztw*Zq#`E^B{1aXcFdJOD|5BO0D$`= zzy9to?VQ#LLj_Z5jx!q#x2Qj*(n!}-@I|0Orbn6F43hGiijcSzSz8844*h$BouY;uT!| z@&dj95Yx;=KZgV)5`JsqhCstS)TCD|@rFIPt)0o23SK@r4@I4L2zDp&5Hr5QTNg$? zrgpTWw8k$Xcr^Irv^feTN$*FXB#!ecSY+3G9;JhT*vSniF+GmOyF2SLBFV$=2UQNE zvFzTOX;i?4%*0T&w?d6>PgA-{%D)LUKjB{a^pDGCpFivkaNIkp*0-mEq-=};a3Ol6 zJvrOEgumH)-t0+(-Q%FKtOA)e%b6f_JSrvtiU2*;h+fpgS&VWo<>^H|=T1X;I)iCP zRFJ`rL{lW7?j%u5zZy(2Uyx4POe)xCfTang0`*t!WWYI;3qdUbOa;Uo&p5O)3-vBbe*zGFV?5_Jo5={k0+M z6kP(vu41_C;YdQ)G*pSK%f&Ru#9aBaLZYleK$irYEm}I5-k?Uf;40TNe|2>*_nM$y z?bG2b94W-IVyrF9vdyl~;eRYD(hOF_3qovT!**>tX5tKQCg^m-QVe7%at z*47-RYnit?HQ=*0Grg9p`>OpzX@_$&vsY+xVpTT{qep1H>NcFRege%dBynX+`X=gu zTXOq(CC%3zR;L|6mtCbf*%L--a#a0%IQ4Mc$X$+!ZXZsmL{F;Uji9h&Ig_SFhm0gG z&b5Ne`bxkmHQ_2MxQtMD74>u6%#~%)%~#Q_aa5&xO{B@4v4fgUK4WqkU|C4^zFgHb zkp>Pb;t}YR0Wx<_qa@p{oIP8^9!CP$SieoZGm*yAT-B|JMmY=?9gZ$2qJ%hCBh+dF ztX8$f)F=JtDBlXW4RE{KT1*SdWj|j7f*01XRKceopZB69>v1hgcLQP?Hi1RdjOi6; zNxu)At5E-d@|RG)Lowme=-Lu$$n88Am20>%#CJqCc0bGcR;%1fDx`C2S|v55BR$h` z39r|n^mBEllKMH}Y5H1~w1gMbF|}d|b-FmDK=}YZSMcqH z*j09&IA5S5tjpB*2J>XKtCsqAMjmLomW0D~o>15ut`F(5YL2PTYpF0Z2O5eQ#I2jq zaHAR+q@IDku+S9&R3=&`U%aamT6YG(hx9Bi@%4$=;&Bj=-<$0!f;Dy3d_Nzo^(-33g@UQ58$7`(7&!VsViW=i+i<)N8ybf3td}aF!D2!R)#r2xnZBVx%)sT(*r4Wx< zZ(Rdsy6z2x{2soHYMu(tti{_8Kk#eH>IUz>@}Benqyuh>j$$6I+gp&G9P;x{5%zGP ztM|(Qnv-i)_W%_pfky{C9Nqi?b=I76&T^{fAEYq_XE4R$An+R2U?K=_pdXpIX5Q`( z(QtZ7{q!OF2R*CCucHa{j=E(XjdDKcV%Br&z&cvi-ie+dkqseorm89Hx#7X+s`a#+ zuOL<5ja1MXtKD=3LY~E(_=lG8oy$OUdPxN~(sY-&@NOt@K|QyT@|+SJK2ra)k(SU) z(U}j^V6E|e)MFi&NbFdZkRRqFQ2v$)R zKj9iPjyw0oE|2-*Lo~h!!B&qbK`}E4vOUc1U(sAv|K3EaoPXh=hfK9-J9SjMwor2P zx0~sbHaMo+s`!c}^|ed+8SEbrc7b7)i(jX_xmBTHEtBQcGF83w81=py`btL5KRSSh zR^s(fl-iht^^wbNzBT(Xef7`O$St%W{sPo1CFR{tnNilSk4EpSvrka=B#f`wB+~20 z+{re}E^Yd{m;2%aNvxaCpiA>?jM&Nt97^UM8eo6{(F0pK?B>eY|HFJ&iq|z<<=d5g zJ6*$;TCknUsgH0ID!7Gpo%>_$-rqqBoSo3$a_LWTf3E22ogBg^#teSN%!v=^7#%yd z*feHI31t`}D>Yyj&8GZl(=K|M=8IREPQELu z_IY0Ij#5Xb4CXWST9jtd>}c0#=oWhlXr`llW!N9$ZnplO+>^1!#58OKIeEoQE;9fl zwRK)IN!Ex5%c8}(Ivk+us3sabKn~L8v@?=>cZ>e|IqH&1n%Z@Q#;T?x)ZZ$PRv#Xr zX*667dyN)9aFhz;28XY@%Sp&J%qn)6Rc~*$55G} z{&}1-8zr8~ZitC=_tk#}d$opIGp?3njTL`CN1uyOE#Wa0>*QO|z6W%|XB>kWZ@Fs7 z8c_o1?EqdhjiPTSKE*pr-$L6r0hnMjWo|fFHyvjTY{+^N7`p<*L;PTIgsT0#^R@1? zx$Mq>Ga&Kai@EaI^BEPiCH(CC|h(Q-Fq_Kdph0wdV1xl^vaXzfz#=M6X}67 zitp__oz7&tPjqmf$?S1Dv+vfT)0qQKXO6vS(^LnO3e&C1PZz|^)KdC<^~LpSxk=A7 zx@<>>7Ii2~v>lJv7P)N46O(3jwja+JGb_V>BE`v+6B!Psoamg1@_>Tb9c?E&fb(R> zq&X?}lezhG66~imaGpwVFy&OrPx|u5o1-Ts^FQx6i@^MDqM$3Qyuki$uc8s}#QYn3-j=o7*jqhT9-vj&&AdVFC z95{{T65=Z|=i*%AH5sTC=Mq0C#AhFX1fG7F&;Ee3kPO&`ZDuCBSyRjZqKn_6PBiRV z&A}68yX>EET%4oVMcaRaE|SlxJ#W)1V?SYOyib1#-xWt(gdXQJa8T*V%9trN{7e)3 z*`chTdC=%Bc~n=gyhGg`1DG>E`q4X7MWc}5aoCaU4(FzdhXVfs+V@U>huwxMmDLkkLdPmC1ztG>rl;#-m=c+ zf=t4%7qu6lo4l#sgU>NAp*#UMuX}k&MFMF3h+?1W_c144!yxm#n)@*gb&f)Lv|9Ty zjicr2@W<4*&nAeHGulK{76D{|r}|e^`0FIYmj~uas{1E2!%@ZzqoQ@6&^c%K)^j9h zic48J)7ktge>;@;jjH>C`ZglX*Y9M4JFU%0vNeIWrcREzO;AMwx{Ns%t6C2tvCAIz zg4s|N-CF8P(me;XxeOsE3(Ms{mGvccbIfDXZ=&PAq{$Aa)lS{D`T)hJ-IeLgu(d$ zUI6Bb4;P|Ka}O*kEyxE9J>c_unqU6UgZEl=ib0v`@83~{;|4D7ikAMH);P0-LG+x= z)C;nxH=|KNeP-9Zv!!nhT3{Qn_VU&o0l!qLL6@y6$?`GnUZ0PZgKRUU*3ZWAwVd+q zQ;)@ICH>KvWghs7{FDjCw*IWpQVbTrnP?}6c9-3G4G5p8tqIx#?0gdvHQfQq z*}RskdC6K?(v2Vh3e=Oy+J{5Ynj@01h|#g`Wf=0q3utfYUXO-=5$Z^aw!E+k?n~C% zgE}GpwzV*ePJpYTfmCfDxr887O{#agc2^P<7Of{lpG()WomtYaBr)SLD`J^(C{?M? zI%-qB_!+D91dXZXabK=&%YB->(@94X6`CLcCe>j+u@(OqNSca=+z#p;B3iBMq-Etw zH?W48T2Zg-{BY88kys5bU7hZv^-V&YkzlhZn%G$@w>SP1R)h9tLhCaaZe~^`7U4$~ z{b$UW>2|d_!AcnOLb*d|S;$~I>iHK%ruY3TU#6CI}!Y(!Q;^%Le)CJdcX$2 zM!>^>-vX}K5*28GKd1-0YfqAjmgH(nh^p07d0Hpu#~8#TU#EF8hy82b?dE-Gb?jOW{yTK*N3H43?q>x~BD2C~LwP%==_RYK4cEXhpb zqmYMxOzGu!I!W;5P9x3wZ5hwJXDSY~)t1e~TriyJ@cGN@D_f4%+o02Szz)DpfC!U4 z1kr$RKsg8OtcLc{y3*^>*?qLhcIVZY`ER4^`fKr2hG&mbUWi2?O6Z@6(#uS4Idn-h zMtvh9?^nu#5jqpppubKiyiUB2nO;A%zv>7EiAURMW zVH|eiE27ZK+KNEXbj+^z^9_vnftYqbn(PBy;VO@U26!!%)jG#gn$+|`+TZEX=%B&c zXGC?X$53sAQ$+1ho}t=o=d)<@d%nBY#yX!z`Jno0s5XdllzW&~Ll>fInD%@;{Z3so zRvXTDEq9OAy5wM@wmI53#p7s+N!6>>i(|DVoiJ=Z{KsZTCT52!8mF!1JIO=iw23|7 zU8akF>=3A!EZLD6H@&o^Oc#gyBZNJw3dU;%i)7RA!#poA)wI_HYV{XUe-Lm8AgYTN zPvcYUWDO0UqM5j`*iJm92P$3$>{UC*YhBXLi`AP~jDC+gJzneMd=_+Uf* zu+nB~eO*Vu`5NG;8Z}ev!57Ha&(w}&%KAGFx{RuMuEv&XxqLgkuvE)$ltJZ!Lni+u zN@6aFK@x3Fffkz}SeMgLc?9x=y`iPL*hI{MrE11uMe~oO<<}0f?Dj$eR0x? zgfk4e)`I)NfrIC)>Q<&rcZwUlq-x5vPQ@_3nT!J|XW9~-thtnFl=*G9I8g29zz~jI zOYc&tG$JAZ6alfs)UdJnMt}4Aw z8%Y<`9oK2yJrZegz|hwK#3N2%SmNRmF7hy}LjZ{=|AL+pQN$bG2J;nx;yKU&S<$!! z9PS%Yc59`2KW@w0J613M`q^$BKg4VRx1+TAK!VP|WHm@DDb;=4vZSaFK;`SPca6P+?gTD~fMl)A3x%HwStMIU7HQtI~y>7k$bf zdWi}y)H>6#=r0#)6Nq-IS8mW&QhPPYqm5}C1XW%`lOq6mcOC-TPyim4^$$_;5kTIN z1B|e#Z#~+GMtOVA1AkwD z{IpdPF#NvN`mrj0393H}z^}vf_W^Qz6OZ`@pW-pe=)sOp`6+?CDdVA7{}LV6qI4qw zPmMZW5cyH2kr8ib*0YK{g1m-LyeP;Efpx0Kx!F2U;>f1U$pt3|$;sQKiO7#7*Nr9D z;@oCjIZv-7emasZYeVFymuI>16+Zq=!dOn@>Z|?ZbyswjR~z9NG}%G?L;N4cPlbM| iZEb0E|6=X1eb9{#;>(2}#!rQQscr3&= 0: # cannot set content of an OpenAI Object to be an empty string if self.sent_first_chunk == False: completion_obj["role"] = "assistant" self.sent_first_chunk = True model_response.choices[0].delta = Delta(**completion_obj) + # LOGGING + threading.Thread(target=self.logging_obj.success_handler, args=(model_response,)).start() return model_response elif model_response.choices[0].finish_reason: model_response.choices[0].finish_reason = map_finish_reason(model_response.choices[0].finish_reason) # ensure consistent output to openai + # LOGGING + threading.Thread(target=self.logging_obj.success_handler, args=(model_response,)).start() return model_response except StopIteration: raise StopIteration