10 KiB
AI Functions Deep Audit Report
Clustering, Idea Generation, and Content Generation
Date: 2025-01-XX
Scope: Complete audit of AI functions for clustering, idea generation, and content generation to identify unused code and files safe to remove.
Executive Summary
This audit identifies legacy code, deprecated functions, and unused implementations that are safe to remove from the codebase. The current system uses a unified AI framework through run_ai_task → AIEngine → BaseAIFunction implementations.
1. CURRENT ACTIVE ARCHITECTURE
1.1 Active Flow (What's Actually Used)
Frontend API Call
↓
views.py (auto_cluster/auto_generate_ideas/auto_generate_content)
↓
run_ai_task (ai/tasks.py) - Unified Celery task entrypoint
↓
AIEngine (ai/engine.py) - Orchestrator
↓
BaseAIFunction implementations:
- AutoClusterFunction (ai/functions/auto_cluster.py)
- GenerateIdeasFunction (ai/functions/generate_ideas.py)
- GenerateContentFunction (ai/functions/generate_content.py)
↓
AICore (ai/ai_core.py) - Centralized AI request handler
↓
AIProvider (OpenAI/Runware)
1.2 Active Files (KEEP)
Core Framework
- ✅
backend/igny8_core/ai/tasks.py- Unified Celery task (run_ai_task) - ✅
backend/igny8_core/ai/engine.py- AIEngine orchestrator - ✅
backend/igny8_core/ai/base.py- BaseAIFunction abstract class - ✅
backend/igny8_core/ai/ai_core.py- AICore centralized handler - ✅
backend/igny8_core/ai/registry.py- Function registry - ✅
backend/igny8_core/ai/prompts.py- PromptRegistry - ✅
backend/igny8_core/ai/settings.py- Model configurations - ✅
backend/igny8_core/ai/constants.py- AI constants - ✅
backend/igny8_core/ai/tracker.py- Progress tracking - ✅
backend/igny8_core/ai/validators.py- Validation functions
Function Implementations
- ✅
backend/igny8_core/ai/functions/auto_cluster.py- AutoClusterFunction - ✅
backend/igny8_core/ai/functions/generate_ideas.py- GenerateIdeasFunction - ✅
backend/igny8_core/ai/functions/generate_content.py- GenerateContentFunction - ✅
backend/igny8_core/ai/functions/__init__.py- Exports
API Endpoints
- ✅
backend/igny8_core/modules/planner/views.py- KeywordViewSet.auto_cluster(), ClusterViewSet.auto_generate_ideas() - ✅
backend/igny8_core/modules/writer/views.py- TasksViewSet.auto_generate_content()
2. DEPRECATED / UNUSED CODE (SAFE TO REMOVE)
2.1 Legacy Wrapper Functions (NOT USED)
❌ generate_ideas_core() - SAFE TO REMOVE
- Location:
backend/igny8_core/ai/functions/generate_ideas.py:234 - Status: Legacy wrapper function for backward compatibility
- Usage: ❌ NOT CALLED ANYWHERE (only in commented test code)
- Purpose: Was meant for direct calls without Celery, but all calls now go through
run_ai_task - Action: REMOVE - Function and export from
__init__.py
❌ generate_content_core() - SAFE TO REMOVE
- Location:
backend/igny8_core/ai/functions/generate_content.py:303 - Status: Legacy wrapper function for backward compatibility
- Usage: ❌ NOT CALLED ANYWHERE (only in commented test code)
- Purpose: Was meant for direct calls without Celery, but all calls now go through
run_ai_task - Action: REMOVE - Function and export from
__init__.py
2.2 AIProcessor Deprecated Methods (NOT USED)
❌ AIProcessor.cluster_keywords() - SAFE TO REMOVE
- Location:
backend/igny8_core/utils/ai_processor.py:1049-1282 - Status: ⚠️ DEPRECATED (marked with deprecation warning)
- Usage: ❌ NOT CALLED ANYWHERE
- Lines: ~233 lines of code
- Action: REMOVE entire method
❌ AIProcessor.generate_ideas() - SAFE TO REMOVE
- Location:
backend/igny8_core/utils/ai_processor.py:1284-1363 - Status: Legacy method
- Usage: ❌ NOT CALLED ANYWHERE
- Lines: ~80 lines of code
- Action: REMOVE entire method
❌ AIProcessor.generate_content() - SAFE TO REMOVE
- Location:
backend/igny8_core/utils/ai_processor.py:433-531 - Status: Legacy method
- Usage: ❌ NOT CALLED ANYWHERE (only called internally by
extract_image_prompts, which is also unused) - Lines: ~98 lines of code
- Action: REMOVE entire method
❌ AIProcessor.extract_image_prompts() - SAFE TO REMOVE
- Location:
backend/igny8_core/utils/ai_processor.py:471-580 - Status: Legacy method
- Usage: ❌ NOT CALLED ANYWHERE (new framework uses
GenerateImagesFunctionwhich usesAICore.run_ai_requestdirectly) - Lines: ~110 lines of code
- Action: REMOVE entire method
Note: AIProcessor.generate_image() is STILL USED in integration_views.py for image generation, so keep the class and that method.
2.3 Unused Exports
❌ generate_ideas_core export - SAFE TO REMOVE
- Location:
backend/igny8_core/ai/functions/__init__.py:5,12 - Action: Remove from imports and
__all__
❌ generate_content_core export - SAFE TO REMOVE
- Location:
backend/igny8_core/ai/functions/__init__.py:6,14 - Action: Remove from imports and
__all__
2.4 Test File Cleanup
⚠️ backend/igny8_core/ai/tests/test_run.py
- Status: Contains commented-out code referencing removed functions
- Action: Clean up commented code (lines 16, 63, 75, 126-127)
3. AIProcessor - PARTIAL CLEANUP
3.1 What to KEEP in AIProcessor
✅ KEEP:
AIProcessor.__init__()- InitializationAIProcessor._get_api_key()- API key retrievalAIProcessor._get_model()- Model retrievalAIProcessor._call_openai()- OpenAI API calls (used by generate_image)AIProcessor._extract_json_from_response()- JSON extractionAIProcessor.generate_image()- STILL USED inintegration_views.pyAIProcessor.get_prompt()- May be used by generate_image- Constants imports (MODEL_RATES, etc.) - Used by AICore
3.2 What to REMOVE from AIProcessor
❌ REMOVE:
AIProcessor.cluster_keywords()- ~233 linesAIProcessor.generate_ideas()- ~80 linesAIProcessor.generate_content()- ~98 linesAIProcessor.extract_image_prompts()- ~110 lines- Total: ~521 lines of unused code
4. FILES ALREADY DELETED (Good!)
✅ Already Removed:
backend/igny8_core/modules/planner/tasks.py- ✅ Already deletedbackend/igny8_core/modules/writer/tasks.py- ✅ Already deleted
5. SUMMARY OF REMOVALS
5.1 Functions to Remove
| Function | Location | Lines | Status |
|---|---|---|---|
generate_ideas_core() |
ai/functions/generate_ideas.py:234 |
~100 | ❌ Remove |
generate_content_core() |
ai/functions/generate_content.py:303 |
~85 | ❌ Remove |
AIProcessor.cluster_keywords() |
utils/ai_processor.py:1049 |
~233 | ❌ Remove |
AIProcessor.generate_ideas() |
utils/ai_processor.py:1284 |
~80 | ❌ Remove |
AIProcessor.generate_content() |
utils/ai_processor.py:433 |
~98 | ❌ Remove |
AIProcessor.extract_image_prompts() |
utils/ai_processor.py:471 |
~110 | ❌ Remove |
Total Lines to Remove: ~706 lines
5.2 Exports to Remove
| Export | Location |
|---|---|
generate_ideas_core |
ai/functions/__init__.py:5,12 |
generate_content_core |
ai/functions/__init__.py:6,14 |
5.3 Test Cleanup
| File | Action |
|---|---|
ai/tests/test_run.py |
Remove commented code (lines 16, 63, 75, 126-127) |
6. VERIFICATION CHECKLIST
Before removing, verify:
- ✅ No imports of
generate_ideas_coreorgenerate_content_coreanywhere - ✅ No calls to
AIProcessor.cluster_keywords(),generate_ideas(), orgenerate_content() - ✅ All active code paths use
run_ai_task→AIEngine→BaseAIFunction - ✅
AIProcessor.generate_image()is still used (verify inintegration_views.py) - ✅ Constants from
ai_processor.pyare still imported byAICore(verify)
7. RECOMMENDED REMOVAL ORDER
-
Phase 1: Remove Legacy Wrapper Functions
- Remove
generate_ideas_core()fromgenerate_ideas.py - Remove
generate_content_core()fromgenerate_content.py - Remove exports from
__init__.py
- Remove
-
Phase 2: Remove AIProcessor Deprecated Methods
- Remove
AIProcessor.cluster_keywords() - Remove
AIProcessor.generate_ideas() - Remove
AIProcessor.generate_content() - Remove
AIProcessor.extract_image_prompts()(depends on generate_content, so remove after)
- Remove
-
Phase 3: Cleanup Tests
- Clean up commented code in
test_run.py
- Clean up commented code in
-
Phase 4: Verification
- Run full test suite
- Verify all AI functions still work
- Check for any broken imports
8. IMPACT ANALYSIS
8.1 No Breaking Changes Expected
- ✅ All active code paths use the new framework
- ✅ No external dependencies on removed functions
- ✅ Views only use
run_ai_task(verified)
8.2 Benefits
- 🎯 ~706 lines of dead code removed
- 🎯 Clearer codebase - Only active code remains
- 🎯 Easier maintenance - No confusion about which path to use
- 🎯 Reduced technical debt
9. FILES TO MODIFY
9.1 Files to Edit
-
backend/igny8_core/ai/functions/generate_ideas.py- Remove
generate_ideas_core()function (lines 234-333)
- Remove
-
backend/igny8_core/ai/functions/generate_content.py- Remove
generate_content_core()function (lines 303-386)
- Remove
-
backend/igny8_core/ai/functions/__init__.py- Remove
generate_ideas_coreimport and export - Remove
generate_content_coreimport and export
- Remove
-
backend/igny8_core/utils/ai_processor.py- Remove
cluster_keywords()method (lines 1049-1282) - Remove
generate_ideas()method (lines 1284-1363) - Remove
generate_content()method (lines 433-531) - Remove
extract_image_prompts()method (lines 471-580)
- Remove
-
backend/igny8_core/ai/tests/test_run.py- Remove commented code referencing removed functions
10. CONCLUSION
This audit identifies ~706 lines of unused legacy code that can be safely removed without impacting functionality. All active code paths use the unified AI framework (run_ai_task → AIEngine → BaseAIFunction), making these legacy functions obsolete.
Recommendation: Proceed with removal in phases as outlined above, with thorough testing after each phase.