Mentallico-API-v2 / config.py
Ziad9022's picture
Update config.py
3bdc103 verified
Raw
History Blame Contribute Delete
3.55 kB
"""
============================================================
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,
}