File size: 3,376 Bytes
21c5884
 
 
 
60e5d5a
 
 
21c5884
 
417616a
 
60e5d5a
 
 
417616a
 
 
 
 
60e5d5a
 
 
bac7627
417616a
bac7627
 
 
417616a
60e5d5a
 
 
 
 
bac7627
417616a
 
 
60e5d5a
 
 
 
 
 
 
417616a
60e5d5a
 
 
417616a
60e5d5a
 
bac7627
 
 
60e5d5a
 
417616a
 
 
60e5d5a
 
 
 
417616a
 
 
 
 
60e5d5a
 
 
 
 
 
21c5884
bac7627
 
60e5d5a
 
 
 
bac7627
60e5d5a
 
 
 
417616a
21c5884
417616a
60e5d5a
 
 
 
 
 
417616a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
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