#!/usr/bin/env python3 """ Test script for Optimized Chain of Thought integration Verifies that the CoT system works correctly with the hybrid architecture """ import asyncio import sys import os # Add the src directory to the path sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'src')) def test_cot_standalone(): """Test the CoT system in standalone mode""" print("๐Ÿงช Testing Optimized Chain of Thought (Standalone)") print("-" * 50) try: from optimized_chain_of_thought import ( OptimizedChainOfThought, ReasoningType, ComplexityAnalyzer ) # Test complexity analyzer analyzer = ComplexityAnalyzer() complexity, features = analyzer.analyze("What is machine learning?") print(f"โœ… Complexity Analysis: {complexity:.3f}") print(f" Features: {list(features.keys())}") # Test CoT system cot = OptimizedChainOfThought("test_cot") print(f"โœ… CoT System initialized") return True except Exception as e: print(f"โŒ CoT Standalone Test Failed: {e}") return False async def test_cot_integration(): """Test CoT integration with hybrid architecture""" print("\n๐Ÿ”— Testing CoT Integration with Hybrid Architecture") print("-" * 50) try: from advanced_hybrid_architecture import AdvancedHybridAgent, AgentMode # Initialize hybrid agent agent = AdvancedHybridAgent( "test_agent", config={ 'cot': {'max_paths': 3, 'cache_size': 50}, 'fsm': {'max_steps': 5} } ) print(f"โœ… Hybrid Agent initialized") # Test CoT mode specifically test_query = "Explain the concept of artificial intelligence step by step" result = await agent.process_query(test_query) print(f"โœ… Query processed successfully") print(f" Mode: {result.get('mode')}") print(f" Confidence: {result.get('confidence', 0):.3f}") if 'reasoning_path' in result: path = result['reasoning_path'] print(f" CoT Steps: {len(path.steps)}") print(f" Template: {path.template_used}") print(f" Final Answer: {path.final_answer[:100]}...") return True except Exception as e: print(f"โŒ CoT Integration Test Failed: {e}") import traceback traceback.print_exc() return False async def test_performance_tracking(): """Test performance tracking capabilities""" print("\n๐Ÿ“Š Testing Performance Tracking") print("-" * 50) try: from advanced_hybrid_architecture import AdvancedHybridAgent agent = AdvancedHybridAgent("perf_test_agent") # Process multiple queries queries = [ "What is 2 + 2?", "Explain machine learning", "Compare AI and human intelligence" ] for query in queries: await agent.process_query(query) # Get performance report report = agent.get_performance_report() print(f"โœ… Performance tracking working") print(f" Total queries: {report['total_queries']}") print(f" Average confidence: {report['average_confidence']:.3f}") print(f" Mode usage: {report['mode_usage']}") return True except Exception as e: print(f"โŒ Performance Tracking Test Failed: {e}") return False async def test_caching(): """Test caching functionality""" print("\n๐Ÿ’พ Testing Caching System") print("-" * 50) try: from optimized_chain_of_thought import OptimizedChainOfThought cot = OptimizedChainOfThought("cache_test") # First query query = "What is the capital of France?" result1 = await cot.reason(query) # Same query again (should use cache) result2 = await cot.reason(query) print(f"โœ… Caching system working") print(f" First run confidence: {result1.total_confidence:.3f}") print(f" Cached run confidence: {result2.total_confidence:.3f}") # Check cache stats stats = cot.reasoning_cache.get_stats() print(f" Cache size: {stats['size']}") print(f" Hit rate: {stats['hit_rate']:.3f}") return True except Exception as e: print(f"โŒ Caching Test Failed: {e}") return False async def test_template_system(): """Test template selection and usage""" print("\n๐Ÿ“‹ Testing Template System") print("-" * 50) try: from optimized_chain_of_thought import TemplateLibrary, ComplexityAnalyzer library = TemplateLibrary() analyzer = ComplexityAnalyzer() # Test different query types test_cases = [ ("Solve the equation: 2x + 3 = 7", "mathematical"), ("Compare cats and dogs", "comparative"), ("Why does the sky appear blue?", "causal"), ("Analyze the impact of social media", "analytical") ] for query, expected_type in test_cases: complexity, features = analyzer.analyze(query) template = library.select_template(query, features) print(f" Query: {query[:30]}...") print(f" Selected: {template.name}") print(f" Expected: {expected_type}") print(f" Match: {'โœ…' if template.name == expected_type else 'โŒ'}") print() return True except Exception as e: print(f"โŒ Template System Test Failed: {e}") return False async def main(): """Run all tests""" print("๐Ÿš€ Optimized Chain of Thought Integration Tests") print("=" * 60) tests = [ ("Standalone CoT", test_cot_standalone), ("CoT Integration", test_cot_integration), ("Performance Tracking", test_performance_tracking), ("Caching System", test_caching), ("Template System", test_template_system) ] results = [] for test_name, test_func in tests: print(f"\n๐Ÿงช Running {test_name} Test...") try: if asyncio.iscoroutinefunction(test_func): result = await test_func() else: result = test_func() results.append((test_name, result)) except Exception as e: print(f"โŒ {test_name} Test Failed: {e}") results.append((test_name, False)) # Summary print("\n" + "=" * 60) print("๐Ÿ“‹ Test Results Summary") print("=" * 60) passed = 0 total = len(results) for test_name, result in results: status = "โœ… PASSED" if result else "โŒ FAILED" print(f"{test_name}: {status}") if result: passed += 1 print(f"\nOverall: {passed}/{total} tests passed") if passed == total: print("๐ŸŽ‰ All tests passed! CoT integration is working correctly.") else: print("โš ๏ธ Some tests failed. Please check the implementation.") return passed == total if __name__ == "__main__": try: success = asyncio.run(main()) sys.exit(0 if success else 1) except KeyboardInterrupt: print("\n\nโน๏ธ Tests interrupted by user") sys.exit(1) except Exception as e: print(f"\nโŒ Test suite failed: {e}") import traceback traceback.print_exc() sys.exit(1)