From 2eff53e1775e1b99a694637c45eb31209050d88f Mon Sep 17 00:00:00 2001 From: ishaan-jaff Date: Wed, 26 Jul 2023 17:36:28 -0700 Subject: [PATCH] now a py package --- __init__.py => build/lib/litellm/__init__.py | 0 main.py => build/lib/litellm/main.py | 0 dist/litellm-0.1.0-py3-none-any.whl | Bin 0 -> 2965 bytes dist/litellm-0.1.0.tar.gz | Bin 0 -> 2495 bytes litellm.egg-info/PKG-INFO | 12 +++ litellm.egg-info/SOURCES.txt | 10 ++ litellm.egg-info/dependency_links.txt | 1 + litellm.egg-info/requires.txt | 3 + litellm.egg-info/top_level.txt | 1 + litellm/__init__.py | 1 + litellm/main.py | 103 +++++++++++++++++++ setup.py | 16 +++ 12 files changed, 147 insertions(+) rename __init__.py => build/lib/litellm/__init__.py (100%) rename main.py => build/lib/litellm/main.py (100%) create mode 100644 dist/litellm-0.1.0-py3-none-any.whl create mode 100644 dist/litellm-0.1.0.tar.gz create mode 100644 litellm.egg-info/PKG-INFO create mode 100644 litellm.egg-info/SOURCES.txt create mode 100644 litellm.egg-info/dependency_links.txt create mode 100644 litellm.egg-info/requires.txt create mode 100644 litellm.egg-info/top_level.txt create mode 100644 litellm/__init__.py create mode 100644 litellm/main.py create mode 100644 setup.py diff --git a/__init__.py b/build/lib/litellm/__init__.py similarity index 100% rename from __init__.py rename to build/lib/litellm/__init__.py diff --git a/main.py b/build/lib/litellm/main.py similarity index 100% rename from main.py rename to build/lib/litellm/main.py diff --git a/dist/litellm-0.1.0-py3-none-any.whl b/dist/litellm-0.1.0-py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..9bc973ed7442dd787978aa1852409ee3541eaf15 GIT binary patch literal 2965 zcmaKuc|4T+7ssD5Q<{k(YnBjKWSJR8xsn>oh_Q_^X0o?f?r1QKJ%x}Zlo(2+)KyAT zh_Wj!#yTV>vQ?Il0RySa+-gMy7St<5Zczgm#5lu<>K0^pd!$r8`cY7rom|}L>8h%Ts)^@ z%dN`(r7t7h^ZM6nBVSg`PtBj;z~Z_x&MMZ0KL~MTYJXB;?h;PL>_0xJeE}my_xv?` zlZ#7Rzmblvu$fr5ofqJ~#e=gO=UMJ-vrRG5GUPm%#@uC96RpiDJgDUBshzP14T;aI z7I_r^aklX<#29+);4eJ;{`+wCrQcPQO~|T3r{DkpvCW-L0$*@Ls#tg%7(>Q zugxqoO9redHE+{L#i5I5kLydWnG6e+RbmXrq^Pi8x6z!AF3wWbcaXHm^U+v`YT}2v zcWd>xs`ZgQ>UDdrk(Vc@EQ=a^iq{I~lce7e4a+AgDv#K#JloUSw+#N)_py)_lKeBX zKLU7tzY_ug^56Pi6NS)1pb+j9dY~r7*V7MaX>N?Qw!^v*Ed2UV0=1K5VZE}b4#9pO z-KQk!!zT?%*(2i|T+yRqK63|lyD35*=nsJI9u?}{%lBoOmKKi=^O~; zEAOQL>is6oK-I@IZMd1}>+P;iezb@2yCFTVB$lp(^pCg~a7;V(IUSJDgqUb7{eXs? zSK7dRrBYG+Ow9(e41Y-CkX6D!@RPKt+{(Gm^!UYv-)t6`m|4BBLuTR73sDg}XaO|_ z?4Fk5wyf3P8qQ(-62l`C4+;=-$QSUb$Tnlt+s1Q`@@MoWZ&ZbyF3O`^ovY2qFeZnr z*LD;~Z$q3kGDjZ`k5|7W9(fT#hwwLTu=Ezc_lyG81{v z#MxoEjx0e?Dr81MW{3nG6VfIIbB>jzofV#SkI|*<&s5tW>&?7xsjElE`w?As@r|Ib zYkE`=ZYsiTCsc?}r4z^zn9|WOYeKRgyGAkc9Eoeq$|^e@#PH%fV-eloa|e?A67BE%LGFpqG`%#)pzV?fd-X3-IrD<&Y_QRlGKp0s(-+ zPukTAOEfewBpP}oH(NJg1h9)=U~8EC%#kTIRYi|IL}GpKb$GGP*&%<->hY2xWsXbk z@xTRYpyIXBv@#qEj_ln9!A+r({F9-zckQcu$+R3hMFahhe-t%i)EkM)mu*Xm;a%w3 zGb!V%a=P(w6-~bYM>U$Ah^}aj1~;B2Gkuwl>M3((&(wrjhW~+vdYEf?8#gOB!QHsy zqwzk*sNSAX|Rwb1T!2<1Cfa2FSKQ&*y!Co zX!bi;Q#-PQtI;i}s)=i5S(Xq~cdA*9z|1Wl5L9pKbhkFQTfDStx&7`9-@1C>2>zzA4l8-hs? zyE!-?1w;*>$WvxRHn8$HC%nhRX2fbCwYW;59LCXhFJP^~xZ~6_G&QmdyJu-+%#aGD~bcda8kSbSBRpvmrhkblP zrj|;kmgD`=!&wnIe0pgan=bh7H+bCh5d3Kg+`-lJI`41)`bopU7Sq`#&b3ZKX}KQt z)w|UYE;LhdzJZzB{@O{w|5&y0p?$v_<4)0__02+f3lN_e_{Y;1uP}c;*Q39F{$m#V z9`IkI)nD!aa6Q`nJHY=3t?!-x>wfy?>2KtH(D+Y~e@P2(v4QtL0DzzOf_Y+$fPP*5 E5A;O6VgLXD literal 0 HcmV?d00001 diff --git a/dist/litellm-0.1.0.tar.gz b/dist/litellm-0.1.0.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..f0c18b9b7a68345045082c62cea9d91f5f965c0e GIT binary patch literal 2495 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 JK3f2w008FlF+%_V literal 0 HcmV?d00001 diff --git a/litellm.egg-info/PKG-INFO b/litellm.egg-info/PKG-INFO new file mode 100644 index 000000000..96f770a0c --- /dev/null +++ b/litellm.egg-info/PKG-INFO @@ -0,0 +1,12 @@ +Metadata-Version: 2.1 +Name: litellm +Version: 0.1.0 +Summary: Library to easily interface with LLM API providers +Home-page: UNKNOWN +Author: Ishaan Jaffer +License: UNKNOWN +Platform: UNKNOWN +License-File: LICENSE + +UNKNOWN + diff --git a/litellm.egg-info/SOURCES.txt b/litellm.egg-info/SOURCES.txt new file mode 100644 index 000000000..2e2bbebec --- /dev/null +++ b/litellm.egg-info/SOURCES.txt @@ -0,0 +1,10 @@ +LICENSE +README.md +setup.py +litellm/__init__.py +litellm/main.py +litellm.egg-info/PKG-INFO +litellm.egg-info/SOURCES.txt +litellm.egg-info/dependency_links.txt +litellm.egg-info/requires.txt +litellm.egg-info/top_level.txt \ No newline at end of file diff --git a/litellm.egg-info/dependency_links.txt b/litellm.egg-info/dependency_links.txt new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/litellm.egg-info/dependency_links.txt @@ -0,0 +1 @@ + diff --git a/litellm.egg-info/requires.txt b/litellm.egg-info/requires.txt new file mode 100644 index 000000000..156122d04 --- /dev/null +++ b/litellm.egg-info/requires.txt @@ -0,0 +1,3 @@ +openai +cohere +os diff --git a/litellm.egg-info/top_level.txt b/litellm.egg-info/top_level.txt new file mode 100644 index 000000000..8e637fbf5 --- /dev/null +++ b/litellm.egg-info/top_level.txt @@ -0,0 +1 @@ +litellm diff --git a/litellm/__init__.py b/litellm/__init__.py new file mode 100644 index 000000000..25925d83c --- /dev/null +++ b/litellm/__init__.py @@ -0,0 +1 @@ +from .main import * # Import all the symbols from main.py \ No newline at end of file diff --git a/litellm/main.py b/litellm/main.py new file mode 100644 index 000000000..cbefea5a9 --- /dev/null +++ b/litellm/main.py @@ -0,0 +1,103 @@ +import os, openai, cohere + +####### COMPLETION MODELS ################### +open_ai_chat_completion_models = [ + 'gpt-3.5-turbo', + 'gpt-4' +] +open_ai_text_completion_models = [ + 'text-davinci-003' +] + +cohere_models = [ + 'command-nightly', +] + +####### EMBEDDING MODELS ################### +open_ai_embedding_models = [ + 'text-embedding-ada-002' +] + +############################################# + + +####### COMPLETION ENDPOINTS ################ +############################################# +def completion(model, messages, azure=False): + if azure == True: + # azure configs + openai.api_type = "azure" + openai.api_base = os.environ.get("AZURE_API_BASE") + openai.api_version = os.environ.get("AZURE_API_VERSION") + openai.api_key = os.environ.get("AZURE_API_KEY") + response = openai.ChatCompletion.create( + engine=model, + messages = messages + ) + elif model in cohere_models: + cohere_key = os.environ.get("COHERE_API_KEY") + co = cohere.Client(cohere_key) + prompt = " ".join([message["content"] for message in messages]) + response = co.generate( + model=model, + prompt = prompt + ) + new_response = { + "choices": [ + { + "finish_reason": "stop", + "index": 0, + "message": { + "content": response[0], + "role": "assistant" + } + } + ], + } + + response = new_response + + elif model in open_ai_chat_completion_models: + openai.api_type = "openai" + openai.api_base = "https://api.openai.com/v1" + openai.api_version = None + openai.api_key = os.environ.get("OPENAI_API_KEY") + response = openai.ChatCompletion.create( + model=model, + messages = messages + ) + elif model in open_ai_text_completion_models: + openai.api_type = "openai" + openai.api_base = "https://api.openai.com/v1" + openai.api_version = None + openai.api_key = os.environ.get("OPENAI_API_KEY") + prompt = " ".join([message["content"] for message in messages]) + response = openai.Completion.create( + model=model, + prompt = prompt + ) + return response + + + +### EMBEDDING ENDPOINTS #################### +def embedding(model, input=[], azure=False): + if azure == True: + # azure configs + openai.api_type = "azure" + openai.api_base = os.environ.get("AZURE_API_BASE") + openai.api_version = os.environ.get("AZURE_API_VERSION") + openai.api_key = os.environ.get("AZURE_API_KEY") + response = openai.Embedding.create(input=input, engine=model) + elif model in open_ai_embedding_models: + openai.api_type = "openai" + openai.api_base = "https://api.openai.com/v1" + openai.api_version = None + openai.api_key = os.environ.get("OPENAI_API_KEY") + response = openai.Embedding.create(input=input, model=model) + return response + + +############################################# +############################################# + diff --git a/setup.py b/setup.py new file mode 100644 index 000000000..f21baea2f --- /dev/null +++ b/setup.py @@ -0,0 +1,16 @@ +from setuptools import setup, find_packages + +setup( + name='litellm', + version='0.1.00', + description='Library to easily interface with LLM API providers', + author='Ishaan Jaffer', + packages=[ + 'litellm' + ], + install_requires=[ + 'openai', + 'cohere', + 'os' + ], +)