From cc492b0ffb7c99207bddaa4ca8d6764f176738a3 Mon Sep 17 00:00:00 2001
From: Julian <julian@edyoucated.org>
Date: Mon, 11 Mar 2024 20:45:22 +0100
Subject: [PATCH] added python package for llm utilities

---
 .gitignore                                 |  2 ++
 Dockerfile                                 | 11 +++++++----
 app/app.py                                 |  3 +--
 app/callbacks.py                           |  2 +-
 dash_proxy.py => dash_proxy/dash_proxy.py  | 11 +----------
 setup.py => dash_proxy/setup.py            |  0
 llm_utils/setup.py                         | 14 ++++++++++++++
 llm_utils/src/__init__.py                  |  0
 llm_utils/src/llm_utils/__init__.py        |  0
 {app => llm_utils/src/llm_utils}/client.py | 18 ++++++++++++------
 10 files changed, 38 insertions(+), 23 deletions(-)
 rename dash_proxy.py => dash_proxy/dash_proxy.py (63%)
 rename setup.py => dash_proxy/setup.py (100%)
 create mode 100644 llm_utils/setup.py
 create mode 100644 llm_utils/src/__init__.py
 create mode 100644 llm_utils/src/llm_utils/__init__.py
 rename {app => llm_utils/src/llm_utils}/client.py (85%)

diff --git a/.gitignore b/.gitignore
index 79b85b9..6609e2b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,7 @@
 *env/
 .env
 
+*.egg-*
 *.pyc
+*.txt
 config.txt
diff --git a/Dockerfile b/Dockerfile
index 273811c..b2dd42d 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -9,10 +9,13 @@ RUN conda env update -q -f /tmp/environment.yml && \
     conda env export -n "root" && \
     jupyter lab build 
 
-COPY dash_proxy.py setup.py /tmp/dash_proxy/
 RUN pip3 install --upgrade pip
+
+COPY dash_proxy /tmp/dash_proxy/
 RUN pip install /tmp/dash_proxy/
 
-# copy dash app
-COPY app ${HOME}/app/
-RUN chown -R jovyan ${HOME}/app/
+COPY llm_utils /llm_utils/
+RUN pip install /llm_utils/
+
+COPY app /dash/app/
+RUN chown -R jovyan /dash/app/
diff --git a/app/app.py b/app/app.py
index 4492011..604849e 100644
--- a/app/app.py
+++ b/app/app.py
@@ -1,6 +1,5 @@
-import os
 import sys 
-sys.path.append(os.path.dirname(os.path.abspath(__file__)))
+sys.path.append("/home/jovyan/")
 
 import argparse
 import logging
diff --git a/app/callbacks.py b/app/callbacks.py
index 5b288f2..6076465 100644
--- a/app/callbacks.py
+++ b/app/callbacks.py
@@ -10,7 +10,7 @@ from dash.dependencies import (
     State
 )
 
-from client import ChatGPT
+from llm_utils.client import ChatGPT
 
 
 def format_chat_messages(chat_history):
diff --git a/dash_proxy.py b/dash_proxy/dash_proxy.py
similarity index 63%
rename from dash_proxy.py
rename to dash_proxy/dash_proxy.py
index b7add29..309e977 100644
--- a/dash_proxy.py
+++ b/dash_proxy/dash_proxy.py
@@ -1,16 +1,7 @@
-import os
-import logging
-
-logger = logging.getLogger(__name__)
-logger.setLevel('INFO')
-
-HERE = os.path.dirname(os.path.abspath(__file__))
-
-
 def setup_dash_proxy():
     command = [
         'python',
-        'app/app.py',
+        '/dash/app/app.py',
         '--port',
         '{port}'
     ]
diff --git a/setup.py b/dash_proxy/setup.py
similarity index 100%
rename from setup.py
rename to dash_proxy/setup.py
diff --git a/llm_utils/setup.py b/llm_utils/setup.py
new file mode 100644
index 0000000..737729b
--- /dev/null
+++ b/llm_utils/setup.py
@@ -0,0 +1,14 @@
+import setuptools
+
+setuptools.setup(
+    author="Julian Rasch",
+    author_email="julian.rasch@fh-muenster.de",
+    description="Helper modules to work with LLMs.",
+    name="llm_utils",
+    package_dir={"": "src"},
+    packages=setuptools.find_packages(where="src"),
+    install_requires=[
+        "openai", 
+        "python-dotenv"
+    ]
+)
diff --git a/llm_utils/src/__init__.py b/llm_utils/src/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/llm_utils/src/llm_utils/__init__.py b/llm_utils/src/llm_utils/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/app/client.py b/llm_utils/src/llm_utils/client.py
similarity index 85%
rename from app/client.py
rename to llm_utils/src/llm_utils/client.py
index 5b95e07..82ceeac 100644
--- a/app/client.py
+++ b/llm_utils/src/llm_utils/client.py
@@ -1,17 +1,23 @@
 import os
+import logging
 from openai import AzureOpenAI
 from dotenv import load_dotenv
 
 from enum import Enum
 
-
-found_dotenv = load_dotenv(
-    "config.txt",
-    override=True
-)
+try:
+    found_dotenv = load_dotenv(
+        "/home/jovyan/config.txt",
+        override=True
+    )
+except ValueError:
+    logging.warn("Could not detect config.txt in /home/jovyan/. Searching in current folder ...")
+    found_dotenv = load_dotenv(
+        "config.txt",
+        override=True)
 
 if not found_dotenv: 
-    raise ValueError("Could not detect .env-file.")
+    raise ValueError("Could not detect config.txt in /home/jovyan/.")
 
 AZURE_OPENAI_API_KEY = os.environ.get("AZURE_OPENAI_API_KEY")
 AZURE_OPENAI_ENDPOINT = os.environ.get("AZURE_OPENAI_ENDPOINT")
-- 
GitLab