From 8aa47ea6bc240c4253a0e8df9ced3daaf9aee4eb Mon Sep 17 00:00:00 2001 From: "Timothy J. Baek" Date: Sat, 27 Apr 2024 21:17:19 -0400 Subject: [PATCH] fix --- CHANGELOG.md | 2 + backend/apps/litellm/main.py | 80 ++++++++++++++++++++---------------- 2 files changed, 47 insertions(+), 35 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2ed9908b..ece786d0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [0.1.122] - 2024-04-27 +### Added + - **🌟 Enhanced RAG Pipeline**: Now with hybrid searching via 'BM25', reranking powered by 'CrossEncoder', and configurable relevance score thresholds. - **🛢️ External Database Support**: Seamlessly connect to custom SQLite or Postgres databases using the 'DATABASE_URL' environment variable. - **🌐 Remote ChromaDB Support**: Introducing the capability to connect to remote ChromaDB servers. diff --git a/backend/apps/litellm/main.py b/backend/apps/litellm/main.py index f17a1bbc..2a37622f 100644 --- a/backend/apps/litellm/main.py +++ b/backend/apps/litellm/main.py @@ -28,6 +28,7 @@ log.setLevel(SRC_LOG_LEVELS["LITELLM"]) from config import ( + ENABLE_LITELLM, ENABLE_MODEL_FILTER, MODEL_FILTER_LIST, DATA_DIR, @@ -59,6 +60,8 @@ LITELLM_CONFIG_DIR = f"{DATA_DIR}/litellm/config.yaml" with open(LITELLM_CONFIG_DIR, "r") as file: litellm_config = yaml.safe_load(file) + +app.state.ENABLE = ENABLE_LITELLM app.state.CONFIG = litellm_config # Global variable to store the subprocess reference @@ -209,49 +212,56 @@ async def update_config(form_data: LiteLLMConfigForm, user=Depends(get_admin_use @app.get("/models") @app.get("/v1/models") async def get_models(user=Depends(get_current_user)): - while not background_process: - await asyncio.sleep(0.1) - url = f"http://localhost:{LITELLM_PROXY_PORT}/v1" - r = None - try: - r = requests.request(method="GET", url=f"{url}/models") - r.raise_for_status() + if app.state.ENABLE: + while not background_process: + await asyncio.sleep(0.1) - data = r.json() + url = f"http://localhost:{LITELLM_PROXY_PORT}/v1" + r = None + try: + r = requests.request(method="GET", url=f"{url}/models") + r.raise_for_status() - if app.state.ENABLE_MODEL_FILTER: - if user and user.role == "user": - data["data"] = list( - filter( - lambda model: model["id"] in app.state.MODEL_FILTER_LIST, - data["data"], + data = r.json() + + if app.state.ENABLE_MODEL_FILTER: + if user and user.role == "user": + data["data"] = list( + filter( + lambda model: model["id"] in app.state.MODEL_FILTER_LIST, + data["data"], + ) ) - ) - return data - except Exception as e: + return data + except Exception as e: - log.exception(e) - error_detail = "Open WebUI: Server Connection Error" - if r is not None: - try: - res = r.json() - if "error" in res: - error_detail = f"External: {res['error']}" - except: - error_detail = f"External: {e}" + log.exception(e) + error_detail = "Open WebUI: Server Connection Error" + if r is not None: + try: + res = r.json() + if "error" in res: + error_detail = f"External: {res['error']}" + except: + error_detail = f"External: {e}" + return { + "data": [ + { + "id": model["model_name"], + "object": "model", + "created": int(time.time()), + "owned_by": "openai", + } + for model in app.state.CONFIG["model_list"] + ], + "object": "list", + } + else: return { - "data": [ - { - "id": model["model_name"], - "object": "model", - "created": int(time.time()), - "owned_by": "openai", - } - for model in app.state.CONFIG["model_list"] - ], + "data": [], "object": "list", }