#!/usr/bin/env python3 """Simple test script for Agentic RAG system""" import os import json from pathlib import Path from dotenv import load_dotenv # Load environment variables load_dotenv() def _basic_functionality(): """Test basic functionality of the system""" print("🧪 Testing Agentic RAG System") print("="*60) # Import modules try: from config import Config, KnowledgeBaseType from agent import AgenticRAG from tools import KnowledgeBaseTools from chunking import DocumentChunker, DocumentIndexer print("āœ… All modules imported successfully") except ImportError as e: print(f"āŒ Import error: {e}") return False # Test configuration print("\nšŸ“‹ Testing Configuration...") try: config = Config.from_env() print(f" Provider: {config.llm.provider}") print(f" KB Type: {config.knowledge_base.type}") print(f" Chunk Size: {config.chunking.chunk_size}") print("āœ… Configuration loaded") except Exception as e: print(f"āŒ Config error: {e}") return False # Test document chunking print("\nšŸ“„ Testing Document Chunking...") try: chunker = DocumentChunker(config.chunking) sample_text = """ę•…ę„ę€äŗŗē½Ŗę˜ÆęŒ‡ę•…ę„éžę³•å‰„å¤ŗä»–äŗŗē”Ÿå‘½ēš„č”Œäøŗć€‚ ę ¹ę®ć€Šäø­åŽäŗŗę°‘å…±å’Œå›½åˆ‘ę³•ć€‹ē¬¬äŗŒē™¾äø‰åäŗŒę”č§„å®šļ¼Œę•…ę„ę€äŗŗēš„ļ¼Œ å¤„ę­»åˆ‘ć€ę— ęœŸå¾’åˆ‘ęˆ–č€…åå¹“ä»„äøŠęœ‰ęœŸå¾’åˆ‘ļ¼›ęƒ…čŠ‚č¾ƒč½»ēš„ļ¼Œ å¤„äø‰å¹“ä»„äøŠåå¹“ä»„äø‹ęœ‰ęœŸå¾’åˆ‘ć€‚ é‡åˆ‘č€ƒč™‘å› ē“ åŒ…ę‹¬ēŠÆē½ŖåŠØęœŗć€ę‰‹ę®µć€åŽęžœē­‰ć€‚""" chunks = chunker.chunk_text(sample_text, "test_doc") print(f" Created {len(chunks)} chunks") print(f" First chunk: {chunks[0]['text'][:100]}...") print("āœ… Chunking works") except Exception as e: print(f"āŒ Chunking error: {e}") return False # Test knowledge base tools print("\nšŸ”§ Testing Knowledge Base Tools...") try: kb_tools = KnowledgeBaseTools(config.knowledge_base) # Add test document to store kb_tools.add_document( "test_doc_1", "ę•…ę„ę€äŗŗē½Ŗå¤„ę­»åˆ‘ć€ę— ęœŸå¾’åˆ‘ęˆ–č€…åå¹“ä»„äøŠęœ‰ęœŸå¾’åˆ‘ć€‚", {"source": "test"} ) # Test document retrieval doc = kb_tools.get_document("test_doc_1") if "error" not in doc: print(f" Retrieved document: {doc['doc_id']}") print("āœ… Document storage works") else: print(f"āš ļø Document retrieval returned: {doc}") except Exception as e: print(f"āŒ KB Tools error: {e}") return False # Test agent initialization print("\nšŸ¤– Testing Agent Initialization...") try: agent = AgenticRAG(config) print(f" Model: {agent.model}") print(f" Provider: {config.llm.provider}") print("āœ… Agent initialized") except Exception as e: print(f"āŒ Agent initialization error: {e}") print(" Make sure you have set the appropriate API key in .env") return False # Test simple query (if API key is available) if os.getenv("MOONSHOT_API_KEY") or os.getenv("OPENAI_API_KEY"): print("\nšŸ’¬ Testing Simple Query...") try: # Add some test data kb_tools.add_document( "criminal_law_test", """ē›—ēŖƒē½Ŗēš„ē«‹ę”ˆę ‡å‡†ļ¼š 1. ę•°é¢č¾ƒå¤§ļ¼šäø€čˆ¬äøŗ1000å…ƒč‡³3000å…ƒä»„äøŠ 2. å¤šę¬”ē›—ēŖƒļ¼š2å¹“å†…ē›—ēŖƒ3欔仄上 3. å…„ęˆ·ē›—ēŖƒć€ęŗåø¦å‡¶å™Øē›—ēŖƒć€ę‰’ēŖƒäøč®ŗę•°é¢""", {"type": "law"} ) # Test non-agentic query (simpler, less likely to fail) response = agent.query_non_agentic("ē›—ēŖƒē½Ŗē«‹ę”ˆę ‡å‡†", stream=False) if response and len(response) > 10: print(f" Response: {response[:200]}...") print("āœ… Query processing works") else: print(f"āš ļø Response was empty or too short: {response}") except Exception as e: print(f"āš ļø Query error: {e}") print(" This might be due to retrieval pipeline not running") else: print("\nāš ļø Skipping query test (no API key found)") print("\n" + "="*60) print("šŸŽ‰ Basic functionality test complete!") return True def test_basic_functionality(): """Pytest contract: failures are assertions, not a returned status value.""" assert _basic_functionality() def _evaluation_dataset(): """Test evaluation dataset generation""" print("\nšŸ“Š Testing Evaluation Dataset...") try: # Import dataset builder import sys sys.path.append("evaluation") from dataset_builder import LegalDatasetBuilder, create_legal_documents # Build dataset builder = LegalDatasetBuilder() simple_cases = builder.create_simple_cases() complex_cases = builder.create_complex_cases() print(f" Simple cases: {len(simple_cases)}") print(f" Complex cases: {len(complex_cases)}") print(f" First simple case: {simple_cases[0]['question']}") # Create documents documents = create_legal_documents() print(f" Legal documents: {len(documents)}") print("āœ… Evaluation dataset works") return True except Exception as e: print(f"āŒ Dataset error: {e}") return False def test_evaluation_dataset(): """Pytest contract: failures are assertions, not a returned status value.""" assert _evaluation_dataset() if __name__ == "__main__": print("šŸš€ Agentic RAG System - Test Suite") print("="*60) # Run tests success = _basic_functionality() if success: _evaluation_dataset() print("\n" + "="*60) if success: print("āœ… All basic tests passed!") print("\nNext steps:") print("1. Make sure retrieval pipeline is running:") print(" cd ../retrieval-pipeline && python main.py") print("\n2. Run the quickstart:") print(" python quickstart.py") print("\n3. Or start interactive mode:") print(" python main.py") else: print("āŒ Some tests failed. Please check the errors above.") print("\nCommon issues:") print("1. Missing API keys in .env file") print("2. Retrieval pipeline not running") print("3. Missing dependencies (run: pip install -r requirements.txt)")