119 lines
3.8 KiB
Python
119 lines
3.8 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Debug script to test AI response parsing in Step 8.
|
|
"""
|
|
|
|
import asyncio
|
|
import logging
|
|
import sys
|
|
import os
|
|
|
|
# Add the project root to the Python path
|
|
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
|
|
|
|
from services.calendar_generation_datasource_framework.prompt_chaining.steps.phase3.step8_daily_content_planning.daily_schedule_generator import DailyScheduleGenerator
|
|
|
|
# Configure logging
|
|
logging.basicConfig(
|
|
level=logging.INFO,
|
|
format='%(asctime)s | %(levelname)-8s | %(name)s:%(funcName)s:%(lineno)d - %(message)s',
|
|
datefmt='%H:%M:%S'
|
|
)
|
|
logger = logging.getLogger(__name__)
|
|
|
|
async def debug_ai_response_parsing():
|
|
"""Debug AI response parsing in Step 8."""
|
|
|
|
logger.info("🔍 Starting AI Response Parsing Debug")
|
|
|
|
# Create test data
|
|
test_posting_day = {
|
|
"day_number": 1,
|
|
"date": "2025-09-01",
|
|
"day_name": "monday",
|
|
"posting_times": ["09:00", "12:00"],
|
|
"content_count": 2,
|
|
"week_number": 1
|
|
}
|
|
|
|
test_weekly_theme = {
|
|
"title": "Week 1 Theme: AI Implementation",
|
|
"description": "Focus on AI tools and implementation",
|
|
"content_angles": ["AI tools", "Implementation guide", "Best practices"]
|
|
}
|
|
|
|
test_platform_strategies = {
|
|
"LinkedIn": {"approach": "professional"},
|
|
"Blog": {"approach": "educational"}
|
|
}
|
|
|
|
# Test different AI response formats
|
|
test_responses = [
|
|
# Format 1: List of recommendations (correct format)
|
|
[
|
|
{
|
|
"type": "Content Creation Opportunity",
|
|
"title": "AI Implementation Guide",
|
|
"description": "A comprehensive guide to AI implementation"
|
|
},
|
|
{
|
|
"type": "Content Creation Opportunity",
|
|
"title": "AI Tools Overview",
|
|
"description": "Overview of AI tools for business"
|
|
}
|
|
],
|
|
|
|
# Format 2: Dictionary with recommendations key
|
|
{
|
|
"recommendations": [
|
|
{
|
|
"type": "Content Creation Opportunity",
|
|
"title": "AI Implementation Guide",
|
|
"description": "A comprehensive guide to AI implementation"
|
|
},
|
|
{
|
|
"type": "Content Creation Opportunity",
|
|
"title": "AI Tools Overview",
|
|
"description": "Overview of AI tools for business"
|
|
}
|
|
]
|
|
},
|
|
|
|
# Format 3: Float (the problematic case)
|
|
0.95,
|
|
|
|
# Format 4: String
|
|
"AI Implementation Guide",
|
|
|
|
# Format 5: None
|
|
None
|
|
]
|
|
|
|
generator = DailyScheduleGenerator()
|
|
|
|
for i, test_response in enumerate(test_responses):
|
|
logger.info(f"🔍 Testing AI response format {i+1}: {type(test_response)} = {test_response}")
|
|
|
|
try:
|
|
content_pieces = generator._parse_content_response(
|
|
ai_response=test_response,
|
|
posting_day=test_posting_day,
|
|
weekly_theme=test_weekly_theme,
|
|
platform_strategies=test_platform_strategies
|
|
)
|
|
|
|
logger.info(f"✅ Format {i+1} parsed successfully: {len(content_pieces)} content pieces")
|
|
for j, piece in enumerate(content_pieces):
|
|
logger.info(f" Piece {j+1}: {piece.get('title', 'No title')}")
|
|
|
|
except Exception as e:
|
|
logger.error(f"❌ Format {i+1} failed: {str(e)}")
|
|
logger.error(f"📋 Error type: {type(e)}")
|
|
import traceback
|
|
logger.error(f"📋 Traceback: {traceback.format_exc()}")
|
|
|
|
logger.info("🎉 AI Response Parsing Debug completed!")
|
|
|
|
if __name__ == "__main__":
|
|
asyncio.run(debug_ai_response_parsing())
|