Spaces:
Sleeping
Sleeping
| """ | |
| ============================================================ | |
| Mentallico AI v2.0 - Central Configuration | |
| ============================================================ | |
| مركز الإعدادات لكل مكونات النظام | |
| """ | |
| import os | |
| from pathlib import Path | |
| from dotenv import load_dotenv | |
| load_dotenv() | |
| # ============= Paths ============= | |
| BASE_DIR = Path(__file__).parent.resolve() | |
| DATA_DIR = BASE_DIR / "data" | |
| MODELS_DIR = BASE_DIR / "saved_models" | |
| CHROMA_DB_PATH = str(BASE_DIR / "chroma_db") | |
| PDF_DOCS_DIR = str(BASE_DIR / "medical_docs") | |
| MODELS_DIR.mkdir(exist_ok=True) | |
| DATA_DIR.mkdir(exist_ok=True) | |
| Path(PDF_DOCS_DIR).mkdir(exist_ok=True) | |
| # ============= Classification Models ============= | |
| # أصبح لدينا 4 نماذج تعمل معاً (Ensemble) | |
| CLASSIFICATION_MODELS = { | |
| "primary": { | |
| "name": "mental/mental-bert-base-uncased", | |
| "fallback": "distilbert-base-uncased", | |
| "weight": 0.35, # تم تعديل الأوزان لتقسيمها على 4 نماذج | |
| "description": "BERT مدرب خصيصاً على نصوص الصحة النفسية" | |
| }, | |
| "secondary": { | |
| "name": "distilroberta-base", | |
| "fallback": "distilbert-base-uncased", | |
| "weight": 0.25, | |
| "description": "RoBERTa - قوي في فهم السياق" | |
| }, | |
| "tertiary": { | |
| "name": "dsuram/distilbert-mentalhealth-classifier", | |
| "fallback": None, # Zero-shot/Pipeline | |
| "weight": 0.25, | |
| "description": "نموذج جاهز للصحة النفسية - يدعم التنبؤات الأساسية" | |
| }, | |
| "emotion": { | |
| "name": "j-hartmann/emotion-english-distilroberta-base", | |
| "fallback": None, | |
| "weight": 0.15, | |
| "description": "تحليل المشاعر" | |
| } | |
| } | |
| # الفئات المرضية الأساسية | |
| LABELS = ['Normal', 'Depression', 'Suicide', 'Anxiety/Stress', 'Bipolar', 'PTSD'] | |
| # ============= Training Config ============= | |
| TRAIN_CONFIG = { | |
| 'max_len': 128, | |
| 'batch_size': 32, | |
| 'epochs': 5, | |
| 'lr': 2e-5, | |
| 'weight_decay': 0.01, | |
| 'warmup_ratio': 0.1, | |
| 'use_focal_loss': True, | |
| 'focal_alpha': 0.25, | |
| 'focal_gamma': 2.0, | |
| 'bipolar_weight': 2.0, | |
| 'bipolar_target': 1500, | |
| 'val_size': 0.2, | |
| 'test_size': 0.2, | |
| 'random_seed': 42, | |
| 'early_stopping_patience': 3, | |
| 'dropout': 0.3, | |
| } | |
| # ============= Diagnosis Logic ============= | |
| DIAGNOSIS_CONFIG = { | |
| 'min_messages_before_diagnosis': 3, | |
| 'min_total_words': 60, | |
| 'confidence_threshold': 0.30, | |
| 'consistency_window': 5, | |
| 'consistency_threshold': 0.66, | |
| 'high_risk_immediate': ['Suicide'], | |
| 'max_history_messages': 50, | |
| } | |
| # ============= RAG Config ============= | |
| RAG_CONFIG = { | |
| 'embedding_model': 'all-MiniLM-L6-v2', | |
| 'llm_model': 'llama-3.3-70b-versatile', # تم التغيير إلى Gemini (يفضل pro للتشخيص الطبي) | |
| 'temperature': 0.3, | |
| 'chunk_size': 2500, | |
| 'chunk_overlap': 500, | |
| 'retrieval_k': 12, | |
| 'max_tokens': 1024, | |
| } | |
| # ============= STT Config ============= | |
| STT_CONFIG = { | |
| 'model': 'whisper-large-v3', | |
| 'language': None, | |
| 'fallback_to_local': True, | |
| 'local_model_size': 'base', | |
| } | |
| # ============= API Keys ============= | |
| GEMINI_API_KEY = os.getenv("GEMINI_API_KEY", "") | |
| GROQ_API_KEY = os.getenv("GROQ_API_KEY", "") # أبقيناه في حال احتجته للـ STT | |
| # ============= Severity Levels ============= | |
| SEVERITY_LEVELS = { | |
| 'Normal': 0, | |
| 'Anxiety/Stress': 1, | |
| 'Depression': 2, | |
| 'PTSD': 2, | |
| 'Bipolar': 3, | |
| 'Suicide': 4, | |
| } |