syscred_duplicate / syscred /test_graphrag.py
D Ф m i И i q ц e L Ф y e r
Deploy SysCRED with PyTorch
e70050b
# -*- coding: utf-8 -*-
"""
Test Script for GraphRAG
========================
Verifies that the GraphRAG module can correctly:
1. Connect to an in-memory ontology.
2. Retrieve context for a domain that has history.
"""
import sys
import os
# Add parent directory to path to allow imports
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
from syscred.ontology_manager import OntologyManager
from syscred.graph_rag import GraphRAG
def test_graphrag_retrieval():
print("=== Testing GraphRAG Retrieval Logic ===\n")
# 1. Setup In-Memory Ontology
print("[1] Initializing in-memory Ontology...")
om = OntologyManager(base_ontology_path=None, data_path=None)
# 2. Add Fake History (Memory)
print("[2] Injecting test memory for 'lemonde.fr'...")
fake_report = {
'scoreCredibilite': 0.95,
'informationEntree': 'https://www.lemonde.fr/article/test',
'resumeAnalyse': "Reliable source.",
'reglesAppliquees': {
'source_analysis': {'reputation': 'High', 'domain': 'lemonde.fr'}
}
}
# Add it 3 times to simulate history
om.add_evaluation_triplets(fake_report)
om.add_evaluation_triplets(fake_report)
om.add_evaluation_triplets(fake_report)
print(" -> Added 3 evaluation records.")
# 3. Initialize GraphRAG
rag = GraphRAG(om)
# 4. Query Context
domain = "lemonde.fr"
print(f"\n[3] Querying GraphRAG for domain: '{domain}'...")
context = rag.get_context(domain)
print("\n--- Result Context (Domain History) ---")
print(context['full_text'])
print("---------------------------------------\n")
# 5. Validation 1 (History)
if "Analyzed 3 times" in context['full_text']:
print("✅ SUCCESS: GraphRAG correctly remembered the history.")
else:
print("❌ FAILURE: GraphRAG did not return the expected history count.")
# 6. Test Similar Claims (New Feature)
print(f"\n[4] Testing 'Similar Claims' for keywords: ['lemonde', 'fake']...")
# The previous injection didn't use 'fake', let's check what it finds or if we need to inject more
# Our fake_report had content: 'https://www.lemonde.fr/article/test'
# The new logic searches regex in 'informationContent'
# Let's add a specifically claim-like entry
fake_claim = {
'scoreCredibilite': 0.1,
'informationEntree': 'The earth is flat and fake',
'resumeAnalyse': "False claim.",
'reglesAppliquees': {'source_analysis': {'reputation': 'Low'}}
}
om.add_evaluation_triplets(fake_claim)
# Search for 'flat'
similar_context = rag.get_context("unknown.com", keywords=["flat", "earth"])
print("\n--- Result Context (Similar Claims) ---")
print(similar_context['full_text'])
print("---------------------------------------\n")
if "Found 1 similar claims" in similar_context['full_text'] or "The earth is flat" in similar_context['full_text']:
print("✅ SUCCESS: GraphRAG found similar claims by keywords.")
else:
print("❌ FAILURE: GraphRAG did not find the injected similar claim.")
if __name__ == "__main__":
test_graphrag_retrieval()