From f04d50d119b01af58b49032143d75450de20391d Mon Sep 17 00:00:00 2001 From: Krrish Dholakia Date: Fri, 29 Sep 2023 11:33:58 -0700 Subject: [PATCH] updates --- README.md | 5 +++ docs/my-website/docs/completion/config.md | 4 +- docs/my-website/docs/completion/output.md | 2 +- docs/my-website/docs/getting_started.md | 4 +- docs/my-website/docs/index.md | 18 ++++---- docs/my-website/docs/providers/ai21.md | 12 ++--- docs/my-website/docs/providers/anthropic.md | 14 ++---- docs/my-website/docs/providers/nlp_cloud.md | 17 +++---- docs/my-website/docs/providers/openai.md | 5 +-- docs/my-website/docs/providers/togetherai.md | 13 +----- docs/my-website/docs/proxy_api.md | 4 +- litellm/__pycache__/main.cpython-311.pyc | Bin 50588 -> 51352 bytes litellm/__pycache__/utils.cpython-311.pyc | Bin 135771 -> 135764 bytes litellm/tests/test_completion.py | 45 +++++++++++++++++-- litellm/utils.py | 11 ++--- 15 files changed, 84 insertions(+), 70 deletions(-) diff --git a/README.md b/README.md index b3cfea0f0..d155d2d4c 100644 --- a/README.md +++ b/README.md @@ -45,8 +45,13 @@ from litellm import completion import os ## set ENV variables +<<<<<<< HEAD os.environ["OPENAI_API_KEY"] = "your-openai-key" os.environ["COHERE_API_KEY"] = "your-cohere-key" +======= +os.environ["OPENAI_API_KEY"] = "your-api-key" +os.environ["COHERE_API_KEY"] = "your-api-key" +>>>>>>> 6a9d754 (remove api key from docs) messages = [{ "content": "Hello, how are you?","role": "user"}] diff --git a/docs/my-website/docs/completion/config.md b/docs/my-website/docs/completion/config.md index 4bfd003fd..44ff6e8a7 100644 --- a/docs/my-website/docs/completion/config.md +++ b/docs/my-website/docs/completion/config.md @@ -17,8 +17,8 @@ config = { } # set env var -os.environ["OPENAI_API_KEY"] = "sk-litellm-7_NPZhMGxY2GoHC59LgbDw" # [OPTIONAL] replace with your openai key -os.environ["ANTHROPIC_API_KEY"] = "sk-litellm-7_NPZhMGxY2GoHC59LgbDw" # [OPTIONAL] replace with your anthropic key +os.environ["OPENAI_API_KEY"] = "your-api-key" +os.environ["ANTHROPIC_API_KEY"] = "your-api-key" sample_text = "how does a court case get to the Supreme Court?" * 1000 diff --git a/docs/my-website/docs/completion/output.md b/docs/my-website/docs/completion/output.md index 4b56e7baa..eda86ac27 100644 --- a/docs/my-website/docs/completion/output.md +++ b/docs/my-website/docs/completion/output.md @@ -57,7 +57,7 @@ You can also access information like latency. ```python import litellm -os.environ["ANTHROPIC_API_KEY"] = "sk-litellm-5b46387675a944d2" +os.environ["ANTHROPIC_API_KEY"] = "your-api-key" messages=[{"role": "user", "content": "Hey!"}] diff --git a/docs/my-website/docs/getting_started.md b/docs/my-website/docs/getting_started.md index 050a951e8..00d455e0c 100644 --- a/docs/my-website/docs/getting_started.md +++ b/docs/my-website/docs/getting_started.md @@ -12,8 +12,8 @@ By default we provide a free $10 community-key to try all providers supported on from litellm import completion ## set ENV variables -os.environ["OPENAI_API_KEY"] = "sk-litellm-7_NPZhMGxY2GoHC59LgbDw" # [OPTIONAL] replace with your openai key -os.environ["COHERE_API_KEY"] = "sk-litellm-7_NPZhMGxY2GoHC59LgbDw" # [OPTIONAL] replace with your cohere key +os.environ["OPENAI_API_KEY"] = "your-api-key" +os.environ["COHERE_API_KEY"] = "your-api-key" messages = [{ "content": "Hello, how are you?","role": "user"}] diff --git a/docs/my-website/docs/index.md b/docs/my-website/docs/index.md index a0c519320..1a22b114e 100644 --- a/docs/my-website/docs/index.md +++ b/docs/my-website/docs/index.md @@ -23,7 +23,7 @@ from litellm import completion import os ## set ENV variables -os.environ["OPENAI_API_KEY"] = "sk-litellm-7_NPZhMGxY2GoHC59LgbDw" # [OPTIONAL] replace with your openai key +os.environ["OPENAI_API_KEY"] = "your-api-key" response = completion( model="gpt-3.5-turbo", @@ -39,7 +39,7 @@ from litellm import completion import os ## set ENV variables -os.environ["ANTHROPIC_API_KEY"] = "sk-litellm-7_NPZhMGxY2GoHC59LgbDw" # [OPTIONAL] replace with your openai key +os.environ["ANTHROPIC_API_KEY"] = "your-api-key" response = completion( model="claude-2", @@ -133,7 +133,7 @@ from litellm import completion import os ## set ENV variables -os.environ["OPENAI_API_KEY"] = "sk-litellm-7_NPZhMGxY2GoHC59LgbDw" # [OPTIONAL] replace with your openai key +os.environ["OPENAI_API_KEY"] = "your-api-key" response = completion( model="gpt-3.5-turbo", @@ -150,7 +150,7 @@ from litellm import completion import os ## set ENV variables -os.environ["ANTHROPIC_API_KEY"] = "sk-litellm-7_NPZhMGxY2GoHC59LgbDw" # [OPTIONAL] replace with your openai key +os.environ["ANTHROPIC_API_KEY"] = "your-api-key" response = completion( model="claude-2", @@ -262,7 +262,7 @@ Pass the completion response to `litellm.completion_cost(completion_response=res ```python from litellm import completion, completion_cost import os -os.environ["OPENAI_API_KEY"] = "sk-litellm-7_NPZhMGxY2GoHC59LgbDw" +os.environ["OPENAI_API_KEY"] = "your-api-key" response = completion( model="gpt-3.5-turbo", @@ -289,7 +289,7 @@ import os from litellm import completion # use the LiteLLM API Key -os.environ["ANTHROPIC_API_KEY"] = "sk-litellm-7_NPZhMGxY2GoHC59LgbDw" +os.environ["ANTHROPIC_API_KEY"] = "your-api-key" messages = [{ "content": "Hello, how are you?","role": "user"}] @@ -304,7 +304,7 @@ import os from litellm import completion # use the LiteLLM API Key -os.environ["OPENAI_API_KEY"] = "sk-litellm-7_NPZhMGxY2GoHC59LgbDw" +os.environ["OPENAI_API_KEY"] = "your-api-key" messages = [{ "content": "Hello, how are you?","role": "user"}] @@ -319,7 +319,7 @@ import os from litellm import completion # use the LiteLLM API Key -os.environ["TOGETHERAI_API_KEY"] = "sk-litellm-7_NPZhMGxY2GoHC59LgbDw" +os.environ["TOGETHERAI_API_KEY"] = "your-api-key" messages = [{ "content": "Hello, how are you?","role": "user"}] @@ -335,7 +335,7 @@ import os from litellm import completion # use the LiteLLM API Key -os.environ["TOGETHERAI_API_KEY"] = "sk-litellm-7_NPZhMGxY2GoHC59LgbDw" +os.environ["TOGETHERAI_API_KEY"] = "your-api-key" messages = [{ "content": "Hello, how are you?","role": "user"}] diff --git a/docs/my-website/docs/providers/ai21.md b/docs/my-website/docs/providers/ai21.md index db5c90b39..c0987b312 100644 --- a/docs/my-website/docs/providers/ai21.md +++ b/docs/my-website/docs/providers/ai21.md @@ -5,24 +5,18 @@ LiteLLM supports j2-light, j2-mid and j2-ultra from [AI21](https://www.ai21.com/ They're available to use without a waitlist. ### API KEYS -We provide a free $10 community-key for testing all providers on LiteLLM. You can replace this with your own key. - ```python import os -os.environ["AI21_API_KEY"] = "sk-litellm-7_NPZhMGxY2GoHC59LgbDw" # [OPTIONAL] replace with your ai21 key +os.environ["AI21_API_KEY"] = "your-api-key" ``` -**Need a dedicated key?** -Email us @ krrish@berri.ai - -[**See all supported models by the litellm api key**](../proxy_api.md#supported-models-for-litellm-key) ### Sample Usage ```python from litellm import completion -# set env variable - [OPTIONAL] replace with your ai21 key -os.environ["AI21_API_KEY"] = "sk-litellm-7_NPZhMGxY2GoHC59LgbDw" +# set env variable +os.environ["AI21_API_KEY"] = "your-api-key" messages = [{"role": "user", "content": "Write me a poem about the blue sky"}] diff --git a/docs/my-website/docs/providers/anthropic.md b/docs/my-website/docs/providers/anthropic.md index c6fee4539..2ae162cea 100644 --- a/docs/my-website/docs/providers/anthropic.md +++ b/docs/my-website/docs/providers/anthropic.md @@ -2,18 +2,12 @@ LiteLLM supports Claude-1, 1.2 and Claude-2. ## API Keys -We provide a free $10 community-key for testing all providers on LiteLLM. You can replace this with your own key. ```python import os -os.environ["ANTHROPIC_API_KEY"] = "sk-litellm-7_NPZhMGxY2GoHC59LgbDw" # [OPTIONAL] replace with your anthropic key +os.environ["ANTHROPIC_API_KEY"] = "your-api-key" ``` -**Need a dedicated key?** -Email us @ krrish@berri.ai - -## Supported Models for LiteLLM Key -These are the models that currently work with the "sk-litellm-.." keys. ## Sample Usage @@ -22,7 +16,7 @@ import os from litellm import completion # set env - [OPTIONAL] replace with your anthropic key -os.environ["ANTHROPIC_API_KEY"] = "sk-litellm-7_NPZhMGxY2GoHC59LgbDw" +os.environ["ANTHROPIC_API_KEY"] = "your-api-key" messages = [{"role": "user", "content": "Hey! how's it going?"}] response = completion(model="claude-instant-1", messages=messages) @@ -36,8 +30,8 @@ Just set `stream=True` when calling completion. import os from litellm import completion -# set env - [OPTIONAL] replace with your anthropic key -os.environ["ANTHROPIC_API_KEY"] = "sk-litellm-7_NPZhMGxY2GoHC59LgbDw" +# set env +os.environ["ANTHROPIC_API_KEY"] = "your-api-key" messages = [{"role": "user", "content": "Hey! how's it going?"}] response = completion(model="claude-instant-1", messages=messages, stream=True) diff --git a/docs/my-website/docs/providers/nlp_cloud.md b/docs/my-website/docs/providers/nlp_cloud.md index 399707b45..3d74fb7e1 100644 --- a/docs/my-website/docs/providers/nlp_cloud.md +++ b/docs/my-website/docs/providers/nlp_cloud.md @@ -3,17 +3,12 @@ LiteLLM supports all LLMs on NLP Cloud. ## API Keys -We provide a free $10 community-key for testing all providers on LiteLLM. You can replace this with your own key. ```python import os -os.environ["NLP_CLOUD_API_KEY"] = "sk-litellm-7_NPZhMGxY2GoHC59LgbDw" # [OPTIONAL] replace with your nlp cloud key +os.environ["NLP_CLOUD_API_KEY"] = "your-api-key" ``` -**Need a dedicated key?** -Email us @ krrish@berri.ai - -[**See all supported models by the litellm api key**](../proxy_api.md#supported-models-for-litellm-key) ## Sample Usage @@ -21,8 +16,8 @@ Email us @ krrish@berri.ai import os from litellm import completion -# set env - [OPTIONAL] replace with your nlp cloud key -os.environ["NLP_CLOUD_API_KEY"] = "sk-litellm-7_NPZhMGxY2GoHC59LgbDw" +# set env +os.environ["NLP_CLOUD_API_KEY"] = "your-api-key" messages = [{"role": "user", "content": "Hey! how's it going?"}] response = completion(model="dolphin", messages=messages) @@ -36,8 +31,8 @@ Just set `stream=True` when calling completion. import os from litellm import completion -# set env - [OPTIONAL] replace with your nlp cloud key -os.environ["NLP_CLOUD_API_KEY"] = "sk-litellm-7_NPZhMGxY2GoHC59LgbDw" +# set env +os.environ["NLP_CLOUD_API_KEY"] = "your-api-key" messages = [{"role": "user", "content": "Hey! how's it going?"}] response = completion(model="dolphin", messages=messages, stream=True) @@ -57,7 +52,7 @@ import os from litellm import completion # set env - [OPTIONAL] replace with your nlp cloud key -os.environ["NLP_CLOUD_API_KEY"] = "sk-litellm-7_NPZhMGxY2GoHC59LgbDw" +os.environ["NLP_CLOUD_API_KEY"] = "your-api-key" messages = [{"role": "user", "content": "Hey! how's it going?"}] diff --git a/docs/my-website/docs/providers/openai.md b/docs/my-website/docs/providers/openai.md index d2db29871..634f9dbbb 100644 --- a/docs/my-website/docs/providers/openai.md +++ b/docs/my-website/docs/providers/openai.md @@ -2,12 +2,11 @@ LiteLLM supports OpenAI Chat + Text completion and embedding calls. ### API Keys -We provide a free $10 community-key for testing all providers on LiteLLM. You can replace this with your own key. ```python import os -os.environ["OPENAI_API_KEY"] = "sk-litellm-7_NPZhMGxY2GoHC59LgbDw" # [OPTIONAL] replace with your openai key +os.environ["OPENAI_API_KEY"] = "your-api-key" ``` **Need a dedicated key?** Email us @ krrish@berri.ai @@ -19,7 +18,7 @@ Email us @ krrish@berri.ai import os from litellm import completion -os.environ["OPENAI_API_KEY"] = "sk-litellm-7_NPZhMGxY2GoHC59LgbDw" # [OPTIONAL] replace with your openai key +os.environ["OPENAI_API_KEY"] = "your-api-key" messages = [{ "content": "Hello, how are you?","role": "user"}] diff --git a/docs/my-website/docs/providers/togetherai.md b/docs/my-website/docs/providers/togetherai.md index d8275f061..d718619f0 100644 --- a/docs/my-website/docs/providers/togetherai.md +++ b/docs/my-website/docs/providers/togetherai.md @@ -2,26 +2,17 @@ LiteLLM supports all models on Together AI. ## API Keys -We provide a free $10 community-key for testing all providers on LiteLLM. You can replace this with your own key. ```python import os -os.environ["TOGETHERAI_API_KEY"] = "sk-litellm-7_NPZhMGxY2GoHC59LgbDw" # [OPTIONAL] replace with your together ai key +os.environ["TOGETHERAI_API_KEY"] = "your-api-key" ``` - -**Need a dedicated key?** -Email us @ krrish@berri.ai - -[**See all supported models by the litellm api key**](../proxy_api.md#supported-models-for-litellm-key) - - ## Sample Usage ```python from litellm import completion -# set env variable - [OPTIONAL] replace with your together ai key -os.environ["TOGETHERAI_API_KEY"] = "sk-litellm-7_NPZhMGxY2GoHC59LgbDw" +os.environ["TOGETHERAI_API_KEY"] = "your-api-key" messages = [{"role": "user", "content": "Write me a poem about the blue sky"}] diff --git a/docs/my-website/docs/proxy_api.md b/docs/my-website/docs/proxy_api.md index cbc6198aa..89bfacbe1 100644 --- a/docs/my-website/docs/proxy_api.md +++ b/docs/my-website/docs/proxy_api.md @@ -9,8 +9,8 @@ import os from litellm import completion ## set ENV variables -os.environ["OPENAI_API_KEY"] = "sk-litellm-7_NPZhMGxY2GoHC59LgbDw" # [OPTIONAL] replace with your openai key -os.environ["COHERE_API_KEY"] = "sk-litellm-7_NPZhMGxY2GoHC59LgbDw" # [OPTIONAL] replace with your cohere key +os.environ["OPENAI_API_KEY"] = "your-api-key" +os.environ["COHERE_API_KEY"] = "your-api-key" messages = [{ "content": "Hello, how are you?","role": "user"}] diff --git a/litellm/__pycache__/main.cpython-311.pyc b/litellm/__pycache__/main.cpython-311.pyc index 5fbe7b9e02e641a95b5225fdd50e827c4b4d4279..795fb81a0f7d95d01a9b32aa0c58fc203ba8ba35 100644 GIT binary patch delta 14209 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 NbdMp4UksEEqLM delta 2452 zcmZ`)3s6+o8Q$++_wMqNWqGU!C}`E_0`7_aK1 zpfe%b|4#ZCTlG4F|rxEO5Xi#OlSvad*1`TatzPiIlI4ZQ<+C*a^ z#j?$_5HdXDCuSVl#o8FG)Vu;0X$#sTOtO8f@XyiO+avsBd!Vpm^qg^JA8&nVCR$v5e9=j*k!0P*h937by1kA4b@FSsAjEy z(Qgw(=r)2>ExUe-)?I%MAzF=lr`FpQJiga2Eo)9(YR)FR!^hcnZmrlw_S za~q~<8yXU<$Hm&$#~2Lx^F`WHgI7v$yBlUf`{tBQyK(9<@w98M)7jCAVQ13hWX15& z%*Em2(W3Y!+vFCDlx&q-tj1)U+r<5h$_Y~PXKh^LWMh*s+uREq*UQFFgc<5S@_{B{ zy7uJ97tx}bo8oanOKO^Fydowe-D=aM0Q^O(=uC{gMjY1(`Upx0Y6$ib)Dxr-oYL-f zJ`1$CDpq8MBppIZCL4&rV>xG%>5wfcZjuPx4I7Uz*Al9g+Q`xVQqgR{U zy#mSZg6_A2l$+$~cTX570tVf04NeNfJa^;0{lPfT*90O57~riI^eM>W)i!(w6!OF2 zmM=)knxoj~#fXzbpPI{qw*d(Eh&}iE=Q}b~hcmS> z?Ue$DI@}31s{}KBX<8+?%QH%lE1{8fmtiqX%(fl3V6EJN1^AFH+<|x{)KA2I%(m^o zdl<*({SH|Y+FA9h$V4O$d<}6DT3OOAOp3T54ndK!cJZ&4|KjD9>JqAWKUI8;+QGK% zLWEzJ2vDD(-0ke}E>vI^PuPuJ^7vMos1UKqMW&3*g52zcX!RWV&a=MPaRtj*!|(Bo zjS>t~`l%gcZ>AibEUX+qvFPOOqH>d>yMhf)-+rL|!W&tQ4mw z=~3lIq!PJafQO9YaDH#AHI%%R;DO5Oy+~BHQl1(;4;TCMAf{7Pr`IRHAS1)!usiId znyL=dv#WnZP5g8wklD4^H0slb_6;LIOpy-ofv3D(k5x<}PpG}PPkK3VUv&(2^R zhS)b}@D%D;f=Ap;U2LNVc3kEi9^CK|$F#Ny@knR?XhK%vN3^V&poKtJ_DBk;7|x+5 zAEKeIR+sTLD{sa$-?QW;Q22+07SS zcUPq^uDXtTa)m86Nvjq8x;)F@Hc9U&Gv>nLH3-(arCJix-WR9+v_q PAkb@g2urxfB30r4bg25x diff --git a/litellm/tests/test_completion.py b/litellm/tests/test_completion.py index 4cc36beb7..6071f8c1c 100644 --- a/litellm/tests/test_completion.py +++ b/litellm/tests/test_completion.py @@ -437,7 +437,6 @@ def test_completion_openai_litellm_key(): # test_completion_openai_litellm_key() -# commented out for now, as openrouter is quite flaky - causing our deployments to fail. Please run this before pushing changes. def test_completion_openrouter1(): try: response = completion( @@ -453,7 +452,7 @@ def test_completion_openrouter1(): def test_completion_openrouter2(): try: response = completion( - model="google/palm-2-chat-bison", + model="openrouter/openai/gpt-4-32k", messages=messages, max_tokens=5, ) @@ -464,6 +463,47 @@ def test_completion_openrouter2(): # test_completion_openrouter() +def test_completion_hf_model_no_provider(): + try: + response = completion( + model="WizardLM/WizardLM-70B-V1.0", + messages=messages, + max_tokens=5, + ) + # Add any assertions here to check the response + print(response) + pytest.fail(f"Error occurred: {e}") + except Exception as e: + pass + +test_completion_hf_model_no_provider() + +def test_completion_hf_model_no_provider_2(): + try: + response = completion( + model="meta-llama/Llama-2-70b-chat-hf", + messages=messages, + max_tokens=5, + ) + # Add any assertions here to check the response + pytest.fail(f"Error occurred: {e}") + except Exception as e: + pass + +test_completion_hf_model_no_provider_2() + +def test_completion_openrouter2(): + try: + response = completion( + model="openrouter/openai/gpt-4-32k", + messages=messages, + max_tokens=5, + ) + # Add any assertions here to check the response + print(response) + except Exception as e: + pytest.fail(f"Error occurred: {e}") + def test_completion_openai_with_more_optional_params(): try: response = completion( @@ -865,7 +905,6 @@ def test_completion_with_fallbacks(): except Exception as e: pytest.fail(f"Error occurred: {e}") - # def test_completion_with_fallbacks_multiple_keys(): # print(f"backup key 1: {os.getenv('BACKUP_OPENAI_API_KEY_1')}") # print(f"backup key 2: {os.getenv('BACKUP_OPENAI_API_KEY_2')}") diff --git a/litellm/utils.py b/litellm/utils.py index 94ede879c..b5c9ad2fe 100644 --- a/litellm/utils.py +++ b/litellm/utils.py @@ -1187,7 +1187,7 @@ def get_llm_provider(model: str, custom_llm_provider: Optional[str] = None): model = model.split("/", 1)[1] return model, custom_llm_provider - # check if model in known model provider list + # check if model in known model provider list -> for huggingface models, raise exception as they don't have a fixed provider (can be togetherai, anyscale, baseten, runpod, et.) ## openai - chatcompletion + text completion if model in litellm.open_ai_chat_completion_models: custom_llm_provider = "openai" @@ -1208,15 +1208,9 @@ def get_llm_provider(model: str, custom_llm_provider: Optional[str] = None): ## vertex - text + chat models elif model in litellm.vertex_chat_models or model in litellm.vertex_text_models: custom_llm_provider = "vertex_ai" - ## huggingface - elif model in litellm.huggingface_models: - custom_llm_provider = "huggingface" ## ai21 elif model in litellm.ai21_models: custom_llm_provider = "ai21" - ## together_ai - elif model in litellm.together_ai_models: - custom_llm_provider = "together_ai" ## aleph_alpha elif model in litellm.aleph_alpha_models: custom_llm_provider = "aleph_alpha" @@ -1231,6 +1225,9 @@ def get_llm_provider(model: str, custom_llm_provider: Optional[str] = None): custom_llm_provider = "petals" if custom_llm_provider is None or custom_llm_provider=="": + print() + print("\033[1;31mProvider List: https://docs.litellm.ai/docs/providers\033[0m") + print() raise ValueError(f"LLM Provider NOT provided. Pass in the LLM provider you are trying to call. E.g. For 'Huggingface' inference endpoints pass in `completion(model='huggingface/{model}',..)` Learn more: https://docs.litellm.ai/docs/providers") return model, custom_llm_provider except Exception as e: