Spaces:
Build error
Build error
Update chatbot_new.py
Browse files- chatbot_new.py +18 -24
chatbot_new.py
CHANGED
|
@@ -1,4 +1,5 @@
|
|
| 1 |
# chatbot_new.py
|
|
|
|
| 2 |
import os
|
| 3 |
import time
|
| 4 |
import pickle
|
|
@@ -77,15 +78,12 @@ class StateError(ChatbotError):
|
|
| 77 |
|
| 78 |
class IntelligentRAGChatbot:
|
| 79 |
def __init__(self, vectorstore_file: Path, bm25_file: Path, api_key: Optional[str] = None):
|
| 80 |
-
"""
|
| 81 |
-
Initialisiert den RAG Chatbot mit optimierter Ladestrategie
|
| 82 |
-
"""
|
| 83 |
self.logger = logging.getLogger(__name__)
|
| 84 |
self.logger.setLevel(logging.INFO)
|
| 85 |
|
| 86 |
try:
|
| 87 |
# Initialisiere geteilte Modelle
|
| 88 |
-
self.shared_models =
|
| 89 |
self.embeddings_model = self.shared_models.embeddings_model
|
| 90 |
|
| 91 |
# Performance Metrics
|
|
@@ -102,47 +100,39 @@ class IntelligentRAGChatbot:
|
|
| 102 |
# Komponenten Initialisierung
|
| 103 |
self._initialize_components(api_key)
|
| 104 |
|
| 105 |
-
# Speichere letzte Antwort für Follow-ups
|
| 106 |
-
self.last_response = None
|
| 107 |
-
|
| 108 |
except Exception as e:
|
| 109 |
raise InitializationError(f"Fehler bei der Initialisierung: {str(e)}")
|
| 110 |
|
| 111 |
def _initialize_stores(self, vectorstore_file: Path, bm25_file: Path):
|
| 112 |
"""Initialisiert Vector Store und BM25"""
|
| 113 |
try:
|
| 114 |
-
|
| 115 |
-
|
| 116 |
-
progress_text.info("Initialisiere Vector Store...")
|
| 117 |
|
| 118 |
# Überprüfe Dateien
|
| 119 |
if not vectorstore_file.exists():
|
| 120 |
raise InitializationError(f"Vector Store Datei nicht gefunden: {vectorstore_file}")
|
| 121 |
-
|
| 122 |
# Vector Store Initialisierung mit Caching
|
| 123 |
self.vectorstore = load_cached_vectorstore(vectorstore_file)
|
| 124 |
-
|
| 125 |
|
| 126 |
# BM25 verwenden gleiche Datei
|
| 127 |
self.bm25 = self.vectorstore
|
| 128 |
|
| 129 |
-
|
| 130 |
-
|
| 131 |
-
|
| 132 |
except Exception as e:
|
| 133 |
raise InitializationError(f"Fehler bei Store-Initialisierung: {str(e)}")
|
| 134 |
|
| 135 |
def _initialize_components(self, api_key: Optional[str] = None):
|
| 136 |
"""Initialisiert Komponenten"""
|
| 137 |
try:
|
| 138 |
-
|
| 139 |
-
|
| 140 |
|
| 141 |
-
#
|
| 142 |
-
self.
|
| 143 |
-
|
| 144 |
-
# Nicht-gecachte Komponenten direkt initialisieren
|
| 145 |
-
self.thematic_tracker = EnhancedThematicTracker(self.embeddings_model)
|
| 146 |
|
| 147 |
# Memory Setup
|
| 148 |
self.memory = ConversationBufferWindowMemory(
|
|
@@ -152,11 +142,15 @@ class IntelligentRAGChatbot:
|
|
| 152 |
return_messages=True
|
| 153 |
)
|
| 154 |
|
|
|
|
|
|
|
|
|
|
| 155 |
# Optimierte Komponenten
|
| 156 |
self._initialize_optimized_components()
|
| 157 |
-
|
| 158 |
-
# Initialisiere letzte Antwort
|
| 159 |
self.last_response = None
|
|
|
|
|
|
|
|
|
|
| 160 |
|
| 161 |
except Exception as e:
|
| 162 |
raise InitializationError(f"Fehler bei Komponenten-Initialisierung: {str(e)}")
|
|
|
|
| 1 |
# chatbot_new.py
|
| 2 |
+
from caching import load_cached_vectorstore, load_shared_models, load_llm
|
| 3 |
import os
|
| 4 |
import time
|
| 5 |
import pickle
|
|
|
|
| 78 |
|
| 79 |
class IntelligentRAGChatbot:
|
| 80 |
def __init__(self, vectorstore_file: Path, bm25_file: Path, api_key: Optional[str] = None):
|
|
|
|
|
|
|
|
|
|
| 81 |
self.logger = logging.getLogger(__name__)
|
| 82 |
self.logger.setLevel(logging.INFO)
|
| 83 |
|
| 84 |
try:
|
| 85 |
# Initialisiere geteilte Modelle
|
| 86 |
+
self.shared_models = load_shared_models()
|
| 87 |
self.embeddings_model = self.shared_models.embeddings_model
|
| 88 |
|
| 89 |
# Performance Metrics
|
|
|
|
| 100 |
# Komponenten Initialisierung
|
| 101 |
self._initialize_components(api_key)
|
| 102 |
|
|
|
|
|
|
|
|
|
|
| 103 |
except Exception as e:
|
| 104 |
raise InitializationError(f"Fehler bei der Initialisierung: {str(e)}")
|
| 105 |
|
| 106 |
def _initialize_stores(self, vectorstore_file: Path, bm25_file: Path):
|
| 107 |
"""Initialisiert Vector Store und BM25"""
|
| 108 |
try:
|
| 109 |
+
status = st.empty()
|
| 110 |
+
status.info("Initialisiere Vector Store...")
|
|
|
|
| 111 |
|
| 112 |
# Überprüfe Dateien
|
| 113 |
if not vectorstore_file.exists():
|
| 114 |
raise InitializationError(f"Vector Store Datei nicht gefunden: {vectorstore_file}")
|
| 115 |
+
|
| 116 |
# Vector Store Initialisierung mit Caching
|
| 117 |
self.vectorstore = load_cached_vectorstore(vectorstore_file)
|
| 118 |
+
status.success("Vector Store geladen!")
|
| 119 |
|
| 120 |
# BM25 verwenden gleiche Datei
|
| 121 |
self.bm25 = self.vectorstore
|
| 122 |
|
| 123 |
+
status.empty()
|
| 124 |
+
|
|
|
|
| 125 |
except Exception as e:
|
| 126 |
raise InitializationError(f"Fehler bei Store-Initialisierung: {str(e)}")
|
| 127 |
|
| 128 |
def _initialize_components(self, api_key: Optional[str] = None):
|
| 129 |
"""Initialisiert Komponenten"""
|
| 130 |
try:
|
| 131 |
+
status = st.empty()
|
| 132 |
+
status.info("Initialisiere Komponenten...")
|
| 133 |
|
| 134 |
+
# LLM Setup mit Caching
|
| 135 |
+
self.llm = load_llm(api_key)
|
|
|
|
|
|
|
|
|
|
| 136 |
|
| 137 |
# Memory Setup
|
| 138 |
self.memory = ConversationBufferWindowMemory(
|
|
|
|
| 142 |
return_messages=True
|
| 143 |
)
|
| 144 |
|
| 145 |
+
# Thematic Tracker
|
| 146 |
+
self.thematic_tracker = EnhancedThematicTracker(self.embeddings_model)
|
| 147 |
+
|
| 148 |
# Optimierte Komponenten
|
| 149 |
self._initialize_optimized_components()
|
|
|
|
|
|
|
| 150 |
self.last_response = None
|
| 151 |
+
|
| 152 |
+
status.success("Komponenten initialisiert!")
|
| 153 |
+
status.empty()
|
| 154 |
|
| 155 |
except Exception as e:
|
| 156 |
raise InitializationError(f"Fehler bei Komponenten-Initialisierung: {str(e)}")
|