Files
igny8/backend/test_generate_content_simple.py
IGNY8 VPS (Salman) 94a8aee0e2 ai fixes
2025-11-26 19:14:30 +00:00

130 lines
3.7 KiB
Python

#!/usr/bin/env python3
"""
Simple test to check generate_content function execution
Run this to see exact error messages
"""
import os
import sys
import django
import logging
import json
# Setup Django
sys.path.insert(0, '/data/app/igny8/backend')
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'igny8_core.settings')
django.setup()
# Setup logging to see all messages
logging.basicConfig(
level=logging.DEBUG,
format='%(asctime)s [%(levelname)s] %(name)s: %(message)s'
)
from igny8_core.auth.models import Account
from igny8_core.modules.writer.models import Tasks
from igny8_core.ai.registry import get_function_instance
from igny8_core.ai.engine import AIEngine
print("\n" + "="*80)
print("SIMPLE GENERATE_CONTENT TEST")
print("="*80 + "\n")
# Get first account and task
try:
account = Account.objects.first()
print(f"✓ Account: {account.id} - {account.email}")
except Exception as e:
print(f"✗ Failed to get account: {e}")
sys.exit(1)
try:
task = Tasks.objects.filter(account=account).first()
if not task:
print("✗ No tasks found")
sys.exit(1)
print(f"✓ Task: {task.id} - {task.title or 'Untitled'}")
print(f" Status: {task.status}")
print(f" Cluster: {task.cluster.name if task.cluster else 'None'}")
print(f" Taxonomy: {task.taxonomy_term.name if task.taxonomy_term else 'None'}")
except Exception as e:
print(f"✗ Failed to get task: {e}")
sys.exit(1)
# Get function
try:
fn = get_function_instance('generate_content')
print(f"✓ Function loaded: {fn.get_name()}")
except Exception as e:
print(f"✗ Failed to load function: {e}")
import traceback
traceback.print_exc()
sys.exit(1)
# Test validation
print("\nTesting validation...")
try:
payload = {'ids': [task.id]}
result = fn.validate(payload, account)
if result['valid']:
print(f"✓ Validation passed")
else:
print(f"✗ Validation failed: {result.get('error')}")
sys.exit(1)
except Exception as e:
print(f"✗ Validation error: {e}")
import traceback
traceback.print_exc()
sys.exit(1)
# Test prepare
print("\nTesting prepare...")
try:
data = fn.prepare(payload, account)
print(f"✓ Prepare succeeded: {len(data) if isinstance(data, list) else 1} task(s)")
except Exception as e:
print(f"✗ Prepare error: {e}")
import traceback
traceback.print_exc()
sys.exit(1)
# Test build_prompt
print("\nTesting build_prompt...")
try:
prompt = fn.build_prompt(data, account)
print(f"✓ Prompt built: {len(prompt)} characters")
print(f"\nPrompt preview (first 500 chars):")
print("-" * 80)
print(prompt[:500])
print("-" * 80)
except Exception as e:
print(f"✗ Build prompt error: {e}")
import traceback
traceback.print_exc()
sys.exit(1)
# Test model config
print("\nTesting model config...")
try:
from igny8_core.ai.settings import get_model_config
model_config = get_model_config('generate_content', account=account)
print(f"✓ Model config loaded:")
print(f" Model: {model_config.get('model')}")
print(f" Max tokens: {model_config.get('max_tokens')}")
print(f" Temperature: {model_config.get('temperature')}")
except Exception as e:
print(f"✗ Model config error: {e}")
import traceback
traceback.print_exc()
sys.exit(1)
print("\n" + "="*80)
print("All tests passed! The function structure is correct.")
print("If content generation still fails, the issue is likely:")
print("1. API key is invalid or missing")
print("2. OpenAI API error (rate limit, quota, etc.)")
print("3. Prompt is too long or has invalid format")
print("4. Celery worker is not running or has errors")
print("\nCheck Celery worker logs with:")
print(" journalctl -u celery-worker -f")
print("="*80 + "\n")