From 83b8af8567ffeeef77c3c1032f3e80c33e75b471 Mon Sep 17 00:00:00 2001 From: Krrish Dholakia Date: Sat, 2 Sep 2023 13:15:41 -0700 Subject: [PATCH] adding support for aleph alpha --- litellm/__init__.py | 11 + litellm/__pycache__/__init__.cpython-311.pyc | Bin 7793 -> 8053 bytes litellm/__pycache__/main.cpython-311.pyc | Bin 28627 -> 29325 bytes litellm/__pycache__/utils.cpython-311.pyc | Bin 82054 -> 83214 bytes litellm/llms/aleph_alpha.py | 138 ++++++++++++ litellm/main.py | 28 +++ litellm/tests/test_completion.py | 21 ++ litellm/tests/test_streaming.py | 214 +++++++++++-------- litellm/utils.py | 30 +++ 9 files changed, 351 insertions(+), 91 deletions(-) create mode 100644 litellm/llms/aleph_alpha.py diff --git a/litellm/__init__.py b/litellm/__init__.py index 57ba28b998..be21654bda 100644 --- a/litellm/__init__.py +++ b/litellm/__init__.py @@ -28,6 +28,7 @@ vertex_project: Optional[str] = None vertex_location: Optional[str] = None togetherai_api_key: Optional[str] = None baseten_key: Optional[str] = None +aleph_alpha_key: Optional[str] = None use_client = False logging = True caching = False # deprecated son @@ -225,6 +226,15 @@ together_ai_models = [ "togethercomputer/llama-2-7b", ] +aleph_alpha_models = [ + "luminous-base", + "luminous-base-control", + "luminous-extended", + "luminous-extended-control", + "luminous-supreme", + "luminous-supreme-control" +] + baseten_models = ["qvv0xeq", "q841o8w", "31dxrj3"] # FALCON 7B # WizardLM # Mosaic ML model_list = ( @@ -240,6 +250,7 @@ model_list = ( + ai21_models + together_ai_models + baseten_models + + aleph_alpha_models ) provider_list = [ diff --git a/litellm/__pycache__/__init__.cpython-311.pyc b/litellm/__pycache__/__init__.cpython-311.pyc index 8740f2ca7b72e8f0af98a0f93e487158a0b01b7c..c2b76dce9e6b01602ba0a442589af246a681b757 100644 GIT binary patch delta 1374 zcmZXR&u<$=6vt=Rv0bl|rgdG%CO?|Qc9M+zPHZ=g3;hvjljis25EAhL6oS|7hrh%3{x8pZrLkwDUb!yOLDs<>K2b9-rhqSnPhh7*pwMAdKSlr~ z8pKX}Tjy({vq0zwvoZ&B+?Cs^y(d-ZgMJvm`_dx|mtYXx5Zd$h%`F-<6O<3n5Q2PA;m-gsGuJbWdA3LdPNdfY1@Y?IV*+CmBMSUyOQ@bFaN`?^Cg3J4=VdwvZ^B!sNzC8E{5doNP#5(Tx}vYr)n@IES=-juOr_eo zzCkziO}eRX(Jg(OZtFXAN2ioxzqCfw-A33tC3SY^GSYhu~j2I6qy>9X6 zqca6y#Y*As`$ih=r+in54TuS<(-3EFsEC@9Kd40Fk?3?RZjAFMO5mbj)Pe#5ff0dG z{;QJg8W4}e2-Rvtxaz!a3yVysanJd;wQj3*X;r;YELF>qw{vAyyVzzUVuwaatDQeh z<9=BY7}R|KOPzL~J1v!~2L{tw&HLZXNv~Yec=`Mn6H8)CS%IqpuM4~(a7|!Y;JUyK zft!t}t13ym{P4mj(j^{tFUv+RuecMoK2h%H&)hvu^AHwANXQ3^9P#y&g&&s2vh4F!yZ)j?|h)W?64|u>B zJ(!p=@xsAy&=@b8-i$Xdo{VQsCLTDTi5$3?82x4`#O`E&|M|~<=9`_#o(vpEDqfeD z8zp=`*BrwK`?HE#BE5IkYW$_N0gSW}N~s;+CLq+oN?55y%vB#|1WN>a8HqMC9WyY) zs)ny?s&=3b>cNW5wx{I;E}?6{cIq0z4o&CIQRJG7TuYI2f(zWxTBy=iaAD}f?anrgK>vS-7(h3OO+6BA(MV$w4DCt~ zWzuaYf2lQFT^fnGUg7P$J-sX>b;IzkL|cLIui6@2T7r>%eyDBRfeDyQYiIzbU>Y@u zNo=3c5b71wFzO6yAL=Y>gmtr?Z7j&VDt#*bDtlFiR0dQARfbjesf-BHeylc!)dtw~ zc{%1|eimYVEW&zOfEAX){GO2xLOf0A5F}tB88BLYDYS z)k9+AhgDNNQ0>##iL9RAtu~v~(}snQEls#tMN;JUyKfn|Z40zrZE8~t4tk?+7}mJKLRFc3GjF`qv&|0MYzmMtyM US?}w$5;6U<<^Nh0QX&@q1N=b_(f|Me diff --git a/litellm/__pycache__/main.cpython-311.pyc b/litellm/__pycache__/main.cpython-311.pyc index 5702cb34f2d9a446a5041dfa0d9a8b09a9e27708..ac5caf6db963227d8117c2ba708a7006e33c4d2f 100644 GIT binary patch delta 4761 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 CVw$-C delta 4516 zcma)83vgUj8NO#=WwM^gGsNtBTsa8OShyQn_NJQD}*enTBx+3~2 z9hF4T3G!xd6$;}ct+_x1;UW0N9>+BxYf%oVQikrHwTN#XSgIc&` zN7}uL+o(01(n)*54O%0-_l6r;a9x>sMiVrm0ZrP+&aJbP{p`={%AE}fJJZ5hLPKg- zVh-hWV5MEC45K6{jbWR%HYl#xi7lZOEMDQ+0PZdO;7U8;Ce1e6#4a7lUfZ;a)6Dj5 z$|u*eJ(ZmmTGL!S7zyK8r&_bOIWd=JSZ7wq*rZj=?PqhPC8QJ(cn&&_YqO6P_y z=pi}qi#_31t#!5rH^NAH0dcURa=UvF1+t5$;;`(Y97B`wlwDn-WOj|FF zu!qGB#-r#R`({Oz*paXf{7-peJHzepb}3!H?(i0$J={SAt$ntK)emK{k1Ep1R(3Wu z+uWPbn;T`_n?&MqE{v)g!Rez76L*r|2SZs&%+TD>MY+y!~;^6p@tY-oZq zv~9e9!_I_N@aC;$-bhNHuRq-Ve|aK*o+sT)o+Q~}X}fpVm8BVbY;$J$b<37ND~<7F zRIaF!-E2)&i*1UJscoURhv7P`{V(Oc1nQIKi7%N`$v*+n}^^q)GO>$`Z2@uk?Fi{)f%GtiDzL zZddQ+{%-#ae|Km*;{Kkms!YFsXP!wWO9kTfb4pF96XHwFZK+-{o-z=(x-8IpI=0 z0Y6vgMx)8DpvS4s1m(E-s3}MTzM#5dg%FsECb=g99=9Bd8dUkXO8w}DmmO+Qi##}- zL{I=i*jGzSsfdICD{CvyP~hu>262u~(GV+WY)S8jp-5sIzJ?uZ3}y0YjvzTHzE$>m zWBHl^)H#TNL1vyi zHzBNa1QN+pJ;FY0dg|)S?uD?#W5Ci{2ClAv=O&@>V9VjFE1X}Zu&ec_S5>HcYDodM z_m%`8>Z1B7s=!%;u|8_@_=8hwh)?N0rnc?3^OD1jM>7M|1C{GiobqwE9OQ+CRUi&U zO-jJ+QbIHX<&qSSDl3YQcEgP3Gt;#_Ha89_0+u#SLl^>xrnpW_QQ0{u&+wc?lY=k= zTM9kQv}=DrdRS%q26GvT>J`~fPcuh*s~KyFu0yzqJ=xw&?qHv^uP0NiY|G82?;!bZ z_VAW7_w<$hR*(zFPN20@7mJL`JH6!lgQS2a6hT zOz%N*+O$mJqkWG!sZ?&XUu^yjA9 z`&;!3{biZ<{ziB=8ez^B56{8J_xYg~5w`~o8Iw*c5IzNnCQ(_XGmu;Z%u3;*BKvr# z*rbQ9@~)1RI)+G9lgAx;)Jda#Ng2og0x?xz$LdWH|Jn8v15DDzdV@|~k1F|oX1 zu?yRzm`r~SFZxRah_DbfD4viSHHD@|eIAvUd(#p~*{dE5*EJr-pZuB=+=h zbuo6~XvU~Zbx$~#N|9Q@-S>16>#@tmaejZ{$9n9-;y2j=m>#5@cs+6k5e@;sHL-MT z@x;<2NY%yq_%S575oCn1WvqS7FV*e89VzjP>|qqaP9kQ~2#&cTx6b`->57}a9`4&pvpXZS6VlKw>n_{Tis&Y%mrgavi5Zh0^uDHW_*$&1y%+PL7dBG?EEkFZhYP!X@UHoAbSn1!f5 zG!vqK#pz$z?-g5V8Hmy%oIiXiNN08i9u zl*mUYKsET_aY;@opvwMfT8R|n7?5HGP4OJ@>ZBNKim{1B0iBI~WT3OW4Skrr1-jgn zB6reO;KILP4!sP)UepspUStdY0``Qz5Pqh}AN^k-k%=H7I!`K_yrFrkCzYfw3d^vc p2qx>|F0zco*_V=ZI^AUf;F3|$C7;PzOywenv)LOr+;2c{{tKJbMos_# diff --git a/litellm/__pycache__/utils.cpython-311.pyc b/litellm/__pycache__/utils.cpython-311.pyc index 6e56ae6b94ae3671a765faa7f2f6f13c3ce87c1e..a04749ebcd75d44327c41dd0b818c6cb7de6c53d 100644 GIT binary patch delta 4048 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 Vln$zX7|#j){C9hou&d*s@876p3D5ul delta 3677 zcmai0YjjlA6`nmacgTYzlgE$;2?+sHZipcfNy1ZuU`1;lqSo-5hRgs7$;{-;gb)aX zN5K{Zw5NDlwTVzIDuUt_MvK}4QXWen)V3}!xDaA%aV;gFP~=g2zB33eY*+7(@9w+L zKKpg|K4-68rLA15#czs>i?PV(MB6z}>eOxVYyH;acB9ijkZj~T#&-wS%lA4yrFkyZ z@IN(=jT_aT;7OWm#U571oy-^SyCPYxYpiMf&Oj=^>hH&QvY+Sso@%$uw#>CDX|3JT zp6Ka6Mt-!DC-XX&BsYtH94MAsJp6K~9}VDRnlpGoOZxB|QhlXVw%Qx#xuG#ma&r_n zakA7t*`g0L=C{NVe|g@3A*M6Hyg{$8&g%|%eYK6DHug(t+>G;h1C9Q+Ca*8#uJ`B~ z|9D<`w4TItk}>7;ajm&Dl-IVVQ2}4jIw_`DvR{$`2lI_XtqoSX$jcUNvUNx08e0}N z*k}w->o`oe@lQL-sEp?C}tTyD0$W;^nd}2CZ@>mSj7^@$9I+3dQ4?4>o6R`hY?(1Am zGx)jAI-1TO?y8_E{Q0g2X+FQy^*(v|;b;3hXF*VTP@_EHUq3t0)dc1X_-+LCBB**k zY=c3IdC!LN^n#JM@pnmjvoZph52ymz0SpiXv;b=O`PT1GW#I)DCiy1k>jA zd04B|ug9>(;C2A+g2AN#rFa9V7QjZp5{NtiYARp7y_}};L)!-xP6u}ZU?E@y)>i`X zXITk&kAhkXY8fA}f3BW<&!EylpTf3v5}l%(mH z?G1T-^CDrnC5Ju46As>!SqCy6uogDgNsuY;0^>CvJUG&^1LV*6YX{4;y^@SE&Kx{! zkKF?9R=_KK|B-y>t01=lUIQ51+I^qr4N2<#80@n*0V<~vGL1<3`Bm)Y;Q(nS1Q)~3sdV*{X zmUaRT090fu+MB(^?vqkPkBZc=3C2Ga!cH?;5K*!* z?dvqCX}OdgtNLD*Od;>OG?=3JyO$==RvvwMtCV=-@_5?GFJB%JyBT+%($KC51yIPXd= zx`XLZmb(5~T0`&27NjOBPeLHcfE2((u!*`<2b;_nl(2q)h#9&5qV1X@aMQ(cD?LIV z2&pbJTy3M#lm?wibN%l4uca7F@o>XqSO!3y0=behqug$+x!sY|Mpf4>5V;+o12(`y0jObs z8|UDA(x7<7Ma7gVPP!)67n}RhGh%fr#fa)u z8YbRNC6`#AN~0)Bbf?k;QJF?Y!X(|Yr|;dF@^wIuo^+c?OsB>?^qOvCC9qy5!AzPQ z@(0R;ZN9oma`vc28M7Gi+jJ_Uk>YqdO_oV4${^R2SZs+0H~}hlgw0flD!LnisfbIl zIu@Xs`&Q&soqQU2fGx5_f<5B73|c29_NSuZx|Y*xxegDLUAv{%@_k@R7c|rn?`=;B zztx{yM5o1{Gig{djxTjz*0p-r7s&YAA|;E4&`dEliz>8}z%`@lWzO8SzBbiKrWOn|)`wWHG6^^-7Uk0Ij@Lo& z5aC=J9GxnSo7BKYicfNBtoE?{oE**@L_wQF*-aH)c{E6?k^GkMzC2oJb-W_CFUaSI zj^yMk1MZMl-ZZa5>9xxtLDHr}^?HyQSlB0ip;J+wy1||Q@1hp})MdrtDo)OHu&L5C zgGO~>L=KH<;7u1J@+n`NA?d|oPd@F{XsXCBq8F${ykA5`G(*^nDQD<#2&>t04^p=r zsxT0nwt6}1s!qZoB*&DgqOw>XGt)&|G0oQI$bG*G|Gk)2X|zWKN~wez#HLajtu@P) zUExnl$!#4Pso;u=3R%W?!_p4{_ejv^F*p8-!{b+@(%YhW6eVY<+e}&A2v4fulbQi{ zhC4@*yhVRtH-ArqMO9aW2nrr8;swJ&&E(y2ZCkA zfI9d#9@IXV?E#zuU>s!IL1E})nD!XPGlqdj4Gxj{0ONqVpw%U;nuei%848D?N*MkJ zL+%*TBzrAQ;`L^`6g5WHMN6Z199tPaI+mifv~nx;@3njne-u79o@P=}m6c@E{dYX8 P_+Nc@b&mMy1X}eU` 0 - else "" +def test_together_ai_completion_call_replit(): + try: + start_time = time.time() + response = completion( + model="Replit-Code-3B", messages=messages, logger_fn=logger_fn, stream=True ) - if complete_response == "": - raise Exception("Empty response received") -except: - print(f"error occurred: {traceback.format_exc()}") - pass + complete_response = "" + print(f"returned response object: {response}") + for chunk in response: + chunk_time = time.time() + print(f"time since initial request: {chunk_time - start_time:.2f}") + print(chunk["choices"][0]["delta"]) + complete_response += ( + chunk["choices"][0]["delta"]["content"] + if len(chunk["choices"][0]["delta"].keys()) > 0 + else "" + ) + if complete_response == "": + raise Exception("Empty response received") + except: + print(f"error occurred: {traceback.format_exc()}") + pass # # test on together ai completion call - starcoder -try: - start_time = time.time() - response = completion( - model="together_ai/bigcode/starcoder", - messages=messages, - logger_fn=logger_fn, - stream=True, - ) - complete_response = "" - print(f"returned response object: {response}") - for chunk in response: - chunk_time = time.time() - complete_response += ( - chunk["choices"][0]["delta"]["content"] - if len(chunk["choices"][0]["delta"].keys()) > 0 - else "" +def test_together_ai_completion_call_starcoder(): + try: + start_time = time.time() + response = completion( + model="together_ai/bigcode/starcoder", + messages=messages, + logger_fn=logger_fn, + stream=True, ) - if len(complete_response) > 0: - print(complete_response) - if complete_response == "": - raise Exception("Empty response received") -except: - print(f"error occurred: {traceback.format_exc()}") - pass + complete_response = "" + print(f"returned response object: {response}") + for chunk in response: + chunk_time = time.time() + complete_response += ( + chunk["choices"][0]["delta"]["content"] + if len(chunk["choices"][0]["delta"].keys()) > 0 + else "" + ) + if len(complete_response) > 0: + print(complete_response) + if complete_response == "": + raise Exception("Empty response received") + except: + print(f"error occurred: {traceback.format_exc()}") + pass + +# test on aleph alpha completion call +# def test_aleph_alpha_call(): +# try: +# start_time = time.time() +# response = completion( +# model="luminous-base", +# messages=messages, +# logger_fn=logger_fn, +# stream=True, +# ) +# complete_response = "" +# print(f"returned response object: {response}") +# for chunk in response: +# chunk_time = time.time() +# complete_response += ( +# chunk["choices"][0]["delta"]["content"] +# if len(chunk["choices"][0]["delta"].keys()) > 0 +# else "" +# ) +# if len(complete_response) > 0: +# print(complete_response) +# if complete_response == "": +# raise Exception("Empty response received") +# except: +# print(f"error occurred: {traceback.format_exc()}") +# pass diff --git a/litellm/utils.py b/litellm/utils.py index d10a742fdf..7c3eab50ca 100644 --- a/litellm/utils.py +++ b/litellm/utils.py @@ -780,6 +780,25 @@ def get_optional_params( # use the openai defaults if presence_penalty != 0: optional_params["repetition_penalty"] = presence_penalty optional_params["details"] = True + elif model in litellm.aleph_alpha_models: + if max_tokens != float("inf"): + optional_params["maximum_tokens"] = max_tokens + if stream: + optional_params["stream"] = stream + if temperature != 1: + optional_params["temperature"] = temperature + if top_k != 40: + optional_params["top_k"] = top_k + if top_p != 1: + optional_params["top_p"] = top_p + if presence_penalty != 0: + optional_params["presence_penalty"] = presence_penalty + if frequency_penalty != 0: + optional_params["frequency_penalty"] = frequency_penalty + if n != 1: + optional_params["n"] = n + if stop != None: + optional_params["stop_sequences"] = stop else: # assume passing in params for openai/azure openai if functions != []: optional_params["functions"] = functions @@ -1766,6 +1785,14 @@ class CustomStreamWrapper: except: raise ValueError(f"Unable to parse response. Original response: {chunk}") + def handle_aleph_alpha_chunk(self, chunk): + chunk = chunk.decode("utf-8") + data_json = json.loads(chunk) + try: + return data_json["completions"][0]["completion"] + except: + raise ValueError(f"Unable to parse response. Original response: {chunk}") + def handle_openai_text_completion_chunk(self, chunk): try: return chunk["choices"][0]["text"] @@ -1832,6 +1859,9 @@ class CustomStreamWrapper: elif self.custom_llm_provider and self.custom_llm_provider == "ai21": #ai21 doesn't provide streaming chunk = next(self.completion_stream) completion_obj["content"] = self.handle_ai21_chunk(chunk) + elif self.model in litellm.aleph_alpha_models: #ai21 doesn't provide streaming + chunk = next(self.completion_stream) + completion_obj["content"] = self.handle_aleph_alpha_chunk(chunk) elif self.model in litellm.open_ai_text_completion_models: chunk = next(self.completion_stream) completion_obj["content"] = self.handle_openai_text_completion_chunk(chunk)