⚕️ دستیار بالینی پروتکل تشخیص دوگانه (RAG)
اجرای یککلیکی Colab: دریافت ۱۰۰ مقاله بینالمللی + ۱۰۰ مقاله وابسته به ایران + راهنماها از Hugging Face، آپلود PDF/کتاب مجاز، بازسازی ایندکس، آزمون خودکار سلامت RAG و ثبت W&B.
سایکوز / اسکیزوفرنی + اختلال مصرف مواد + BPD ± ADHD مبتنی بر شواهد علمی NICE · APA · WFSBP
یک سیستم پرسشوپاسخ مبتنی بر بازیابی (RAG) با هوش مصنوعی که از روی پروتکل درمان تشخیص دوگانه، مقالات علمی، سابقه بیمار و بازخورد کاربران پاسخ میسازد.
✨ امکانات
- 💬 رابط چت فارسی + 🔌 REST API قابل صدا زدن (Gradio Client یا HTTP)
- 🧠 مدل اوپنسورس سبک (پیشفرض: Qwen2.5-0.5B-Instruct روی CPU رایگان) — قابل تعویض به Llama یا هر مدل دیگر
- 📚 RAG چندمنبعی: پروتکل + مقالات + سابقه بیمار + بازخورد
- 🔍 بازیابی معنایی با امبدینگ چندزبانه (شامل فارسی)
- 🪙 اتصال به W&B (wandb) برای لاگ کوئریها، منابع و تأخیر + اسکریپت آموزش
- 🛡️ حالت افتگرایانه: اگر مدل مولد بارگذاری نشد، از متن مرجع استخراج میکند (همیشه کار میکند)
- 📝 جمعآوری بازخورد کاربران برای آموزش آینده
- 📈 پایش روزانه/هفتگی خطر با امتیاز شفاف، سطح اقدام و API مستقل
/risk - 📰 رصد هفتگی PubMed با GitHub Actions و ذخیره مقالات جدید برای بازبینی و ورود به RAG
سامانه فقط تغییر شواهد و سطح نیاز به بازبینی را هشدار میدهد؛ تغییر خودکار دارو/درمان ممنوع است و تأیید پزشک لازم است.
🚀 اجرا
pip install -r requirements.txt
# ساخت ایندکس برداری از پایگاه دانش
python -m scripts.build_index
# اجرای اپ
python app.py # http://localhost:7860
روی هاشینگفیس اسپیس بهصورت خودکار بالا میآید.
🧩 پیکربندی (متغیرهای محیطی)
| متغیر | پیشفرض | توضیح |
|---|---|---|
EMBED_MODEL |
paraphrase-multilingual-MiniLM-L12-v2 |
مدل امبدینگ |
GEN_MODEL |
Qwen/Qwen2.5-0.5B-Instruct |
مدل مولد (برای لاما: meta-llama/Llama-3.2-1B-Instruct و غیره) |
USE_GENERATOR |
1 |
0 = فقط بازیابی/استخراج |
TOP_K |
5 |
تعداد قطعههای بازیابیشده |
WANDB_API_KEY |
— | در صورت تنظیم، لاگگیری فعال میشود |
WANDB_PROJECT |
dual-diagnosis-rag |
نام پروژهی W&B |
WANDB_ENTITY |
elasa2next-sosa- |
موجودیت W&B |
📂 افزودن منبع جدید
# افزودن یک مقاله و بازسازی ایندکس
python -m scripts.ingest --kind articles --file paper.md
# افزودن متن مستقیم
python -m scripts.ingest --kind patient_history --name p001.md --text "..."
فقط کافی است فایلها را در پوشهی مربوطه بگذارید:
data/articles/— مقالات علمیdata/patient_history/— سابقه بیمارdata/feedback/— بازخورد کاربران (خودکار از رابط جمع میشود)
سپس python -m scripts.build_index را اجرا کنید.
🎓 آموزش/Fine-tune (با W&B)
python -m scripts.train --model Qwen/Qwen2.5-0.5B-Instruct --epochs 3
دادهی آموزشی در data/instruction_pairs.jsonl. این اسکریپت از LoRA (peft) استفاده میکند و به GPU نیاز دارد (روی CPU بسیار کند است).
🗂️ ساختار
.
├── app.py # اپ Gradio (رابط + API)
├── config.py # تنظیمات
├── requirements.txt
├── rag/ # موتور RAG
│ ├── data.py # بارگذاری و قطعهبندی
│ ├── embeddings.py # امبدینگ چندزبانه
│ ├── store.py # ذخیره/بازیابی برداری
│ ├── retriever.py # بازیابی معنایی
│ ├── generator.py # مدل مولد + حالت استخراجی
│ └── pipeline.py # هماهنگی + لاگ W&B
├── data/
│ ├── protocol.md # پایگاه دانش اصلی
│ ├── instruction_pairs.jsonl # دادهی آموزشی
│ ├── articles/ patient_history/ feedback/
├── scripts/
│ ├── build_index.py # ساخت ایندکس
│ ├── ingest.py # افزودن سند
│ └── train.py # fine-tune با LoRA + W&B
🧪 دموی زنده و تست RAG نقشمحور
- Cloudflare UI: https://dual-diagnosis-clinical-hub.elasa2next.workers.dev
- API:
POST /api/chatبا بدنه{"role":"patient|family|doctor|admin","question":"..."} - در رابط، از بخش دستیار علمی نقش مخاطب را انتخاب کنید.
مخزن Hugging Face صفحه میزبانی کد/مدل است؛ رابط عمومی فعال روی Cloudflare میزبانی میشود.
📊 پایش W&B
داشبورد اجرای RAG، تأخیر و چرخههای بهروزرسانی داده: https://wandb.ai/elasa2next-sosa-/dual-diagnosis-rag
⚠️ سلب مسئولیت
این ابزار صرفاً آموزشی است و جایگزین مشاوره پزشک نیست. تصمیم نهایی درمان همیشه با پزشک معالج است.