Alwrity calendar generation framework - step 1-3 completed with real database integration
This commit is contained in:
118
backend/debug_step8_ai_response.py
Normal file
118
backend/debug_step8_ai_response.py
Normal file
@@ -0,0 +1,118 @@
|
||||
#!/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())
|
||||
Reference in New Issue
Block a user