Spaces:
Sleeping
Sleeping
File size: 2,626 Bytes
e26f9a8 |
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 |
# app.py
import streamlit as st
import os
import faiss
import pickle
from sentence_transformers import SentenceTransformer
from groq import Groq
from dotenv import load_dotenv
import re # Import regular expressions for expand_query_with_llm_app
# --- Page Configuration (MUST BE THE FIRST STREAMLIT COMMAND) ---
st.set_page_config(page_title="RAG BITS Tutor", page_icon="🎓") # Set page title and icon
# --- Konfiguration und Modell-Laden (am besten ausserhalb von Funktionen, um Caching zu nutzen) ---
@st.cache_resource # Wichtig für das Caching von grossen Modellen und Daten
def load_models_and_data():
# Lade Umgebungsvariablen (falls .env Datei im Space vorhanden ist)
load_dotenv()
groq_api_key_app = os.getenv("GROQ_API_KEY") # Stelle sicher, dass der Key im Space verfügbar ist (siehe Schritt 3)
# Pfade zum Index und den Chunks
output_folder = "faiss_index_bits" # Muss im HF Space vorhanden sein
index_path = os.path.join(output_folder, "bits_tutor.index")
chunks_path = os.path.join(output_folder, "bits_chunks.pkl")
# Lade FAISS Index
if not os.path.exists(index_path):
st.error(f"FAISS Index nicht gefunden unter: {index_path}") # This is a Streamlit command
return None, None, None, None
index_loaded = faiss.read_index(index_path)
# Lade Chunks
if not os.path.exists(chunks_path):
st.error(f"Chunks-Datei nicht gefunden unter: {chunks_path}") # This is a Streamlit command
return None, None, None, None
with open(chunks_path, "rb") as f:
chunks_loaded = pickle.load(f)
# Lade Embedding-Modell
embedding_model_name_app = "Sahajtomar/German-semantic"
embedding_model_loaded = SentenceTransformer(embedding_model_name_app)
# Initialisiere Groq Client
if not groq_api_key_app:
st.error("GROQ_API_KEY nicht gefunden. Bitte im Hugging Face Space als Secret hinzufügen.") # This is a Streamlit command
return None, None, None, None
groq_client_loaded = Groq(api_key=groq_api_key_app)
return index_loaded, chunks_loaded, embedding_model_loaded, groq_client_loaded
# Lade Modelle und Daten beim Start der App
# Wichtig: Die Funktion load_models_and_data() verwendet st.error(), was ein Streamlit-Befehl ist.
# Daher muss st.set_page_config() VOR dem ersten möglichen Aufruf von st.error() stehen.
faiss_index, chunks_data, embedding_model, groq_client = load_models_and_data()
# ... (Rest deines app.py Skripts bleibt gleich) ...
# --- Streamlit UI (kommt nach load_models_and_data) ---
st.title("🎓 RAG Study Tutor for Business IT Strategy")
# ... etc. ... |