import os import sys import torch import time # Ensure the app directory is in the path project_root = os.path.abspath(os.path.join(os.path.dirname(__file__), "..")) sys.path.append(project_root) from app import ( index_files, answer_with_rag, get_embedding_function, get_llm, clear_index ) def run_reproduction_test(): print("--- Vollständiger RAG-Inhaltswiedergabe Test ---") # 1. Voraussetzungen prüfen test_file = os.path.join(project_root, "tests", "test_data", "sample.txt") if not os.path.exists(test_file): print(f"Fehler: Testdatei {test_file} nicht gefunden.") return # 2. Modelle laden print("Lade Modelle (Embedding & LLM)... Dies kann einen Moment dauern.") get_embedding_function() get_llm() # 3. Index vorbereiten print("Bereite Index vor...") clear_index() # 4. Datei indexieren print(f"Indexiere {test_file}...") # index_files(file_paths, mongo_uri, mongo_db, mongo_coll, use_mongo) status = index_files([test_file], "mongodb://localhost:27017/", "test_rag_db", "test_chunks", False) print(f"Status: {status}") # 5. RAG Abfrage stellen question = "Was ist Quantenmechanik laut der bereitgestellten Information?" print(f"\nFragestellung: {question}") print("Generiere Antwort...\n") full_answer = "" start_time = time.time() # Wir nutzen den Generator aus app.py for token in answer_with_rag(question, []): full_answer += token sys.stdout.write(token) sys.stdout.flush() duration = time.time() - start_time print(f"\n\n--- Fertig (Dauer: {duration:.2f}s) ---") # 6. Validierung keywords = ["Physik", "Atome", "Teilchen", "Natur"] found_keywords = [kw for kw in keywords if kw.lower() in full_answer.lower()] print(f"\nGefundene Schlüsselwörter: {found_keywords}") if len(found_keywords) >= 2: print("TEST BESTANDEN: Die Inhaltswiedergabe war erfolgreich.") else: print("TEST FEHLGESCHLAGEN: Die Antwort enthielt nicht genügend relevante Informationen.") if __name__ == "__main__": run_reproduction_test()