Chatbot_RAG / environment_setup.py
felixflier03's picture
Update environment_setup.py
60e5d5a verified
Raw
History Blame Contribute Delete
3.38 kB
import os
import streamlit as st
import gdown
from pathlib import Path
import logging
logger = logging.getLogger(__name__)
def setup_environment():
"""Setup der Umgebung für die Anwendung"""
try:
status = st.empty()
status.info("Konfiguriere Umgebung...")
# Pfade definieren
BASE_PATH = Path(__file__).resolve().parent
VECTOR_STORE_PATH = BASE_PATH / "vector_stores"
VECTOR_STORE_PATH.mkdir(parents=True, exist_ok=True)
logger.info(f"Vector Store Pfad: {VECTOR_STORE_PATH}")
status.info("Pfade konfiguriert...")
# Dateipfade
VECTOR_STORE_FILE = VECTOR_STORE_PATH / "vectorstore.pkl"
# Wenn die Datei nicht existiert, von Google Drive laden
if not VECTOR_STORE_FILE.exists():
try:
status.warning("Vector Store wird von Google Drive geladen...")
logger.info("Starte Download von Google Drive...")
# Download mit Feedback
success = gdown.download(
f"https://drive.google.com/uc?id=1EAzau2hzMTu-f4ncCXaD9933HTay2o_8",
str(VECTOR_STORE_FILE),
quiet=False
)
if success:
status.success("Vector Store erfolgreich geladen!")
logger.info("Download erfolgreich")
else:
raise Exception("Download fehlgeschlagen")
except Exception as e:
error_msg = f"Fehler beim Laden der Vector Store Datei: {str(e)}"
logger.error(error_msg)
status.error(error_msg)
raise
else:
status.info("Vector Store bereits vorhanden")
# API Key Setup
is_hf_space = "SPACE_ID" in os.environ
status.info("Prüfe API Key...")
if is_hf_space:
api_key = os.environ.get('GOOGLE_API_KEY')
if not api_key:
error_msg = "Google API Key nicht gefunden in HF Secrets!"
logger.error(error_msg)
status.error(error_msg)
raise ValueError(error_msg)
else:
from dotenv import load_dotenv
load_dotenv()
api_key = os.environ.get('GOOGLE_API_KEY')
if not api_key:
error_msg = "Google API Key nicht in Umgebungsvariablen gefunden!"
logger.error(error_msg)
status.error(error_msg)
raise ValueError(error_msg)
status.info("API Key gefunden")
# Final check
if not VECTOR_STORE_FILE.exists():
error_msg = "Vector Store Datei konnte nicht geladen werden"
logger.error(error_msg)
status.error(error_msg)
raise FileNotFoundError(error_msg)
logger.info("Environment Setup abgeschlossen")
status.success("Environment erfolgreich konfiguriert!")
status.empty()
return api_key, VECTOR_STORE_PATH
except Exception as e:
error_msg = f"Fehler beim Setup der Umgebung: {str(e)}"
logger.error(error_msg)
if 'status' in locals():
status.error(error_msg)
else:
st.error(error_msg)
raise