Spaces:
Running
on
Zero
Running
on
Zero
| """ | |
| Data Setup Script for Secure AI Agents Suite | |
| Initializes sample data and configurations for testing | |
| """ | |
| import json | |
| import os | |
| import logging | |
| from datetime import datetime, timedelta | |
| from pathlib import Path | |
| def setup_logging(): | |
| """Set up logging for the data setup process.""" | |
| logging.basicConfig( | |
| level=logging.INFO, | |
| format='%(asctime)s - %(name)s - %(levelname)s - %(message)s' | |
| ) | |
| return logging.getLogger(__name__) | |
| def create_sample_data(): | |
| """Create sample data for testing and demonstration.""" | |
| logger = logging.getLogger(__name__) | |
| # Create data directory | |
| data_dir = Path("data") | |
| data_dir.mkdir(exist_ok=True) | |
| # Sample CRM data | |
| crm_data = { | |
| "customers": [ | |
| { | |
| "id": "001", | |
| "name": "John Smith", | |
| "email": "john.smith@company.com", | |
| "company": "Tech Corp", | |
| "phone": "+1-555-0123", | |
| "status": "active", | |
| "last_contact": "2025-11-28", | |
| "notes": "VIP customer, prefers email communication" | |
| }, | |
| { | |
| "id": "002", | |
| "name": "Sarah Johnson", | |
| "email": "sarah.j@startup.io", | |
| "company": "Startup Inc", | |
| "phone": "+1-555-0124", | |
| "status": "active", | |
| "last_contact": "2025-11-27", | |
| "notes": "Interested in enterprise solutions" | |
| }, | |
| { | |
| "id": "003", | |
| "name": "Mike Chen", | |
| "email": "mchen@enterprise.com", | |
| "company": "Enterprise LLC", | |
| "phone": "+1-555-0125", | |
| "status": "prospect", | |
| "last_contact": "2025-11-26", | |
| "notes": "Evaluating multiple vendors" | |
| } | |
| ] | |
| } | |
| # Sample support tickets | |
| tickets_data = { | |
| "tickets": [ | |
| { | |
| "id": "TKT-001", | |
| "title": "Login issues", | |
| "description": "User cannot log in to the system", | |
| "priority": "high", | |
| "status": "open", | |
| "category": "technical", | |
| "created_date": "2025-11-29", | |
| "assigned_to": "support_team", | |
| "customer_id": "001" | |
| }, | |
| { | |
| "id": "TKT-002", | |
| "title": "Billing inquiry", | |
| "description": "Customer asking about invoice details", | |
| "priority": "medium", | |
| "status": "in_progress", | |
| "category": "billing", | |
| "created_date": "2025-11-28", | |
| "assigned_to": "billing_team", | |
| "customer_id": "002" | |
| } | |
| ] | |
| } | |
| # Sample calendar events | |
| calendar_data = { | |
| "events": [ | |
| { | |
| "id": "EVT-001", | |
| "title": "Team Meeting", | |
| "description": "Weekly team standup", | |
| "datetime": "2025-11-29 14:00", | |
| "location": "Conference Room A", | |
| "attendees": ["team@company.com"], | |
| "created_by": "admin" | |
| }, | |
| { | |
| "id": "EVT-002", | |
| "title": "Client Call", | |
| "description": "Monthly check-in with client", | |
| "datetime": "2025-11-29 16:30", | |
| "location": "Virtual", | |
| "attendees": ["client@external.com"], | |
| "created_by": "sales_team" | |
| } | |
| ] | |
| } | |
| # Sample travel data | |
| travel_data = { | |
| "destinations": [ | |
| { | |
| "name": "Kathmandu", | |
| "country": "Nepal", | |
| "description": "Capital city with rich cultural heritage", | |
| "best_time": "October to April", | |
| "avg_cost_per_day": 50, | |
| "attractions": ["Temple of Swayambhunath", "Kathmandu Durbar Square", "Pashupatinath Temple"] | |
| }, | |
| { | |
| "name": "Pokhara", | |
| "country": "Nepal", | |
| "description": "Gateway to the Annapurnas, known for lakes and mountains", | |
| "best_time": "September to November, March to May", | |
| "avg_cost_per_day": 40, | |
| "attractions": ["Phewa Lake", "World Peace Pagoda", "Devi's Fall"] | |
| } | |
| ], | |
| "hotels": [ | |
| { | |
| "name": "Luxury Hotel", | |
| "location": "Kathmandu", | |
| "price_per_night": 150, | |
| "rating": 4.5, | |
| "amenities": ["WiFi", "Pool", "Spa", "Restaurant"] | |
| }, | |
| { | |
| "name": "Business Hotel", | |
| "location": "Kathmandu", | |
| "price_per_night": 80, | |
| "rating": 4.0, | |
| "amenities": ["WiFi", "Business Center", "Gym"] | |
| } | |
| ] | |
| } | |
| # Sample brand assets | |
| brand_data = { | |
| "brands": [ | |
| { | |
| "name": "TechCorp", | |
| "description": "Technology solutions provider", | |
| "colors": { | |
| "primary": "#2E86AB", | |
| "secondary": "#A23B72", | |
| "accent": "#F24236" | |
| }, | |
| "typography": { | |
| "primary": "Modern Sans-serif", | |
| "secondary": "Clean Helvetica" | |
| }, | |
| "voice": { | |
| "tone": "Professional", | |
| "personality": "Innovation-driven, trustworthy" | |
| } | |
| } | |
| ] | |
| } | |
| # Sample voice profiles | |
| voice_data = { | |
| "voices": [ | |
| { | |
| "id": "pNInz6obpgDQGcFmaJgB", | |
| "name": "Adam", | |
| "gender": "male", | |
| "description": "Professional, clear male voice", | |
| "use_case": "Business presentations" | |
| }, | |
| { | |
| "id": "21m00Tcm4TlvDq8ikWAM", | |
| "name": "Rachel", | |
| "gender": "female", | |
| "description": "Warm, friendly female voice", | |
| "use_case": "Customer service" | |
| }, | |
| { | |
| "id": "29vD33N1CtxCmqQRPOHJ", | |
| "name": "Cloyd", | |
| "gender": "male", | |
| "description": "Deep, authoritative voice", | |
| "use_case": "Narrations" | |
| } | |
| ] | |
| } | |
| # Save sample data files | |
| data_files = { | |
| "crm_customers.json": crm_data, | |
| "support_tickets.json": tickets_data, | |
| "calendar_events.json": calendar_data, | |
| "travel_destinations.json": travel_data, | |
| "brand_assets.json": brand_data, | |
| "voice_profiles.json": voice_data | |
| } | |
| for filename, data in data_files.items(): | |
| file_path = data_dir / filename | |
| try: | |
| with open(file_path, 'w') as f: | |
| json.dump(data, f, indent=2) | |
| logger.info(f"β Created sample data: {filename}") | |
| except Exception as e: | |
| logger.error(f"β Failed to create {filename}: {e}") | |
| return data_dir | |
| def create_test_configurations(): | |
| """Create test configuration files.""" | |
| logger = logging.getLogger(__name__) | |
| config_dir = Path("config") | |
| config_dir.mkdir(exist_ok=True) | |
| # Test environment configuration | |
| test_config = { | |
| "environment": "test", | |
| "debug": True, | |
| "log_level": "DEBUG", | |
| "mcp_servers": { | |
| "enterprise": "http://localhost:8001", | |
| "consumer": "http://localhost:8002", | |
| "creative": "http://localhost:8003", | |
| "voice": "http://localhost:8004" | |
| }, | |
| "api_keys": { | |
| "openai": "test-key", | |
| "google": "test-key", | |
| "elevenlabs": "test-key" | |
| }, | |
| "security": { | |
| "level": "low", | |
| "audit_logging": False, | |
| "prompt_injection_defense": False | |
| }, | |
| "features": { | |
| "enable_enterprise_agent": True, | |
| "enable_consumer_agent": True, | |
| "enable_creative_agent": True, | |
| "enable_voice_agent": True | |
| } | |
| } | |
| # Performance test configuration | |
| perf_config = { | |
| "load_test": { | |
| "concurrent_users": 10, | |
| "test_duration_minutes": 5, | |
| "requests_per_second": 2 | |
| }, | |
| "stress_test": { | |
| "max_concurrent_sessions": 50, | |
| "memory_limit_mb": 512, | |
| "cpu_limit_percent": 80 | |
| }, | |
| "monitoring": { | |
| "metrics_interval_seconds": 30, | |
| "alert_thresholds": { | |
| "response_time_ms": 1000, | |
| "error_rate_percent": 5, | |
| "memory_usage_percent": 80 | |
| } | |
| } | |
| } | |
| # Security test configuration | |
| security_config = { | |
| "injection_tests": [ | |
| "ignore previous instructions", | |
| "forget everything above", | |
| "<script>alert('xss')</script>", | |
| "{{7*7}}", | |
| "'; DROP TABLE users; --" | |
| ], | |
| "sanitization_tests": [ | |
| "credit card: 1234-5678-9012-3456", | |
| "ssn: 123-45-6789", | |
| "email: test@example.com", | |
| "phone: (555) 123-4567" | |
| ], | |
| "access_control_tests": [ | |
| "admin_session", | |
| "basic_session", | |
| "unauthorized_session" | |
| ] | |
| } | |
| # Save configuration files | |
| config_files = { | |
| "test.json": test_config, | |
| "performance.json": perf_config, | |
| "security.json": security_config | |
| } | |
| for filename, data in config_files.items(): | |
| file_path = config_dir / filename | |
| try: | |
| with open(file_path, 'w') as f: | |
| json.dump(data, f, indent=2) | |
| logger.info(f"β Created test config: {filename}") | |
| except Exception as e: | |
| logger.error(f"β Failed to create {filename}: {e}") | |
| return config_dir | |
| def create_sample_logs(): | |
| """Create sample log files for testing.""" | |
| logger = logging.getLogger(__name__) | |
| log_dir = Path("logs") | |
| log_dir.mkdir(exist_ok=True) | |
| # Sample audit log | |
| audit_log = [ | |
| { | |
| "timestamp": "2025-11-29T12:00:00Z", | |
| "session_id": "enterprise_1_20251129_120000", | |
| "tool": "crm_update", | |
| "request_hash": "abc123", | |
| "response_hash": "def456", | |
| "user": "admin", | |
| "action": "customer_update" | |
| }, | |
| { | |
| "timestamp": "2025-11-29T12:01:00Z", | |
| "session_id": "consumer_1_20251129_120100", | |
| "tool": "trip_plan", | |
| "request_hash": "ghi789", | |
| "response_hash": "jkl012", | |
| "user": "user123", | |
| "action": "travel_planning" | |
| } | |
| ] | |
| # Sample error log | |
| error_log = [ | |
| { | |
| "timestamp": "2025-11-29T12:00:00Z", | |
| "level": "ERROR", | |
| "message": "MCP server connection failed", | |
| "agent": "enterprise", | |
| "session_id": "enterprise_1_20251129_120000" | |
| }, | |
| { | |
| "timestamp": "2025-11-29T12:01:00Z", | |
| "level": "WARNING", | |
| "message": "Rate limit approaching", | |
| "agent": "voice", | |
| "session_id": "voice_1_20251129_120100" | |
| } | |
| ] | |
| # Sample performance log | |
| perf_log = [ | |
| { | |
| "timestamp": "2025-11-29T12:00:00Z", | |
| "agent": "enterprise", | |
| "response_time_ms": 150, | |
| "memory_usage_mb": 45, | |
| "cpu_usage_percent": 12 | |
| }, | |
| { | |
| "timestamp": "2025-11-29T12:00:30Z", | |
| "agent": "consumer", | |
| "response_time_ms": 200, | |
| "memory_usage_mb": 52, | |
| "cpu_usage_percent": 15 | |
| } | |
| ] | |
| # Save log files | |
| log_files = { | |
| "audit.log": audit_log, | |
| "error.log": error_log, | |
| "performance.log": perf_log | |
| } | |
| for filename, logs in log_files.items(): | |
| file_path = log_dir / filename | |
| try: | |
| with open(file_path, 'w') as f: | |
| for log_entry in logs: | |
| f.write(json.dumps(log_entry) + '\n') | |
| logger.info(f"β Created sample log: {filename}") | |
| except Exception as e: | |
| logger.error(f"β Failed to create {filename}: {e}") | |
| return log_dir | |
| def create_documentation_examples(): | |
| """Create example documentation files.""" | |
| logger = logging.getLogger(__name__) | |
| docs_dir = Path("docs") | |
| docs_dir.mkdir(exist_ok=True) | |
| # API documentation | |
| api_docs = { | |
| "endpoints": [ | |
| { | |
| "method": "POST", | |
| "path": "/api/enterprise/crm/update", | |
| "description": "Update customer information", | |
| "parameters": { | |
| "customer_id": "string (required)", | |
| "field": "string (required)", | |
| "value": "string (required)" | |
| }, | |
| "response": { | |
| "success": "boolean", | |
| "message": "string", | |
| "timestamp": "string" | |
| } | |
| } | |
| ] | |
| } | |
| # Deployment guide | |
| deployment_guide = { | |
| "steps": [ | |
| { | |
| "step": 1, | |
| "title": "Environment Setup", | |
| "description": "Install dependencies and configure environment", | |
| "commands": [ | |
| "pip install -r requirements.txt", | |
| "cp .env.example .env" | |
| ] | |
| }, | |
| { | |
| "step": 2, | |
| "title": "MCP Server Configuration", | |
| "description": "Set up and configure MCP servers", | |
| "commands": [ | |
| "Deploy MCP servers", | |
| "Update .env with MCP URLs" | |
| ] | |
| } | |
| ] | |
| } | |
| # Save documentation files | |
| doc_files = { | |
| "api.json": api_docs, | |
| "deployment.json": deployment_guide | |
| } | |
| for filename, data in doc_files.items(): | |
| file_path = docs_dir / filename | |
| try: | |
| with open(file_path, 'w') as f: | |
| json.dump(data, f, indent=2) | |
| logger.info(f"β Created docs: {filename}") | |
| except Exception as e: | |
| logger.error(f"β Failed to create {filename}: {e}") | |
| return docs_dir | |
| def print_setup_summary(data_dir, config_dir, log_dir, docs_dir): | |
| """Print summary of created data setup.""" | |
| print("\n" + "="*60) | |
| print("π DATA SETUP COMPLETE!") | |
| print("="*60) | |
| print(f"\nπ Sample Data Created:") | |
| print(f" π Location: {data_dir}") | |
| print(f" β’ CRM customers and tickets") | |
| print(f" β’ Calendar events") | |
| print(f" β’ Travel destinations and hotels") | |
| print(f" β’ Brand assets and voice profiles") | |
| print(f"\nβοΈ Test Configurations:") | |
| print(f" π Location: {config_dir}") | |
| print(f" β’ Test environment settings") | |
| print(f" β’ Performance test parameters") | |
| print(f" β’ Security test scenarios") | |
| print(f"\nπ Sample Logs:") | |
| print(f" π Location: {log_dir}") | |
| print(f" β’ Audit logs for compliance") | |
| print(f" β’ Error logs for debugging") | |
| print(f" β’ Performance metrics") | |
| print(f"\nπ Documentation:") | |
| print(f" π Location: {docs_dir}") | |
| print(f" β’ API endpoint documentation") | |
| print(f" β’ Deployment guides") | |
| print(f"\nπ Next Steps:") | |
| print(f" 1. Review and customize sample data") | |
| print(f" 2. Update test configurations as needed") | |
| print(f" 3. Run example scenarios: python examples.py") | |
| print(f" 4. Start testing individual agents") | |
| print(f" 5. Deploy to production environment") | |
| def main(): | |
| """Main data setup function.""" | |
| logger = setup_logging() | |
| print("π§ Secure AI Agents Suite - Data Setup") | |
| print("="*50) | |
| try: | |
| # Create all data directories and files | |
| data_dir = create_sample_data() | |
| config_dir = create_test_configurations() | |
| log_dir = create_sample_logs() | |
| docs_dir = create_documentation_examples() | |
| print("\nβ Data setup completed successfully!") | |
| print_setup_summary(data_dir, config_dir, log_dir, docs_dir) | |
| except Exception as e: | |
| logger.error(f"β Data setup failed: {e}") | |
| print(f"\nβ Setup failed: {e}") | |
| return 1 | |
| return 0 | |
| if __name__ == "__main__": | |
| exit(main()) |