From c1884977319278568a0899bad6e9edd79527c8fc Mon Sep 17 00:00:00 2001 From: Pierre Wessman Date: Tue, 21 Jan 2025 09:11:18 +0000 Subject: [PATCH] reorganize folder structure --- agent-api/db.py | 32 ---------------- agent-api/docker-compose.yml | 15 -------- agent/Dockerfile | 13 +++++++ {agent-api => agent}/db.sql | 0 agent/docker-compose.yml | 30 +++++++++++++++ {agent-api => agent}/install.md | 0 {agent-api => agent}/llama_server.py | 0 {agent-api => agent}/readme.md | 0 {agent-api => agent/src}/.cache | 0 {agent-api => agent/src}/agent.py | 0 {agent-api => agent/src}/backend.py | 0 {agent-api => agent/src}/config.default.yml | 0 agent/src/db.py | 35 ++++++++++++++++++ {agent-api => agent/src}/frontend.py | 0 {agent-api => agent/src}/llm.py | 13 +++++-- {agent-api => agent/src}/plugins/__init__.py | 0 .../src}/plugins/base_plugin.py | 0 .../src}/plugins/calendar/plugin.py | 0 .../src}/plugins/homeassistant.py | 0 .../src}/plugins/lights/plugin.py | 0 {agent-api => agent/src}/plugins/music/.cache | 0 .../src}/plugins/music/plugin.py | 7 +++- agent/src/plugins/music/requirements.txt | 1 + {agent-api => agent/src}/plugins/readme.md | 0 .../src}/plugins/smhi/plugin.py | 0 .../src}/plugins/smhi/requirements.txt | 0 .../src}/plugins/todo/plugin.py | 0 .../src}/plugins/vasttrafik/plugin.py | 0 .../src}/plugins/vasttrafik/requirements.txt | 0 {agent-api => agent/src}/pyproject.toml | 0 {agent-api => agent/src}/requirements.txt | 6 +-- {agent-api => agent/src}/static/tada.wav | Bin {agent-api => agent/src}/templates/ask.en.j2 | 0 .../src}/templates/knowledge.en.j2 | 0 .../.gitignore | 0 .../audio.py | 0 .../esp-working.log | 0 .../esphome_server.py | 0 .../llm_api.py | 0 .../log_reader.py | 0 .../static/.gitkeep | 0 41 files changed, 97 insertions(+), 55 deletions(-) delete mode 100644 agent-api/db.py delete mode 100644 agent-api/docker-compose.yml create mode 100644 agent/Dockerfile rename {agent-api => agent}/db.sql (100%) create mode 100644 agent/docker-compose.yml rename {agent-api => agent}/install.md (100%) rename {agent-api => agent}/llama_server.py (100%) rename {agent-api => agent}/readme.md (100%) rename {agent-api => agent/src}/.cache (100%) rename {agent-api => agent/src}/agent.py (100%) rename {agent-api => agent/src}/backend.py (100%) rename {agent-api => agent/src}/config.default.yml (100%) create mode 100644 agent/src/db.py rename {agent-api => agent/src}/frontend.py (100%) rename {agent-api => agent/src}/llm.py (96%) rename {agent-api => agent/src}/plugins/__init__.py (100%) rename {agent-api => agent/src}/plugins/base_plugin.py (100%) rename {agent-api => agent/src}/plugins/calendar/plugin.py (100%) rename {agent-api => agent/src}/plugins/homeassistant.py (100%) rename {agent-api => agent/src}/plugins/lights/plugin.py (100%) rename {agent-api => agent/src}/plugins/music/.cache (100%) rename {agent-api => agent/src}/plugins/music/plugin.py (85%) create mode 100644 agent/src/plugins/music/requirements.txt rename {agent-api => agent/src}/plugins/readme.md (100%) rename {agent-api => agent/src}/plugins/smhi/plugin.py (100%) rename {agent-api => agent/src}/plugins/smhi/requirements.txt (100%) rename {agent-api => agent/src}/plugins/todo/plugin.py (100%) rename {agent-api => agent/src}/plugins/vasttrafik/plugin.py (100%) rename {agent-api => agent/src}/plugins/vasttrafik/requirements.txt (100%) rename {agent-api => agent/src}/pyproject.toml (100%) rename {agent-api => agent/src}/requirements.txt (59%) rename {agent-api => agent/src}/static/tada.wav (100%) rename {agent-api => agent/src}/templates/ask.en.j2 (100%) rename {agent-api => agent/src}/templates/knowledge.en.j2 (100%) rename {esphome-va-bridge => esphome-bridge}/.gitignore (100%) rename {esphome-va-bridge => esphome-bridge}/audio.py (100%) rename {esphome-va-bridge => esphome-bridge}/esp-working.log (100%) rename {esphome-va-bridge => esphome-bridge}/esphome_server.py (100%) rename {esphome-va-bridge => esphome-bridge}/llm_api.py (100%) rename {esphome-va-bridge => esphome-bridge}/log_reader.py (100%) rename {esphome-va-bridge => esphome-bridge}/static/.gitkeep (100%) diff --git a/agent-api/db.py b/agent-api/db.py deleted file mode 100644 index da0bb1e..0000000 --- a/agent-api/db.py +++ /dev/null @@ -1,32 +0,0 @@ -import logging -from pgvector.psycopg2 import register_vector -import psycopg2 - - -class Database: - def __init__( - self, - database, - user="postgres", - password="postgres", - host="localhost", - port="5433", - ) -> None: - logging.info("Connecting to database") - self.conn = psycopg2.connect( - database="rag", - user="postgres", - password="postgres", - host="localhost", - port="5433", - ) - register_vector(self.conn) - self.cur = self.conn.cursor() - self.cur.execute("SELECT version();") - logging.info(" DB Version: %s", self.cur.fetchone()[0]) - logging.info(" psycopg2 Version: %s", psycopg2.__version__) - - def close(self): - logging.info("Closing connection to database") - self.cur.close() - self.conn.close() diff --git a/agent-api/docker-compose.yml b/agent-api/docker-compose.yml deleted file mode 100644 index 0032aa1..0000000 --- a/agent-api/docker-compose.yml +++ /dev/null @@ -1,15 +0,0 @@ -version: '3.8' -services: - db: - image: pgvector/pgvector:pg16 - restart: always - environment: - - POSTGRES_USER=postgres - - POSTGRES_PASSWORD=postgres - ports: - - '5433:5432' - volumes: - - db:/var/lib/postgresql/data -volumes: - db: - driver: local \ No newline at end of file diff --git a/agent/Dockerfile b/agent/Dockerfile new file mode 100644 index 0000000..f4b7d7f --- /dev/null +++ b/agent/Dockerfile @@ -0,0 +1,13 @@ +FROM python:3.11-slim + +WORKDIR /app + +COPY src/requirements.txt /app/ +RUN pip install --no-cache-dir -r requirements.txt + +COPY src/ /app/ +RUN find /app/plugins -name "requirements.txt" -exec sh -c 'pip install --no-cache-dir -r "{}"' \; + +EXPOSE 8000 + +CMD ["uvicorn", "backend:app", "--host", "0.0.0.0", "--port", "8000"] \ No newline at end of file diff --git a/agent-api/db.sql b/agent/db.sql similarity index 100% rename from agent-api/db.sql rename to agent/db.sql diff --git a/agent/docker-compose.yml b/agent/docker-compose.yml new file mode 100644 index 0000000..1cd5dd3 --- /dev/null +++ b/agent/docker-compose.yml @@ -0,0 +1,30 @@ +version: '3.7' +services: + voice-assistant: + container_name: voice-assistant + build: + context: . + dockerfile: Dockerfile + restart: unless-stopped + ports: + - "8000:8000" + networks: + smart_home: + ipv4_address: 172.21.0.30 +# db: +# image: pgvector/pgvector:pg16 +# restart: always +# environment: +# - POSTGRES_USER=postgres +# - POSTGRES_PASSWORD=postgres +# ports: +# - '5433:5432' +# volumes: +# - db:/var/lib/postgresql/data +volumes: + db: + driver: local +networks: + smart_home: + external: + name: smart_home diff --git a/agent-api/install.md b/agent/install.md similarity index 100% rename from agent-api/install.md rename to agent/install.md diff --git a/agent-api/llama_server.py b/agent/llama_server.py similarity index 100% rename from agent-api/llama_server.py rename to agent/llama_server.py diff --git a/agent-api/readme.md b/agent/readme.md similarity index 100% rename from agent-api/readme.md rename to agent/readme.md diff --git a/agent-api/.cache b/agent/src/.cache similarity index 100% rename from agent-api/.cache rename to agent/src/.cache diff --git a/agent-api/agent.py b/agent/src/agent.py similarity index 100% rename from agent-api/agent.py rename to agent/src/agent.py diff --git a/agent-api/backend.py b/agent/src/backend.py similarity index 100% rename from agent-api/backend.py rename to agent/src/backend.py diff --git a/agent-api/config.default.yml b/agent/src/config.default.yml similarity index 100% rename from agent-api/config.default.yml rename to agent/src/config.default.yml diff --git a/agent/src/db.py b/agent/src/db.py new file mode 100644 index 0000000..75266a0 --- /dev/null +++ b/agent/src/db.py @@ -0,0 +1,35 @@ +import logging +from pgvector.psycopg2 import register_vector +import psycopg2 + + +class Database: + def __init__( + self, + database, + user="postgres", + password="postgres", + host="localhost", + port="5433", + ) -> None: + logging.info("Connecting to database") + try: + self.conn = psycopg2.connect( + database="rag", + user="postgres", + password="postgres", + host="localhost", + port="5433", + ) + register_vector(self.conn) + self.cur = self.conn.cursor() + self.cur.execute("SELECT version();") + logging.info(" DB Version: %s", self.cur.fetchone()[0]) + logging.info(" psycopg2 Version: %s", psycopg2.__version__) + except: + logging.error("Could not connect to database.") + + def close(self): + logging.info("Closing connection to database") + self.cur.close() + self.conn.close() diff --git a/agent-api/frontend.py b/agent/src/frontend.py similarity index 100% rename from agent-api/frontend.py rename to agent/src/frontend.py diff --git a/agent-api/llm.py b/agent/src/llm.py similarity index 96% rename from agent-api/llm.py rename to agent/src/llm.py index 9a1cc98..33dc6c2 100644 --- a/agent-api/llm.py +++ b/agent/src/llm.py @@ -1,12 +1,17 @@ import concurrent.futures import json -from llama_cpp.llama import Llama import logging import numpy as np from openai import OpenAI -from sentence_transformers import SentenceTransformer, CrossEncoder from typing import Union, List +try: + from llama_cpp.llama import Llama + from sentence_transformers import SentenceTransformer, CrossEncoder +except ImportError as e: + print("Faield to import packages:") + print(e) + class BaseChat: def __init__(self, config: dict) -> None: @@ -39,7 +44,7 @@ class OpenAIChat(BaseChat): base_url = self.config["openai"]["base_url"] else: base_url = None - self.client = OpenAI(base_url=base_url) + self.client = OpenAI(base_url=base_url, api_key=self.config["openai"]["api_key"]) def chat(self, messages, tools) -> str: function_map, functions = self.prepare_function_calling(tools) @@ -180,7 +185,7 @@ class LLM: else: self.embedding_model = self.config["openai"]["embedding_model"] self.rerank_model = None - self.embedding_client = OpenAI() + self.embedding_client = OpenAI(api_key=self.config["openai"]["api_key"]) def query( self, diff --git a/agent-api/plugins/__init__.py b/agent/src/plugins/__init__.py similarity index 100% rename from agent-api/plugins/__init__.py rename to agent/src/plugins/__init__.py diff --git a/agent-api/plugins/base_plugin.py b/agent/src/plugins/base_plugin.py similarity index 100% rename from agent-api/plugins/base_plugin.py rename to agent/src/plugins/base_plugin.py diff --git a/agent-api/plugins/calendar/plugin.py b/agent/src/plugins/calendar/plugin.py similarity index 100% rename from agent-api/plugins/calendar/plugin.py rename to agent/src/plugins/calendar/plugin.py diff --git a/agent-api/plugins/homeassistant.py b/agent/src/plugins/homeassistant.py similarity index 100% rename from agent-api/plugins/homeassistant.py rename to agent/src/plugins/homeassistant.py diff --git a/agent-api/plugins/lights/plugin.py b/agent/src/plugins/lights/plugin.py similarity index 100% rename from agent-api/plugins/lights/plugin.py rename to agent/src/plugins/lights/plugin.py diff --git a/agent-api/plugins/music/.cache b/agent/src/plugins/music/.cache similarity index 100% rename from agent-api/plugins/music/.cache rename to agent/src/plugins/music/.cache diff --git a/agent-api/plugins/music/plugin.py b/agent/src/plugins/music/plugin.py similarity index 85% rename from agent-api/plugins/music/plugin.py rename to agent/src/plugins/music/plugin.py index 6f5d939..d496b5a 100644 --- a/agent-api/plugins/music/plugin.py +++ b/agent/src/plugins/music/plugin.py @@ -17,7 +17,12 @@ class Plugin(BasePlugin): super().__init__(config=config) self.spotify = spotipy.Spotify( - auth_manager=SpotifyOAuth(scope="user-library-read", redirect_uri="http://localhost:8080") + auth_manager=SpotifyOAuth( + scope="user-library-read", + redirect_uri="http://localhost:8080", + client_id=self.config["plugins"]["music"]["spotify_client_id"], + client_secret=self.config["plugins"]["music"]["spotify_client_secret"] + ) ) def _search(self, query: str, limit: int = 10): diff --git a/agent/src/plugins/music/requirements.txt b/agent/src/plugins/music/requirements.txt new file mode 100644 index 0000000..e54be75 --- /dev/null +++ b/agent/src/plugins/music/requirements.txt @@ -0,0 +1 @@ +spotipy \ No newline at end of file diff --git a/agent-api/plugins/readme.md b/agent/src/plugins/readme.md similarity index 100% rename from agent-api/plugins/readme.md rename to agent/src/plugins/readme.md diff --git a/agent-api/plugins/smhi/plugin.py b/agent/src/plugins/smhi/plugin.py similarity index 100% rename from agent-api/plugins/smhi/plugin.py rename to agent/src/plugins/smhi/plugin.py diff --git a/agent-api/plugins/smhi/requirements.txt b/agent/src/plugins/smhi/requirements.txt similarity index 100% rename from agent-api/plugins/smhi/requirements.txt rename to agent/src/plugins/smhi/requirements.txt diff --git a/agent-api/plugins/todo/plugin.py b/agent/src/plugins/todo/plugin.py similarity index 100% rename from agent-api/plugins/todo/plugin.py rename to agent/src/plugins/todo/plugin.py diff --git a/agent-api/plugins/vasttrafik/plugin.py b/agent/src/plugins/vasttrafik/plugin.py similarity index 100% rename from agent-api/plugins/vasttrafik/plugin.py rename to agent/src/plugins/vasttrafik/plugin.py diff --git a/agent-api/plugins/vasttrafik/requirements.txt b/agent/src/plugins/vasttrafik/requirements.txt similarity index 100% rename from agent-api/plugins/vasttrafik/requirements.txt rename to agent/src/plugins/vasttrafik/requirements.txt diff --git a/agent-api/pyproject.toml b/agent/src/pyproject.toml similarity index 100% rename from agent-api/pyproject.toml rename to agent/src/pyproject.toml diff --git a/agent-api/requirements.txt b/agent/src/requirements.txt similarity index 59% rename from agent-api/requirements.txt rename to agent/src/requirements.txt index e6c1512..f894e06 100644 --- a/agent-api/requirements.txt +++ b/agent/src/requirements.txt @@ -1,11 +1,11 @@ fastapi uvicorn[standard] openai>=1.11.1 -sentence_transformers +#sentence_transformers dateparser pgvector -psycopg2 +psycopg2-binary pyyaml gradio hass-client>=1.0.1 -llama_cpp_python>=0.2.44 +#llama_cpp_python>=0.2.44 diff --git a/agent-api/static/tada.wav b/agent/src/static/tada.wav similarity index 100% rename from agent-api/static/tada.wav rename to agent/src/static/tada.wav diff --git a/agent-api/templates/ask.en.j2 b/agent/src/templates/ask.en.j2 similarity index 100% rename from agent-api/templates/ask.en.j2 rename to agent/src/templates/ask.en.j2 diff --git a/agent-api/templates/knowledge.en.j2 b/agent/src/templates/knowledge.en.j2 similarity index 100% rename from agent-api/templates/knowledge.en.j2 rename to agent/src/templates/knowledge.en.j2 diff --git a/esphome-va-bridge/.gitignore b/esphome-bridge/.gitignore similarity index 100% rename from esphome-va-bridge/.gitignore rename to esphome-bridge/.gitignore diff --git a/esphome-va-bridge/audio.py b/esphome-bridge/audio.py similarity index 100% rename from esphome-va-bridge/audio.py rename to esphome-bridge/audio.py diff --git a/esphome-va-bridge/esp-working.log b/esphome-bridge/esp-working.log similarity index 100% rename from esphome-va-bridge/esp-working.log rename to esphome-bridge/esp-working.log diff --git a/esphome-va-bridge/esphome_server.py b/esphome-bridge/esphome_server.py similarity index 100% rename from esphome-va-bridge/esphome_server.py rename to esphome-bridge/esphome_server.py diff --git a/esphome-va-bridge/llm_api.py b/esphome-bridge/llm_api.py similarity index 100% rename from esphome-va-bridge/llm_api.py rename to esphome-bridge/llm_api.py diff --git a/esphome-va-bridge/log_reader.py b/esphome-bridge/log_reader.py similarity index 100% rename from esphome-va-bridge/log_reader.py rename to esphome-bridge/log_reader.py diff --git a/esphome-va-bridge/static/.gitkeep b/esphome-bridge/static/.gitkeep similarity index 100% rename from esphome-va-bridge/static/.gitkeep rename to esphome-bridge/static/.gitkeep