Files
igny8/docs/AI-ELEMENTS-TABLE.md
2025-11-09 19:07:06 +05:00

18 KiB

AI-Related Elements Across Codebase

Complete table of all AI-related logic, configs, prompts, validations, retries, logging, response parsing, etc.

Type Name / Key File Function / Class Line No Notes
🧠 AI Core Functions
AI Core _auto_cluster_keywords_core backend/igny8_core/modules/planner/tasks.py _auto_cluster_keywords_core() 26 Core clustering logic (legacy, used by old tasks)
AI Core _generate_single_idea_core backend/igny8_core/modules/planner/tasks.py _generate_single_idea_core() 1047 Core idea generation logic (legacy)
AI Core auto_generate_content_task backend/igny8_core/modules/writer/tasks.py auto_generate_content_task() 27 Celery task for content generation (legacy)
AI Core AutoClusterFunction backend/igny8_core/ai/functions/auto_cluster.py AutoClusterFunction class 14 New framework function for clustering
AI Core cluster_keywords backend/igny8_core/utils/ai_processor.py AIProcessor.cluster_keywords() 1080 Legacy clustering method
AI Core generate_ideas backend/igny8_core/utils/ai_processor.py AIProcessor.generate_ideas() 1280 Legacy idea generation method
AI Core generate_content backend/igny8_core/utils/ai_processor.py AIProcessor.generate_content() 446 Legacy content generation method
AI Core generate_image backend/igny8_core/utils/ai_processor.py AIProcessor.generate_image() 656 Image generation (OpenAI DALL-E / Runware)
AI Core generate_image backend/igny8_core/ai/processor.py AIProcessor.generate_image() 61 Framework wrapper for image generation
AI Core run_ai_task backend/igny8_core/ai/tasks.py run_ai_task() 13 Unified Celery entrypoint for all AI functions
AI Core AIEngine.execute backend/igny8_core/ai/engine.py AIEngine.execute() 26 Central orchestrator for all AI functions
🔁 Retry / Model Fallback Logic
Retry _call_openai backend/igny8_core/utils/ai_processor.py AIProcessor._call_openai() 125 Main OpenAI API call method with error handling
Retry _get_api_key backend/igny8_core/utils/ai_processor.py AIProcessor._get_api_key() 73 Gets API key from IntegrationSettings or Django settings (fallback)
Retry _get_model backend/igny8_core/utils/ai_processor.py AIProcessor._get_model() 98 Gets model from IntegrationSettings or Django settings (fallback)
Retry max_retries=3 backend/igny8_core/ai/tasks.py @shared_task(bind=True, max_retries=3) 12 Celery task retry configuration
Retry max_retries=3 backend/igny8_core/modules/writer/tasks.py @shared_task(bind=True, max_retries=3) 26 Content generation task retry configuration
Retry Error handling backend/igny8_core/utils/ai_processor.py _call_openai() 191-305 HTTP error handling, JSON parsing errors, timeout handling
Retry Fallback to Django settings backend/igny8_core/utils/ai_processor.py _get_api_key() 91-95 Falls back to OPENAI_API_KEY or RUNWARE_API_KEY from settings
Retry Fallback to default model backend/igny8_core/utils/ai_processor.py _get_model() 120-123 Falls back to DEFAULT_AI_MODEL from settings (default: 'gpt-4.1')
🧱 Prompt Sources
Prompt clustering backend/igny8_core/modules/system/utils.py get_default_prompt('clustering') 10-30 Hardcoded default clustering prompt template
Prompt ideas backend/igny8_core/modules/system/utils.py get_default_prompt('ideas') 32-55 Hardcoded default ideas generation prompt template
Prompt content_generation backend/igny8_core/modules/system/utils.py get_default_prompt('content_generation') 57-75 Hardcoded default content generation prompt template
Prompt image_prompt_extraction backend/igny8_core/modules/system/utils.py get_default_prompt('image_prompt_extraction') 77-98 Hardcoded default image prompt extraction template
Prompt image_prompt_template backend/igny8_core/modules/system/utils.py get_default_prompt('image_prompt_template') 100 Hardcoded default image prompt template
Prompt negative_prompt backend/igny8_core/modules/system/utils.py get_default_prompt('negative_prompt') 102 Hardcoded default negative prompt
Prompt get_prompt_value backend/igny8_core/modules/system/utils.py get_prompt_value() 108 Retrieves prompt from DB (AIPrompt model) or returns default
Prompt AIPrompt model backend/igny8_core/modules/system/models.py AIPrompt class 13 Database model storing account-specific prompts
Prompt prompt_type backend/igny8_core/modules/system/models.py AIPrompt.prompt_type 25 Choices: clustering, ideas, content_generation, image_prompt_extraction, image_prompt_template, negative_prompt
Prompt build_prompt backend/igny8_core/ai/functions/auto_cluster.py AutoClusterFunction.build_prompt() 117 Builds clustering prompt using get_prompt_value()
Prompt [IGNY8_KEYWORDS] backend/igny8_core/ai/functions/auto_cluster.py build_prompt() 131 Placeholder replaced with keyword list
Prompt [IGNY8_CLUSTERS] backend/igny8_core/modules/system/utils.py get_default_prompt('ideas') 34 Placeholder for ideas prompt
Prompt [IGNY8_IDEA] backend/igny8_core/modules/system/utils.py get_default_prompt('content_generation') 60 Placeholder for content generation prompt
⚠️ Validation / Limits
Validation validate backend/igny8_core/ai/base.py BaseAIFunction.validate() 34 Base validation: checks for 'ids' array, max_items limit
Validation validate backend/igny8_core/ai/functions/auto_cluster.py AutoClusterFunction.validate() 37 Custom validation: checks keywords exist, plan limits
Validation get_max_items backend/igny8_core/ai/functions/auto_cluster.py AutoClusterFunction.get_max_items() 34 Returns 20 (max keywords per cluster operation)
Validation check_credits backend/igny8_core/modules/billing/services.py CreditService.check_credits() 16 Checks if account has enough credits
Validation Daily cluster limit backend/igny8_core/ai/functions/auto_cluster.py validate() 59-71 Checks plan.daily_cluster_limit against clusters created today
Validation Max clusters limit backend/igny8_core/ai/functions/auto_cluster.py validate() 73-79 Checks plan.max_clusters against total clusters
Validation VALID_OPENAI_IMAGE_MODELS backend/igny8_core/utils/ai_processor.py Constant 34 Set: {'dall-e-3', 'dall-e-2'}
Validation VALID_SIZES_BY_MODEL backend/igny8_core/utils/ai_processor.py Constant 41 Dict mapping models to valid sizes
Validation Model validation backend/igny8_core/utils/ai_processor.py generate_image() 704-708 Validates model is in VALID_OPENAI_IMAGE_MODELS
Validation Size validation backend/igny8_core/utils/ai_processor.py generate_image() 719-724 Validates size is valid for selected model
Validation Model rate validation backend/igny8_core/utils/ai_processor.py _get_model() 112 Validates model is in MODEL_RATES before using
🪵 AI Debug Steps
Debug Step addRequestStep backend/igny8_core/ai/tracker.py StepTracker.add_request_step() 21 Adds request phase step (INIT, PREP, SAVE, DONE)
Debug Step addResponseStep backend/igny8_core/ai/tracker.py StepTracker.add_response_step() 45 Adds response phase step (AI_CALL, PARSE)
Debug Step request_steps backend/igny8_core/ai/tracker.py StepTracker.request_steps 17 List of request steps
Debug Step response_steps backend/igny8_core/ai/tracker.py StepTracker.response_steps 18 List of response steps
Debug Step request_steps backend/igny8_core/modules/planner/tasks.py _auto_cluster_keywords_core() 37 Legacy request steps tracking
Debug Step response_steps backend/igny8_core/modules/planner/tasks.py _auto_cluster_keywords_core() 38 Legacy response steps tracking
Debug Step meta['request_steps'] backend/igny8_core/modules/system/integration_views.py task_progress() 936-937 Extracts request_steps from Celery task meta
Debug Step meta['response_steps'] backend/igny8_core/modules/system/integration_views.py task_progress() 938-939 Extracts response_steps from Celery task meta
Debug Step request_steps backend/igny8_core/ai/models.py AITaskLog.request_steps 31 JSONField storing request steps in database
Debug Step response_steps backend/igny8_core/ai/models.py AITaskLog.response_steps 32 JSONField storing response steps in database
Debug Step get_meta() backend/igny8_core/ai/tracker.py StepTracker.get_meta() 69 Returns dict with request_steps and response_steps
Debug Step Step injection backend/igny8_core/ai/engine.py execute() 47, 60, 68, 125, 138, 174 Adds steps at each phase (INIT, PREP, AI_CALL, PARSE, SAVE, DONE)
Debug Step Step counter backend/igny8_core/ai/tracker.py StepTracker.step_counter 19 Auto-increments for sequential step numbers
🧾 Model Config / Selection
Model Config default_model backend/igny8_core/utils/ai_processor.py AIProcessor.__init__() 67 Set from _get_model() or defaults to 'gpt-4.1'
Model Config _get_model backend/igny8_core/utils/ai_processor.py AIProcessor._get_model() 98 Gets model from IntegrationSettings.config['model'] or Django settings
Model Config MODEL_RATES backend/igny8_core/utils/ai_processor.py Constant 19 Dict: {'gpt-4.1': {...}, 'gpt-4o-mini': {...}, 'gpt-4o': {...}}
Model Config IMAGE_MODEL_RATES backend/igny8_core/utils/ai_processor.py Constant 26 Dict: {'dall-e-3': 0.040, 'dall-e-2': 0.020, ...}
Model Config DEFAULT_AI_MODEL backend/igny8_core/utils/ai_processor.py Django setting 121 Default: 'gpt-4.1' if not set
Model Config get_model backend/igny8_core/ai/base.py BaseAIFunction.get_model() 70 Override to specify model (defaults to account's default)
Model Config model parameter backend/igny8_core/ai/processor.py call() 22 Model can be passed to AIProcessor.call()
Model Config json_models backend/igny8_core/ai/processor.py call() 40 List: ['gpt-4o', 'gpt-4o-mini', 'gpt-4-turbo-preview'] (supports JSON mode)
Model Config IntegrationSettings.config['model'] backend/igny8_core/modules/system/models.py IntegrationSettings.config 56 JSONField storing model name per account
Model Config Model selection backend/igny8_core/ai/engine.py execute() 65 Gets model via fn.get_model(self.account)
📦 Request/Response Structuring
Request/Response response_format backend/igny8_core/utils/ai_processor.py _call_openai() 131 Optional dict for JSON mode: {'type': 'json_object'}
Request/Response response_format backend/igny8_core/ai/processor.py call() 25 Optional dict for JSON mode
Request/Response JSON mode auto-enable backend/igny8_core/ai/processor.py call() 41-42 Auto-enables JSON mode for json_models if not specified
Request/Response _extract_json_from_response backend/igny8_core/utils/ai_processor.py AIProcessor._extract_json_from_response() 334 Extracts JSON from response (handles markdown code blocks, multiline)
Request/Response extract_json backend/igny8_core/ai/processor.py AIProcessor.extract_json() 57 Wrapper for _extract_json_from_response()
Request/Response parse_response backend/igny8_core/ai/functions/auto_cluster.py AutoClusterFunction.parse_response() 158 Parses AI response into cluster data structure
Request/Response parse_response backend/igny8_core/ai/base.py BaseAIFunction.parse_response() 75 Abstract method for parsing AI response
Request/Response Request body format backend/igny8_core/utils/ai_processor.py _call_openai() 171-183 Format: {'model': str, 'messages': [...], 'temperature': float, 'max_tokens': int, 'response_format': dict}
Request/Response Response format backend/igny8_core/utils/ai_processor.py _call_openai() 215-329 Returns: {'content': str, 'input_tokens': int, 'output_tokens': int, 'total_tokens': int, 'model': str, 'cost': float, 'error': str, 'api_id': str}
Request/Response JSON parsing fallback backend/igny8_core/ai/functions/auto_cluster.py parse_response() 173-176 Falls back to extract_json() if direct JSON parse fails
📍 Paths / Constants
Path/Constant OPENAI_API_KEY backend/igny8_core/utils/ai_processor.py Django setting 93 Fallback API key from Django settings
Path/Constant RUNWARE_API_KEY backend/igny8_core/utils/ai_processor.py Django setting 95 Fallback API key from Django settings
Path/Constant OpenAI API URL backend/igny8_core/utils/ai_processor.py _call_openai() 163 Hardcoded: 'https://api.openai.com/v1/chat/completions'
Path/Constant OpenAI Images URL backend/igny8_core/utils/ai_processor.py generate_image() 735 Hardcoded: 'https://api.openai.com/v1/images/generations'
Path/Constant Runware API URL backend/igny8_core/utils/ai_processor.py generate_image() 844 Hardcoded: 'https://api.runware.ai/v1'
Path/Constant IntegrationSettings.config['apiKey'] backend/igny8_core/modules/system/models.py IntegrationSettings.config 56 JSONField storing API key per account
Path/Constant Prompt type choices backend/igny8_core/modules/system/models.py AIPrompt.PROMPT_TYPE_CHOICES 16 ['clustering', 'ideas', 'content_generation', 'image_prompt_extraction', 'image_prompt_template', 'negative_prompt']
Path/Constant Integration type choices backend/igny8_core/modules/system/models.py IntegrationSettings.INTEGRATION_TYPE_CHOICES 48 ['openai', 'runware', 'gsc', 'image_generation']
Path/Constant get_function_instance backend/igny8_core/ai/registry.py get_function_instance() - Gets AI function instance from registry
Path/Constant auto_cluster backend/igny8_core/ai/registry.py register_lazy_function() 69 Registered function name for clustering
💰 Cost Tracking
Cost CostTracker backend/igny8_core/ai/tracker.py CostTracker class 193 Tracks API costs and token usage
Cost record backend/igny8_core/ai/tracker.py CostTracker.record() 201 Records cost, tokens, model for an operation
Cost Cost calculation backend/igny8_core/utils/ai_processor.py _call_openai() 277-295 Calculates cost from MODEL_RATES based on input/output tokens
Cost Image cost calculation backend/igny8_core/utils/ai_processor.py generate_image() 790 Calculates cost from IMAGE_MODEL_RATES * n images
Cost Credit logging backend/igny8_core/ai/engine.py execute() 142-171 Logs credit usage to CreditUsageLog after successful save
Cost _calculate_credits_for_clustering backend/igny8_core/ai/engine.py _calculate_credits_for_clustering() 257 Calculates credits used (from plan config or fallback formula)
📊 Progress Tracking
Progress ProgressTracker backend/igny8_core/ai/tracker.py ProgressTracker class 77 Tracks progress updates for AI tasks
Progress update backend/igny8_core/ai/tracker.py ProgressTracker.update() 89 Updates Celery task state with progress
Progress Phase percentages backend/igny8_core/ai/engine.py execute() 30-36 INIT (0-10%), PREP (10-25%), AI_CALL (25-70%), PARSE (70-85%), SAVE (85-98%), DONE (98-100%)
Progress update_ai_progress backend/igny8_core/ai/tracker.py ProgressTracker.update_ai_progress() 184 Callback for AI processor progress updates
🗄️ Database Logging
Database AITaskLog backend/igny8_core/ai/models.py AITaskLog model 8 Unified logging table for all AI tasks
Database _log_to_database backend/igny8_core/ai/engine.py AIEngine._log_to_database() 220 Logs task execution to AITaskLog table
Database Task logging backend/igny8_core/ai/engine.py execute() 178 Called after successful execution to log to database
🔄 Celery Integration
Celery run_ai_task backend/igny8_core/ai/tasks.py run_ai_task() 13 Unified Celery task entrypoint
Celery Task state updates backend/igny8_core/ai/tracker.py ProgressTracker.update() 124-131 Updates Celery task state via task.update_state()
Celery Meta injection backend/igny8_core/modules/system/integration_views.py task_progress() 936-991 Extracts request_steps/response_steps from task meta and returns to frontend
Celery Error state backend/igny8_core/ai/tasks.py run_ai_task() 68-84 Updates task state to FAILURE on error
🔧 Utility Functions
Utility get_default_prompt backend/igny8_core/modules/system/utils.py get_default_prompt() 7 Returns hardcoded default prompt by type
Utility get_prompt_value backend/igny8_core/modules/system/utils.py get_prompt_value() 108 Gets prompt from DB or returns default
Utility check_moderation backend/igny8_core/utils/ai_processor.py AIProcessor.check_moderation() 594 Checks content against OpenAI moderation API
Utility prepare backend/igny8_core/ai/functions/auto_cluster.py AutoClusterFunction.prepare() 85 Loads keywords with relationships
Utility save_output backend/igny8_core/ai/functions/auto_cluster.py AutoClusterFunction.save_output() 205 Saves clusters to database with transaction