From cec5fdd14430455153802ee3a8abeecf31e9653d Mon Sep 17 00:00:00 2001 From: Jan-Timo Hesse Date: Mon, 5 Aug 2024 09:42:16 +0200 Subject: [PATCH 1/3] Added EXTRA_MODULES argument --- Dockerfile | 4 +++- backend/start.sh | 4 ++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 8078bf0eac..f1ea4e0645 100644 --- a/Dockerfile +++ b/Dockerfile @@ -38,6 +38,7 @@ ARG USE_OLLAMA ARG USE_CUDA_VER ARG USE_EMBEDDING_MODEL ARG USE_RERANKING_MODEL +ARG EXTRA_MODULES ARG UID ARG GID @@ -49,7 +50,8 @@ ENV ENV=prod \ USE_CUDA_DOCKER=${USE_CUDA} \ USE_CUDA_DOCKER_VER=${USE_CUDA_VER} \ USE_EMBEDDING_MODEL_DOCKER=${USE_EMBEDDING_MODEL} \ - USE_RERANKING_MODEL_DOCKER=${USE_RERANKING_MODEL} + USE_RERANKING_MODEL_DOCKER=${USE_RERANKING_MODEL} \ + EXTRA_MODULES_DOCKER=${EXTRA_MODULES} ## Basis URL Config ## ENV OLLAMA_BASE_URL="/ollama" \ diff --git a/backend/start.sh b/backend/start.sh index 16a004e45c..b499736b8f 100755 --- a/backend/start.sh +++ b/backend/start.sh @@ -30,6 +30,10 @@ if [[ "${USE_CUDA_DOCKER,,}" == "true" ]]; then export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/lib/python3.11/site-packages/torch/lib:/usr/local/lib/python3.11/site-packages/nvidia/cudnn/lib" fi +if [ -n "$EXTRA_MODULES_DOCKER" ]; then + echo "Loading extra modules: $EXTRA_MODULES_DOCKER" + uv pip install --system $EXTRA_MODULES_DOCKER --no-cache-dir +fi # Check if SPACE_ID is set, if so, configure for space if [ -n "$SPACE_ID" ]; then From 71d88fe35d68dc8ba5907d63fb787ea33bed072e Mon Sep 17 00:00:00 2001 From: Jan-Timo Hesse Date: Thu, 8 Aug 2024 09:45:52 +0200 Subject: [PATCH 2/3] revert --- Dockerfile | 4 +--- backend/start.sh | 5 ----- 2 files changed, 1 insertion(+), 8 deletions(-) diff --git a/Dockerfile b/Dockerfile index f1ea4e0645..8078bf0eac 100644 --- a/Dockerfile +++ b/Dockerfile @@ -38,7 +38,6 @@ ARG USE_OLLAMA ARG USE_CUDA_VER ARG USE_EMBEDDING_MODEL ARG USE_RERANKING_MODEL -ARG EXTRA_MODULES ARG UID ARG GID @@ -50,8 +49,7 @@ ENV ENV=prod \ USE_CUDA_DOCKER=${USE_CUDA} \ USE_CUDA_DOCKER_VER=${USE_CUDA_VER} \ USE_EMBEDDING_MODEL_DOCKER=${USE_EMBEDDING_MODEL} \ - USE_RERANKING_MODEL_DOCKER=${USE_RERANKING_MODEL} \ - EXTRA_MODULES_DOCKER=${EXTRA_MODULES} + USE_RERANKING_MODEL_DOCKER=${USE_RERANKING_MODEL} ## Basis URL Config ## ENV OLLAMA_BASE_URL="/ollama" \ diff --git a/backend/start.sh b/backend/start.sh index b499736b8f..0a5c48e8c4 100755 --- a/backend/start.sh +++ b/backend/start.sh @@ -30,11 +30,6 @@ if [[ "${USE_CUDA_DOCKER,,}" == "true" ]]; then export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/lib/python3.11/site-packages/torch/lib:/usr/local/lib/python3.11/site-packages/nvidia/cudnn/lib" fi -if [ -n "$EXTRA_MODULES_DOCKER" ]; then - echo "Loading extra modules: $EXTRA_MODULES_DOCKER" - uv pip install --system $EXTRA_MODULES_DOCKER --no-cache-dir -fi - # Check if SPACE_ID is set, if so, configure for space if [ -n "$SPACE_ID" ]; then echo "Configuring for HuggingFace Space deployment" From 367fa039a0fa0f7d3599437421057186549761e2 Mon Sep 17 00:00:00 2001 From: Jan-Timo Hesse Date: Thu, 8 Aug 2024 09:46:14 +0200 Subject: [PATCH 3/3] added install_frontmatter_requirements --- backend/apps/webui/utils.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/backend/apps/webui/utils.py b/backend/apps/webui/utils.py index 96d2b29ebf..34682920b8 100644 --- a/backend/apps/webui/utils.py +++ b/backend/apps/webui/utils.py @@ -1,6 +1,8 @@ from importlib import util import os import re +import sys +import subprocess from config import TOOLS_DIR, FUNCTIONS_DIR @@ -52,6 +54,7 @@ def load_toolkit_module_by_id(toolkit_id): frontmatter = extract_frontmatter(toolkit_path) try: + install_frontmatter_requirements(frontmatter.get("requirements", "")) spec.loader.exec_module(module) print(f"Loaded module: {module.__name__}") if hasattr(module, "Tools"): @@ -73,6 +76,7 @@ def load_function_module_by_id(function_id): frontmatter = extract_frontmatter(function_path) try: + install_frontmatter_requirements(frontmatter.get("requirements", "")) spec.loader.exec_module(module) print(f"Loaded module: {module.__name__}") if hasattr(module, "Pipe"): @@ -88,3 +92,12 @@ def load_function_module_by_id(function_id): # Move the file to the error folder os.rename(function_path, f"{function_path}.error") raise e + +def install_frontmatter_requirements(requirements): + if requirements: + req_list = [req.strip() for req in requirements.split(',')] + for req in req_list: + print(f"Installing requirement: {req}") + subprocess.check_call([sys.executable, "-m", "pip", "install", req]) + else: + print("No requirements found in frontmatter.") \ No newline at end of file