From ecad921b01df26559c015dd248e692919f134ee5 Mon Sep 17 00:00:00 2001 From: Krrish Dholakia Date: Tue, 19 Sep 2023 18:56:53 -0700 Subject: [PATCH] add oobabooga text web api support --- litellm/__init__.py | 1 + litellm/__pycache__/__init__.cpython-311.pyc | Bin 10023 -> 10112 bytes litellm/__pycache__/main.cpython-311.pyc | Bin 41230 -> 44256 bytes litellm/__pycache__/utils.cpython-311.pyc | Bin 114810 -> 115128 bytes litellm/llms/oobabooga.py | 123 +++++++++++++++++++ litellm/main.py | 23 ++++ litellm/tests/test_completion.py | 12 ++ pyproject.toml | 2 +- 8 files changed, 160 insertions(+), 1 deletion(-) create mode 100644 litellm/llms/oobabooga.py diff --git a/litellm/__init__.py b/litellm/__init__.py index cc6f88c0c..a4faaf232 100644 --- a/litellm/__init__.py +++ b/litellm/__init__.py @@ -277,6 +277,7 @@ provider_list: List = [ "nlp_cloud", "bedrock", "petals", + "oobabooga", "custom", # custom apis ] diff --git a/litellm/__pycache__/__init__.cpython-311.pyc b/litellm/__pycache__/__init__.cpython-311.pyc index 083f785552a628814cdce61fdf1c497e345000ef..2e536cdea61ae7dc335bc45ba24fd26b9ecf32ae 100644 GIT binary patch delta 531 zcmXv}J4_of7(QQfMLlvv1f=F51k@5mm3XKOz`#<(MjqtB%S&{TjT_&HdPE}R9R=2Zut11>yR@yyLm#Rx^8~7!E|M#*bUliM=+=b)VhMYv%##fVuajV3` zIQQiD->BsOVX4$`4?m z^KH8CAHW02LDhHxqs-%P$q{!SbB~789DDw3m3s|}moaS-Z%+J7ErTJEbI%9wI-Ms$ z(C`{TKs<5jra)X=y9*|J9rce)nSe!$>3?9Q_AmN9Re7ho<>PhHnHW7Ww9)thD#hSDL delta 483 zcmXwz%`XE%7{+&+7HPXgFO8;JL`fwMP8@_t9MCV-7M+W)8Ee~_-P+wcR~$G>=G1UO z!pT84@h^y*gVSEc!Oh26n3?b<^Ssadd!Lz1t8kMay;0Sm!t3#(3vUi9%8MBOEBt4^ zKJP}){9%;Qd@zgsIE=FF*D)yZYwjJHjyg<{@iEWu;)8NAH6B!mt z#yVPp9J0Y=JmPh4H<5;&4Z3A)Y1p!kSvA=oyy6MKkNxJhlGOlv9ljolM1AkdzqHg7 nhfhEt;QNqnjNPWj2i~LMIHz2ml*s8kcOt~)L%M|fojL-)r>Kjf diff --git a/litellm/__pycache__/main.cpython-311.pyc b/litellm/__pycache__/main.cpython-311.pyc index 3dd1f609b374e26d6ff9237cfe2f5ef7e07e2c50..21214a8dec9e78b0e84ff8b51548a98d715b8a45 100644 GIT binary patch delta 8631 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 NB<$ej7c}Ve{{!CPr3C;0 delta 6377 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 delta 4620 zcmai13tW^{7N0Z2H^3k`BH$AV@HI*D^8LzpX{(z?iK31ZGx8dk@y=i?^02@}O|Wiw zHFHG;H5Jqb{dC!E%Q9?R*Jl}tsM)4wX_>A0+;i?ITD!mB&iv*-=R5b@bIv{I-gD2l zr`Y%A0^gubfq@1MekSeqvsDM~3|hPtdV5wbZ2(B%mStb)bU7dM!DaQjwEWhhc^riC z*5yUeiI9jfL`JM6%*v`|I7l4z0vpg62@|4%hb&zwJfB$-cQj_1>t>Np^LU{2T z%}Ts{npD-!Q^pcWb=YusiOGi#HB_HxbtZ^Kc#dBvxZQ?_IAoAm-bdXik zA{~U>1j!9~PLq#6Q=(_miqC<^u1o|2PhGjy-xSJb1FBBr-B%5Vbe^{A1;ZR-<{Q`F<{xb^ip%4`pVx2jR~qs)ZY|&WObBnnCsjT`tWJxL3)*byoLZh(;=WAALtZn(~>Tu}F z_f~g<5Z+u}$Y0!e2HNsbo2K{7plD$_pKKZk z4i1|`Ft?pH4+}0vc7hK^tp^%jpt-8;@5$O+gR$O{A33J4rgTI!;s-IK{qXPOzJ{@S z-N#RA$AazvC}Z`W&$i6e>D{C`m&er(hk1NXZ7j_7tgGz@`V!(VH8l&vM!F`_oYOGJdBAQ)FP|oMnw+(oW$mIk} zd3pUjWiOH!Jb{0`9RT~dq2Z7E-880hb3+&7ej-02_&dR;d|AU0{UIVxa_hkn5&MvA zY~!-!xY<0jn^{tAW@f=y$tjb^Hyw*POR`!rV@yrAxXn(7%RRy7a#_-B>>Q14 z!}PMAMD6FNPe+Dclq4}P5Osj4Z+J+v2X66(=8-VP6L2P|t?36TMsS_rAVE3FULoo# z!A}H7`N(V0`d^4V#t+ z>4?{j9=j9tAZQ67)6%GnnRMVhDr*d|JJQUq+|*PIDf@=h@25#y2&D0U5${_98O}@^ z*o@%I{!HX09(R3GggHRg8Vl8iRf5dcq$Xd_v{U-$Mpv zU{4ZtNW2>aPj^;{9!yY4Yg&hZX(w-4f(UC31NHsLiXxtG4Fi+cncygsgw26iJFjrj`3kC>~AxWj_eqwzbOff!`lt-gP^^b>E0P{px z0?dIYL}>!_3NOS7jREOyx6|x$Tim%W7EHS3UM>-b6CkRiJYs{1dxt>UmJ1y(S|vhw zJ6W`yWS9ccsMsAAtBX0ra2)I_Qz=6#6M2I){7OKXVz-dOO(*@EOpMDkG)cUX2xAS? zh(Rz`J(mcfq2Uxg7gl=BWB6f@ljxNP@PZmL4t~(VZlRk1I~50t&Q$kK0ILu56I~|5 zun+Og0*sCBtPi&vvl;(J=XVbC!*>8hxFXd9*l2x%{0Y zGe|AL0`W5R|Sh68I73qUXRK|uNkmRe-LfC+~TYa!qnq4;4Tf(U&XF_w#H3(PbeCqsvE<_+<|3ERy{b2-!g&2TQk_a`=%Gef zp&P(rF~$awk(DTf8Tg$VdE`kKTQ3&bAPFvsQ#Q!eR%r!H!}^#t8|ort6xNav{Arkz zfYh;d1nb4HG)UH8Bf~SLVS$E&#fdby5Gtp7E5{=fj;6yz{Vkf1)H12KF7|*AmD}Mpmp%^e7ukJ6Xym$RUsga4U`0 z6FjI}Voo81L6Imegr{-QM+%{<{yh}P>nzSDLzu7EkA7obbl|gu1%VqOO6QO5ErHiOv7Ibf+KSsRc;&>T6uAD&nEmc(8xueafdR)3OaRH@pv;19}Gd?4gV%KLA;2m zf|q)Y!Ro z+zH*hZKCWWua#`8t#PIyo0fYK|}@$Z6-uHGFU=rdZ6tg#bKZ?Y!2g{%&@EoZLx zs;Q(*$us>GEmhvgQk#4elu46~{2QUN-o$kH09^@5b9&wvhwHncY|f=(V2}6VOX0qt{E8LW*|~MQ@4h z96jD9xJf{*JUc>EXQHSFXViQ%4?!;ix#OwDlpU0}Pokzs_9(LBkcELYXh$HEP9~%6 z&S;Y|+K=pE-sI+yTjk+a^Lf$XurtaL>mdC1KsY3*J@&vwWwc!fovv#B3#a=I0OM5+ Z!pc$dZ%6tbS6#Lwe-Crjq