Timothy J. Baek 1 年之前
父節點
當前提交
8aa47ea6bc
共有 2 個文件被更改,包括 51 次插入39 次删除
  1. 2 0
      CHANGELOG.md
  2. 49 39
      backend/apps/litellm/main.py

+ 2 - 0
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
 ## [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.
 - **🌟 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.
 - **🛢️ 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.
 - **🌐 Remote ChromaDB Support**: Introducing the capability to connect to remote ChromaDB servers.

+ 49 - 39
backend/apps/litellm/main.py

@@ -28,6 +28,7 @@ log.setLevel(SRC_LOG_LEVELS["LITELLM"])
 
 
 
 
 from config import (
 from config import (
+    ENABLE_LITELLM,
     ENABLE_MODEL_FILTER,
     ENABLE_MODEL_FILTER,
     MODEL_FILTER_LIST,
     MODEL_FILTER_LIST,
     DATA_DIR,
     DATA_DIR,
@@ -59,6 +60,8 @@ LITELLM_CONFIG_DIR = f"{DATA_DIR}/litellm/config.yaml"
 with open(LITELLM_CONFIG_DIR, "r") as file:
 with open(LITELLM_CONFIG_DIR, "r") as file:
     litellm_config = yaml.safe_load(file)
     litellm_config = yaml.safe_load(file)
 
 
+
+app.state.ENABLE = ENABLE_LITELLM
 app.state.CONFIG = litellm_config
 app.state.CONFIG = litellm_config
 
 
 # Global variable to store the subprocess reference
 # 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("/models")
 @app.get("/v1/models")
 @app.get("/v1/models")
 async def get_models(user=Depends(get_current_user)):
 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()
 
 
-        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"],
+    if app.state.ENABLE:
+        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()
+
+            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:
-
-        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
+        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}"
+
+            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 {
         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",
             "object": "list",
         }
         }