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