From f7f108d23002aeafb1bbd6adf63e72a1ae8d88ad Mon Sep 17 00:00:00 2001 From: Krrish Dholakia Date: Thu, 24 Aug 2023 14:43:49 -0700 Subject: [PATCH] move baseten to a REST endpoint call --- litellm/__init__.py | 1 + litellm/__pycache__/__init__.cpython-311.pyc | Bin 7267 -> 7404 bytes litellm/__pycache__/main.cpython-311.pyc | Bin 29218 -> 28703 bytes litellm/__pycache__/utils.cpython-311.pyc | Bin 65002 -> 65499 bytes litellm/integrations/litedebugger.py | 4 +- litellm/llms/baseten.py | 129 +++++++++++++++++++ litellm/main.py | 53 ++++---- litellm/tests/test_model_alias_map.py | 3 +- litellm/utils.py | 14 +- pyproject.toml | 2 +- 10 files changed, 173 insertions(+), 33 deletions(-) create mode 100644 litellm/llms/baseten.py diff --git a/litellm/__init__.py b/litellm/__init__.py index b53d49e26e..3b11c14ace 100644 --- a/litellm/__init__.py +++ b/litellm/__init__.py @@ -21,6 +21,7 @@ huggingface_key: Optional[str] = None vertex_project: Optional[str] = None vertex_location: Optional[str] = None togetherai_api_key: Optional[str] = None +baseten_key: Optional[str] = None caching = False caching_with_models = False # if you want the caching key to be model + prompt model_alias_map: Dict[str, str] = {} diff --git a/litellm/__pycache__/__init__.cpython-311.pyc b/litellm/__pycache__/__init__.cpython-311.pyc index 3b65dc585fe8cd1d112607f8b09471fd6029de25..871321feb1ce13f96578d4b21e2420dddce73db2 100644 GIT binary patch delta 1846 zcmai!%TF6e9LHz<_8MazHZOz0*kDWz_=OF@kTxOVk?;y6p(9n6;~9*@E=2216LK-C za;Vf+a@ZbPDW@J1Rk>7hrTziER6RL2%a>M))GAUBJ?GTlEDMdhhwkotfAgKsZ+_#Q zS^3S(U$f4aPA8AxTL1Y^viHo{%l-H)tN8EbOkCRZLOA3$nEOPy$Pli(s`N@GzHBXN?@ToT+gNog)kW?;GV1!u{n z_g-QSTn29Sm9XD{mJpeLipT;*_lK9%FAL;_5usPm&Mq7hBi)=oH0-?AhP%!hoca$L5z{>WT{}lak5NSASPgZ6~>bgZ$O-ecoSj@ z;u^#>jnIiFupXUMbxPH!sxeiQs>W4Ks5-4`O4Xe-3wQ>~twXulf6LJ+8l_2^qG=kV zajH!v8_#)siEI`)JV&<3Eg>UjaE3$B-xlU~Slkhm4b#Y?xQv&@6}+OcRh4ZEHy|Q% zTevB%;Wcp`uZtUaL)^rh;uhY5Ty7hM@4RIjxE?ksKbX8`(_%3%E5DlF`WlXVxe}G> zVfKI?H(cTop+Yt%6mzAln0rvIntw8IkCg-474HkEK|JuuTd; zkb+D`K%TS~9>^2PiA4NhBASXNq(MgfOoo^YpYlDrNx0GT>$RJsjuR8kDHU{h<4F~L1_ERd| zJ1S9${f$cwHf)!vKt(D`$C8(Mv&8z!n~wOd)XlPb*r+w1%kLKt3yn^#lYLZ__p|Dr zmn8Pr(BL1IXf`htVQ(7z*hC1uR!4p@-UCDow csO*33tDzt~uTik>Y(L?vtKA;6iT%!h00jG&r2qf` delta 1735 zcmZ{k%}*Og6u@Wj2Wx{dV2mMv`7p#7F!%!#Fb3MBP534$lt`mW$mC5ex4Rgv7pkOH zO{E-K^^$aZ%qa(|DpC*eA%8(t^;D$xfc8|WhbmGJ?V*>R`ewZ#+*NmXesA9VX5V;c zZT~U%+pO;!pU+G1_(l00;!l0u^pmI2!3re>!d%?J-Q7Z(2X6#N4tr=Mn{iskV>2#c zz|FisSrd2ur(&aNDQm7X6@rUNrt&Z!cv%a0m>&zY)=d+$nydnCHq&gGcAN28CSWry zHB(_7Hs!Z&3ffGoWjbx9%`zdIX}3(5%>>X?2tI4KO?6l|U9*{>Y22&_H@de-SRcl4 zkw7PepbO9LXAYghHOzYOtYy8>2jR=C|7uo&fvYJD)@4HwfngZ2%3QC@qIKCQ#Bk=A zHFLZ!o4{-g;+C6)DM&!l$|@;L(=ctN8JNN4E*882vsa#C4znzt<}sliY-1$w`w_ zCQ~L8CX*)9CZ|ni1lbH$TgPfQ`1)lz9_N!h#ix0OPw@n|ZiS6!UN#Gx1*xza!#1a!y%b3(6wXE6$N!%PpJkp1gvQz_z@qtg$s^ovkYyY(v>(o5~j3 z!nt&t#CBeb9o&pL4Cz*0mh<~EH=OImvSvtIhgz|8ke7AI^}6bJziOZ#=|4y}dnWLP zZ;2YmppFYfFL106dnVkbi0ZqZ`!uG1=LscZ=wsCI@ne3V?E%;FMY&w2I67b!Fr*@& zDZc+u&EVjt`rn@9jHnWm)Bz0YpuiB~QA^=ai%-YXsSo3cnPgh+6(%guC(y6I=k4-^ zM7IYKbEzZxXWnJ^uo#I{fAW6mp3I8=yny)0sS5&&0!sq71l|yMQ{ZOx^R^tNclGbv zqxxU%pA?az7$C59|yu& z!>^Qp%X@jbm@n@s`9nhjzJF9GaMkeE)PoYf0+(ERke6%wn-(i%sy_z4qLJI8aHGb{ zTJfM@xQ;a3Pjy*LSP@u7=%wJOej1Eaw#CSfz`Fvw0`~=y0+%oGA1Q|mAIW@CJwYK} zPWh#qkUt%i(sR;!cI7%J<7fYW{n{HoX?fy&vi-H^jD)M3ovXCN>py8c@9a4vf%Eo` T6aRTr>xoqTITUm`#RvEojE;Jf diff --git a/litellm/__pycache__/main.cpython-311.pyc b/litellm/__pycache__/main.cpython-311.pyc index 5c77739597ed832394bba682c5ae9663a088fb45..02f2cbf12a9d2333488dd69b30c57a6f0c2998d0 100644 GIT binary patch delta 6433 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 delta 6529 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