CP_Assessment_engine/config.py
2026-02-10 12:59:40 +05:30

99 lines
3.1 KiB
Python

"""
Configuration v2.0 - Zero Risk Production Settings
"""
import os
from pathlib import Path
# Load .env file if present
try:
from dotenv import load_dotenv
env_path = Path(__file__).resolve().parent / ".env"
# print(f"🔍 Looking for .env at: {env_path}")
load_dotenv(dotenv_path=env_path)
except ImportError:
pass # dotenv not installed, use system env
# Base Directory
BASE_DIR = Path(__file__).resolve().parent
# Data Paths
DATA_DIR = BASE_DIR / "data"
OUTPUT_DIR = BASE_DIR / "output"
# Ensure directories exist
DATA_DIR.mkdir(parents=True, exist_ok=True)
OUTPUT_DIR.mkdir(parents=True, exist_ok=True)
# API Configuration
ANTHROPIC_API_KEY = os.getenv("ANTHROPIC_API_KEY")
# Model Settings
LLM_MODEL = "claude-3-haiku-20240307" # Stable, cost-effective
LLM_TEMPERATURE = 0.5 # Balance between creativity and consistency
LLM_MAX_TOKENS = 4000
# Batch Processing
BATCH_SIZE = 50 # Students per batch
QUESTIONS_PER_PROMPT = 15 # Optimized for reliability (avoiding LLM refusals)
LLM_DELAY = 0.5 # Optimized for Turbo Production (Phase 9)
MAX_WORKERS = 5 # Thread pool size for concurrent simulation
# Dry Run Settings (set to None for full run)
# DRY_RUN: 1 adolescent + 1 adult across all domains
DRY_RUN_STUDENTS = 2 # Set to None for full run
# Domain Configuration
DOMAINS = [
'Personality',
'Grit',
'Emotional Intelligence',
'Vocational Interest',
'Learning Strategies',
]
# Age Groups
AGE_GROUPS = {
'adolescent': '14-17',
'adult': '18-23',
}
# Cognition Test Names
COGNITION_TESTS = [
'Cognitive_Flexibility_Test',
'Color_Stroop_Task',
'Problem_Solving_Test_MRO',
'Problem_Solving_Test_MR',
'Problem_Solving_Test_NPS',
'Problem_Solving_Test_SBDM',
'Reasoning_Tasks_AR',
'Reasoning_Tasks_DR',
'Reasoning_Tasks_NR',
'Response_Inhibition_Task',
'Sternberg_Working_Memory_Task',
'Visual_Paired_Associates_Test'
]
# Output File Names for Cognition
COGNITION_FILE_NAMES = {
'Cognitive_Flexibility_Test': 'Cognitive_Flexibility_Test_{age}.xlsx',
'Color_Stroop_Task': 'Color_Stroop_Task_{age}.xlsx',
'Problem_Solving_Test_MRO': 'Problem_Solving_Test_MRO_{age}.xlsx',
'Problem_Solving_Test_MR': 'Problem_Solving_Test_MR_{age}.xlsx',
'Problem_Solving_Test_NPS': 'Problem_Solving_Test_NPS_{age}.xlsx',
'Problem_Solving_Test_SBDM': 'Problem_Solving_Test_SBDM_{age}.xlsx',
'Reasoning_Tasks_AR': 'Reasoning_Tasks_AR_{age}.xlsx',
'Reasoning_Tasks_DR': 'Reasoning_Tasks_DR_{age}.xlsx',
'Reasoning_Tasks_NR': 'Reasoning_Tasks_NR_{age}.xlsx',
'Response_Inhibition_Task': 'Response_Inhibition_Task_{age}.xlsx',
'Sternberg_Working_Memory_Task': 'Sternberg_Working_Memory_Task_{age}.xlsx',
'Visual_Paired_Associates_Test': 'Visual_Paired_Associates_Test_{age}.xlsx'
}
# Output File Names for Survey
OUTPUT_FILE_NAMES = {
'Personality': 'Personality_{age}.xlsx',
'Grit': 'Grit_{age}.xlsx',
'Emotional Intelligence': 'Emotional_Intelligence_{age}.xlsx',
'Vocational Interest': 'Vocational_Interest_{age}.xlsx',
'Learning Strategies': 'Learning_Strategies_{age}.xlsx',
}