""" Test integrazione RAG + Memoria Intelligente Verifica che il sistema combinato funzioni correttamente: - RAG per domande filosofiche - Memoria intelligente per info personali - Combinazione di entrambi """ from dotenv import load_dotenv load_dotenv(dotenv_path='data/.env') from core.kernel import JarvisKernel import time print("=" * 80) print("TEST INTEGRAZIONE RAG + MEMORIA INTELLIGENTE") print("=" * 80) # Inizializza kernel print("\n[INIZIALIZZAZIONE] Avvio kernel...") kernel = JarvisKernel(config_path='config/config.yaml', profile_name='aurelio') kernel.start() cognitive = kernel.get_service("CognitiveService") if not cognitive: print("❌ CognitiveService non disponibile") exit(1) session_id = "test_rag_memory_integration" # Pulizia precedente print("\n[STEP 1] Pulizia sessione precedente...") print("-" * 80) cognitive.clear_memory(session_id) print("✅ Memoria cancellata") # Test 1: Condividi info personali print("\n[STEP 2] Condivido informazioni personali...") print("-" * 80) query1 = "Ciao Marco Aurelio, mi chiamo Alessandro e vivo a Torino con mia moglie Laura. Lavoro come ingegnere." print(f"[USER] {query1}") response1 = cognitive.ask(query1, session_id) print(f"[MARCO] {response1[:200]}...") time.sleep(3) # Aspetta background thread per profile update # Test 2: Domanda filosofica (dovrebbe triggerare RAG) print("\n[STEP 3] Faccio domanda filosofica (RAG atteso)...") print("-" * 80) query2 = "Cosa pensi della virtù della temperanza?" print(f"[USER] {query2}") response2 = cognitive.ask(query2, session_id) print(f"\n[MARCO] {response2}") # Verifica se RAG è stato usato print("\n[VERIFICA RAG]") if "meditazioni" in response2.lower() or "scrivo" in response2.lower() or "scritto" in response2.lower(): print("✅ RAG sembra essere stato utilizzato (menzione delle meditazioni)") else: print("⚠️ RAG potrebbe non essere stato usato o DB non indicizzato") print(" Esegui: python scripts/indicizza_documenti.py data/marco_aurelio.pdf") # Test 3: Domanda personale (non dovrebbe usare RAG) print("\n[STEP 4] Faccio domanda generica (RAG non necessario)...") print("-" * 80) query3 = "Che ore sono?" print(f"[USER] {query3}") response3 = cognitive.ask(query3, session_id) print(f"[MARCO] {response3[:200]}...") # Test 4: Verifica memoria personale print("\n[STEP 5] Verifico che ricordi il mio nome e info personali...") print("-" * 80) time.sleep(3) # Aspetta background thread query4 = "Come mi chiamo e dove lavoro?" print(f"[USER] {query4}") response4 = cognitive.ask(query4, session_id) print(f"\n[MARCO] {response4}") # Verifica memoria print("\n[VERIFICA MEMORIA]") has_name = "Alessandro" in response4 or "alessandro" in response4.lower() has_job = "ingegnere" in response4.lower() if has_name and has_job: print("✅ Memoria personale funzionante (ricorda nome e lavoro)") elif has_name: print("⚠️ Ricorda il nome ma non il lavoro") elif has_job: print("⚠️ Ricorda il lavoro ma non il nome") else: print("❌ ERRORE: Non ricorda le info personali") # Test 5: Combinazione RAG + Memoria print("\n[STEP 6] Test combinato: RAG + Memoria personale...") print("-" * 80) query5 = "Puoi darmi un consiglio stoico per il mio lavoro?" print(f"[USER] {query5}") response5 = cognitive.ask(query5, session_id) print(f"\n[MARCO] {response5}") print("\n[VERIFICA COMBINATA]") has_job_context = "ingegnere" in response5.lower() has_philosophical = any(word in response5.lower() for word in ['virtù', 'stoic', 'saggezza', 'meditazioni']) if has_job_context and has_philosophical: print("✅ Perfetto! Ha combinato contesto personale (ingegnere) + filosofia stoica") elif has_philosophical: print("⚠️ Ha usato filosofia ma non ha personalizzato per il lavoro") elif has_job_context: print("⚠️ Ha menzionato il lavoro ma senza filosofia stoica profonda") else: print("⚠️ Risposta generica, né personalizzata né filosofica") # Cleanup print("\n[CLEANUP] Chiusura kernel...") kernel.stop() # Riepilogo finale print("\n" + "=" * 80) print("RIEPILOGO TEST") print("=" * 80) print("✅ Sistema avviato correttamente") print("✅ Info personali salvate") if "✅ RAG" in response2 or "meditazioni" in response2.lower(): print("✅ RAG funzionante per domande filosofiche") else: print("⚠️ RAG da verificare (indicizza documenti se necessario)") if has_name and has_job: print("✅ Memoria intelligente funzionante") else: print("⚠️ Memoria intelligente da verificare") print("\n" + "=" * 80) print("✅ TEST COMPLETATO!") print("=" * 80)