From ed31860206f541cda45e7e5604e0fe8e943cd0ac Mon Sep 17 00:00:00 2001 From: Krrish Dholakia Date: Thu, 5 Oct 2023 10:47:51 -0700 Subject: [PATCH] adding custom prompt templates to ollama --- docs/my-website/docs/proxy_server.md | 35 ++++- litellm/__pycache__/__init__.cpython-311.pyc | Bin 11989 -> 12011 bytes litellm/__pycache__/main.cpython-311.pyc | Bin 52792 -> 52946 bytes litellm/__pycache__/utils.cpython-311.pyc | Bin 139976 -> 140344 bytes litellm/main.py | 52 ++++--- litellm/tests/test_ollama_local.py | 146 +++++++++++-------- litellm/utils.py | 16 +- 7 files changed, 164 insertions(+), 85 deletions(-) diff --git a/docs/my-website/docs/proxy_server.md b/docs/my-website/docs/proxy_server.md index aadc0854229..ab976514ecf 100644 --- a/docs/my-website/docs/proxy_server.md +++ b/docs/my-website/docs/proxy_server.md @@ -151,6 +151,38 @@ $ litellm --model command-nightly ### Deploy Proxy + + + + +**Step 1: Clone the repo** +```shell +git clone https://github.com/BerriAI/liteLLM-proxy.git +``` + +**Step 2: Put your API keys in .env** +Copy the .env.template and put in the relevant keys (e.g. OPENAI_API_KEY="sk-..") + +**Step 3: Test your proxy** +Start your proxy server +```shell +cd litellm-proxy && python3 main.py +``` + +Make your first call +```python +import openai + +openai.api_key = "sk-litellm-master-key" +openai.api_base = "http://0.0.0.0:8080" + +response = openai.ChatCompletion.create(model="gpt-3.5-turbo", messages=[{"role": "user", "content": "Hey"}]) + +print(response) +``` + + + Deploy the proxy to https://api.litellm.ai ```shell @@ -161,7 +193,6 @@ $ litellm --model claude-instant-1 --deploy ``` This will host a ChatCompletions API at: https://api.litellm.ai/44508ad4 - #### Other supported models: @@ -280,6 +311,8 @@ curl --location 'https://api.litellm.ai/44508ad4/chat/completions' \ ``` + + ## Setting api base, temperature, max tokens diff --git a/litellm/__pycache__/__init__.cpython-311.pyc b/litellm/__pycache__/__init__.cpython-311.pyc index 191de47abc1fe9ee45ff507dfa8815c568ae1a79..36890b238f185b8ec02603b95b7cb7c3c419339d 100644 GIT binary patch delta 1825 zcmaKsOHWfl6vyw}mRBzYEFzRv1qBfi1QDO5^g$_DP+p3T0zv0c)K*9_#u&AjxMZQ3 z#EnK97r1cYq8qom*SIk;G4Tr+jbFgWxu;`ot?5nXw7>s3|8r)hH~ldCWwz?M-EPzH zS^DmViuMOp4b1(Z?XywFHwzoD6O3<>mCWg?hY~QHW+6RLDeNBnhWQ5RV@|os9Ik4m zG#1p>$Q0H*W#ygjf}BISwiaY+{yX^FWb$`C5?ALDHvcZ>VLCI z9MMF^X1*6Xk#-PiybBHc&`>FMlG1WdQ*#F)T1a&v|rIMQLmyAq5~#D zPwKdQZLO7YYhzi2kHTnbjQE$;VLy09H*X-Z1-z*frs~unvcd3naAh8*t@q`4+?IhN zl_ICoA(u;R7GIHSnOFT5tNlf)-{e(yl-ewj)JZx?q;zx1I0Q0Yiw5KJW@)n}_niIe zob?dORJs0h&iicLn>)kq&ANt)x~}HA2C}YTQP-0^moMuYEb4lf=kjM=;i9ged9Fa# zHC)7{uXp9Sg346~BNA!hdIv+9H&P6tGD%8UDZ{8tkusu`*_$c}*PEZU`oTM0}7@`=aI7M-q;t0iI ziZf>9XK?!yxRJ9oaMBzI-anJT4-+s6Q!otys1Jf_3#Z`}%!sMScFv(!9=5d)or7Nd zb6BALUcmjHr*;=j#sLBc%#s3B;Sr0mx%eEPW18@YXl#Dk{9KC37q*Zqp5O_kuaX{( zU8B!SF=-f1cl;K=MfuCI+wnX64t>88OUBpuTH0fLvaqgnL-i74UU|3XJnNUAYu>X^ z`sJpvYIaxtXnJHABC)(Ozp{{6h^HSmf7ETSaGT~oz$%wFT7FrpYS)bP_15`{-%NCr ALjV8( delta 1695 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 list: +# # messages = [ +# # {"role": "user", "content": text}, +# # ] +# # return messages -# async def test_completion_ollama_async_stream(): -# user_message = "what is the weather" -# messages = [{ "content": user_message,"role": "user"}] -# try: -# response = await litellm.acompletion( -# model="ollama/llama2", -# messages=messages, -# api_base="http://localhost:11434", -# stream=True -# ) -# async for chunk in response: -# print(chunk) +# # async def ask_question(): +# # params = { +# # "messages": prepare_messages_for_chat("What is litellm? tell me 10 things about it who is sihaan.write an essay"), +# # "api_base": "http://localhost:11434", +# # "model": "ollama/llama2", +# # "stream": True, +# # } +# # response = await litellm.acompletion(**params) +# # return response -# # print(chunk['choices'][0]['delta']) +# # async def main(): +# # response = await ask_question() +# # async for chunk in response: +# # print(chunk) -# except Exception as e: -# pytest.fail(f"Error occurred: {e}") - -# # import asyncio -# # asyncio.run(test_completion_ollama_async_stream()) - -# def prepare_messages_for_chat(text: str) -> list: -# messages = [ -# {"role": "user", "content": text}, -# ] -# return messages - - -# async def ask_question(): -# params = { -# "messages": prepare_messages_for_chat("What is litellm? tell me 10 things about it who is sihaan.write an essay"), -# "api_base": "http://localhost:11434", -# "model": "ollama/llama2", -# "stream": True, -# } -# response = await litellm.acompletion(**params) -# return response - -# async def main(): -# response = await ask_question() -# async for chunk in response: -# print(chunk) - -# if __name__ == "__main__": -# import asyncio -# asyncio.run(main()) +# # if __name__ == "__main__": +# # import asyncio +# # asyncio.run(main()) diff --git a/litellm/utils.py b/litellm/utils.py index c3d629a9228..573279b8e60 100644 --- a/litellm/utils.py +++ b/litellm/utils.py @@ -2081,24 +2081,28 @@ def modify_integration(integration_name, integration_params): # custom prompt helper function def register_prompt_template(model: str, roles: dict, initial_prompt_value: str = "", final_prompt_value: str = ""): """ + Format the openai prompt, to follow your custom format. Example usage: ``` import litellm litellm.register_prompt_template( model="llama-2", + initial_prompt_value="You are a good assistant" # [OPTIONAL] roles={ "system": { - "pre_message": "[INST] <>\n", - "post_message": "\n<>\n [/INST]\n" + "pre_message": "[INST] <>\n", # [OPTIONAL] + "post_message": "\n<>\n [/INST]\n" # [OPTIONAL] }, - "user": { # follow this format https://github.com/facebookresearch/llama/blob/77062717054710e352a99add63d160274ce670c6/llama/generation.py#L348 - "pre_message": "[INST] ", - "post_message": " [/INST]\n" + "user": { + "pre_message": "[INST] ", # [OPTIONAL] + "post_message": " [/INST]" # [OPTIONAL] }, "assistant": { - "post_message": "\n" # follows this - https://replicate.com/blog/how-to-prompt-llama + "pre_message": "\n" # [OPTIONAL] + "post_message": "\n" # [OPTIONAL] } } + final_prompt_value="Now answer as best you can:" # [OPTIONAL] ) ``` """