From 3d9518abbb447a3875f78c34d0944016e6905b7d Mon Sep 17 00:00:00 2001 From: Krrish Dholakia Date: Mon, 21 Aug 2023 16:04:15 -0700 Subject: [PATCH] acreate thin-client --- litellm/__init__.py | 6 ++++-- litellm/__pycache__/__init__.cpython-311.pyc | Bin 6789 -> 6762 bytes litellm/__pycache__/utils.cpython-311.pyc | Bin 56545 -> 56783 bytes litellm/integrations/litedebugger.py | 8 ++++---- litellm/tests/test_async_fn.py | 15 ++++++++++++++- litellm/utils.py | 6 ++++-- pyproject.toml | 2 +- 7 files changed, 27 insertions(+), 10 deletions(-) diff --git a/litellm/__init__.py b/litellm/__init__.py index 6093c5375..5792f9cbd 100644 --- a/litellm/__init__.py +++ b/litellm/__init__.py @@ -4,6 +4,8 @@ input_callback: List[str] = [] success_callback: List[str] = [] failure_callback: List[str] = [] set_verbose = False +debugger = False # Learn more - https://docs.litellm.ai/docs/debugging/hosted_debugging +email = None # for debugging dashboard telemetry = True max_tokens = 256 # OpenAI Defaults retry = True @@ -20,7 +22,6 @@ vertex_location: Optional[str] = None togetherai_api_key: Optional[str] = None caching = False caching_with_models = False # if you want the caching key to be model + prompt -debugger = False model_cost = { "gpt-3.5-turbo": { "max_tokens": 4000, @@ -262,7 +263,8 @@ from .utils import ( cost_per_token, completion_cost, get_litellm_params, - Logging + Logging, + acreate ) from .main import * # type: ignore from .integrations import * diff --git a/litellm/__pycache__/__init__.cpython-311.pyc b/litellm/__pycache__/__init__.cpython-311.pyc index 6e75350c89aa5d64c02a4f8964ea23e96207e4cc..a833b03a98c989cdc579137be4fec83068363894 100644 GIT binary patch delta 1165 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 Dp|}^I delta 3703 zcmaJ@3sh9s6@B-;nUP^cF%c$y5EM~H#Xq7b7zhZfDAo|8VssqmJ&}(y~%g1eFHENunJJ6 z_l=KL`fi6D0ocL8hZUouXbgy*Y{B@1$XyTzad60VJ^wLG1>Ss*!$bp<>NVqg%F&$* z?1hWf?Q$>HoP}DMVWFC@q{vVA>Gu;KkkR`wkwVk?4?PG72VtRyA^&t1dI;P;y<5^Y z6M3B-NYTha7Ml91y~E82_W51Z@AT&{(dc1Tm6{RyHpUzQyam{zKS(_wM>at|4|v)R zZXY|D9zibXE$Mei=p`_h0UrQ9WEV10L!Zz=USh|lg|QKt-N_Aoa;94$cl2FZjbzA2 z+{h0nVmuCx2_R&81M(fnT>{3vY}2&fmfN5|=5q}q_t>pzpYmj#$nM|wOVApije}u! zm6uSB&Ij=o`!;)sr3&Id*ud!%$U}Yp^pPg=HQSKW*YW^-J3E%+A+0RxrC-mH2qy^O zUod?SkfDADX*l2!Kmqpyq<;g-048waBx1S8;1+Q3_29rpEe~g5GsB5hA2xHG(kHMZ zxCGMgDOuulyNZf@v`t?zyHK`uI<&EGa+ig5>KH(Su~-|coEsL|0R24)K>ZRIc8aw$#PD9`)5o-=QgnMAO=3x}|Zh229UH_B_< zR4GS_mi*7N7u+!a>?5yI}1K=$ir2PzM5r0*0_ri#+ynSSSac zz@Cs-0Q#}|MRtqu9l}0Y6x-{xB1tQyc2f#5hu(TFrd>+5j(rHwqw+k;vpeSRo_{5D zz@zpRgmc2m4i${394T!##mKu!)<|hjij)#-Zitb&+%T9xj!o^wl}6c;W|bR*;M8bM zk<+`G&)ML0E`&htmhuc&n)+L&#L7*B;nftIB4@;z&kupu`C$ZdTpBEwMg~tM%B4g( zYm#zll3AWg^j8YQLM#p(xRos{O|YSoX$16WcB*t08N-sw%0e5!A~*CGfYGd}EYUU{ zUI7cUl@I@ko>soEvKp?5aJs-HBhD$a9#W z0U&nY(LiVl+)~+@iWkXY)?;~s8MqhG8# zOP=Y*#r^UVGq$on{Qg&QcQIuMpny9(c{v)krLLlU)w#s0YDJWCtE^{kTS?5NTl0k`xn)u)NQov*;Z0w!WL zaSHJYSlI3318s-k8?dn8nz7_7Ho1l=`$;ytSu>gZQ@5W`h(%t-iM2fVdv}hC@0{1hd{{Sl4(E7e( z&D?C5JX)!rii6g|{Vd2JrxUc(NiE>SE<|h^Sw(#xzV)s35%LAX`qlJiSL!V!Out#b zh>#;J`E2jeM=_*hF4_q70w4lQ4+6vh_Jaeou{CF3llSumb?7-g=DjdN*0PC>BPJnp zh9yt)yO*hS6TC%yO^C0!5(9TB+LOa#*xX*vqWnB(vCF@hj$?Zpv(4A|nBn@P#;K-w z-1QC;h@1$tXq+NS+c9%*?5Hzd6QDM+@{939--J1e>qbz%U!zW!r%a^6F#C#&^8J+k zZ)3EE85alj#7agNAMbp4ZRMAxvM%>%7Sl0gdSMV8W>Wd0l1QuI~LIm!UB3#=d_ z_Nf#J5=VF{?@io?x44^d zy#?qv4gCvLQBww_j+&ykx$3YP)&if`<5XSzGgqwi3A{c9{1xyS;ByX!t$w z-(H<)zR#ILee5;AT-kyX;iFyvFI7Q^4FVipr)1MFxG*Jq3V*V*vw45$um+?jM#HYq zkFe@>zzq(L`E(Yaz_6%ZzvfvQID-!>@)k2qqB9|i_g}ozq91006aAwK)0}{6=aLcR z&o2~ryU~@GoKy3-y=uNEkBYXxh52v%iL7D~EsK-lF|GpRHUq>xnFvnYgt-3#S026# z#CHHKhhI-XH9OlfwGv+=onPkk9@K|`E*N6vU?}OV diff --git a/litellm/integrations/litedebugger.py b/litellm/integrations/litedebugger.py index afd70eefb..1880c4694 100644 --- a/litellm/integrations/litedebugger.py +++ b/litellm/integrations/litedebugger.py @@ -3,14 +3,14 @@ import requests, traceback, json, os class LiteDebugger: user_email = None dashboard_url = None - def __init__(self): + def __init__(self, email=None): self.api_url = "https://api.litellm.ai/debugger" - self.validate_environment() + self.validate_environment(email) pass - def validate_environment(self): + def validate_environment(self, email): try: - self.user_email = os.getenv("LITELLM_EMAIL") + self.user_email = os.getenv("LITELLM_EMAIL") or email self.dashboard_url = 'https://admin.litellm.ai/' + self.user_email print(f"Here's your free Dashboard 👉 {self.dashboard_url}") if self.user_email == None: diff --git a/litellm/tests/test_async_fn.py b/litellm/tests/test_async_fn.py index c20c5cde6..da6004c73 100644 --- a/litellm/tests/test_async_fn.py +++ b/litellm/tests/test_async_fn.py @@ -9,7 +9,7 @@ import asyncio sys.path.insert( 0, os.path.abspath("../..") ) # Adds the parent directory to the system path -from litellm import acompletion +from litellm import acompletion, acreate async def test_get_response(): @@ -24,3 +24,16 @@ async def test_get_response(): response = asyncio.run(test_get_response()) print(response) + +# async def test_get_response(): +# user_message = "Hello, how are you?" +# messages = [{"content": user_message, "role": "user"}] +# try: +# response = await acreate(model="gpt-3.5-turbo", messages=messages) +# except Exception as e: +# pytest.fail(f"error occurred: {e}") +# return response + + +# response = asyncio.run(test_get_response()) +# print(response) diff --git a/litellm/utils.py b/litellm/utils.py index 108f43e57..37e367728 100644 --- a/litellm/utils.py +++ b/litellm/utils.py @@ -718,7 +718,7 @@ def set_callbacks(callback_list): supabaseClient = Supabase() elif callback == "lite_debugger": print(f"instantiating lite_debugger") - liteDebuggerClient = LiteDebugger() + liteDebuggerClient = LiteDebugger(email=litellm.email) except Exception as e: raise e @@ -1008,6 +1008,9 @@ def handle_success(args, kwargs, result, start_time, end_time): pass +def acreate(*args, **kwargs): ## Thin client to handle the acreate langchain call + return litellm.acompletion(*args, **kwargs) + def prompt_token_calculator(model, messages): # use tiktoken or anthropic's tokenizer depending on the model text = " ".join(message["content"] for message in messages) @@ -1022,7 +1025,6 @@ def prompt_token_calculator(model, messages): num_tokens = len(encoding.encode(text)) return num_tokens - def valid_model(model): try: # for a given model name, check if the user has the right permissions to access the model diff --git a/pyproject.toml b/pyproject.toml index 54daedd69..94ec5ccde 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "litellm" -version = "0.1.446" +version = "0.1.447" description = "Library to easily interface with LLM API providers" authors = ["BerriAI"] license = "MIT License"