#!/usr/bin/env python3 """ Test script for AI Integration Verifies that the AI Engine Service is working with real AI calls. """ import asyncio import sys import os from pathlib import Path # Add the backend directory to the Python path sys.path.append(str(Path(__file__).parent / "backend")) from services.content_gap_analyzer.ai_engine_service import AIEngineService from loguru import logger async def test_ai_integration(): """Test the AI integration functionality.""" print("šŸ¤– Testing AI Integration...") # Initialize the AI Engine Service ai_service = AIEngineService() # Test data test_analysis_summary = { 'target_url': 'https://example.com', 'industry': 'Technology', 'serp_opportunities': 15, 'expanded_keywords_count': 50, 'competitors_analyzed': 5, 'dominant_themes': { 'artificial_intelligence': 0.3, 'machine_learning': 0.25, 'data_science': 0.2, 'automation': 0.15, 'innovation': 0.1 } } test_market_data = { 'industry': 'Technology', 'competitors': [ { 'url': 'competitor1.com', 'content_count': 150, 'avg_quality_score': 8.5, 'top_keywords': ['AI', 'ML', 'Data Science'] }, { 'url': 'competitor2.com', 'content_count': 200, 'avg_quality_score': 7.8, 'top_keywords': ['Automation', 'Innovation', 'Tech'] } ] } try: print("\n1. Testing Content Gap Analysis...") content_gaps = await ai_service.analyze_content_gaps(test_analysis_summary) print(f"āœ… Content Gap Analysis completed: {len(content_gaps.get('strategic_insights', []))} insights generated") print("\n2. Testing Market Position Analysis...") market_position = await ai_service.analyze_market_position(test_market_data) print(f"āœ… Market Position Analysis completed: {len(market_position.get('strategic_recommendations', []))} recommendations generated") print("\n3. Testing Content Recommendations...") recommendations = await ai_service.generate_content_recommendations(test_analysis_summary) print(f"āœ… Content Recommendations completed: {len(recommendations)} recommendations generated") print("\n4. Testing Performance Predictions...") predictions = await ai_service.predict_content_performance(test_analysis_summary) print(f"āœ… Performance Predictions completed: {predictions.get('traffic_predictions', {}).get('confidence_level', 'N/A')} confidence") print("\n5. Testing Strategic Insights...") insights = await ai_service.generate_strategic_insights(test_analysis_summary) print(f"āœ… Strategic Insights completed: {len(insights)} insights generated") print("\n6. Testing Health Check...") health = await ai_service.health_check() print(f"āœ… Health Check completed: {health.get('status', 'unknown')} status") print(f" AI Integration Status: {health.get('capabilities', {}).get('ai_integration', 'unknown')}") print("\nšŸŽ‰ All AI Integration Tests Passed!") return True except Exception as e: print(f"āŒ AI Integration Test Failed: {str(e)}") logger.error(f"AI Integration test failed: {str(e)}") return False async def test_ai_fallback(): """Test the fallback functionality when AI fails.""" print("\nšŸ”„ Testing AI Fallback Functionality...") # Initialize the AI Engine Service ai_service = AIEngineService() # Test with minimal data to trigger fallback minimal_data = {'test': 'data'} try: print("Testing fallback with minimal data...") result = await ai_service.analyze_content_gaps(minimal_data) if result and 'strategic_insights' in result: print("āœ… Fallback functionality working correctly") return True else: print("āŒ Fallback functionality failed") return False except Exception as e: print(f"āŒ Fallback test failed: {str(e)}") return False async def main(): """Main test function.""" print("šŸš€ Starting AI Integration Tests...") print("=" * 50) # Test 1: AI Integration ai_success = await test_ai_integration() # Test 2: Fallback Functionality fallback_success = await test_ai_fallback() print("\n" + "=" * 50) print("šŸ“Š Test Results Summary:") print(f"AI Integration: {'āœ… PASSED' if ai_success else 'āŒ FAILED'}") print(f"Fallback Functionality: {'āœ… PASSED' if fallback_success else 'āŒ FAILED'}") if ai_success and fallback_success: print("\nšŸŽ‰ All tests passed! AI Integration is working correctly.") return 0 else: print("\nāš ļø Some tests failed. Please check the AI configuration.") return 1 if __name__ == "__main__": exit_code = asyncio.run(main()) sys.exit(exit_code)