Skip to content

Latest commit

 

History

History
765 lines (541 loc) · 27.3 KB

File metadata and controls

765 lines (541 loc) · 27.3 KB

| ⚡ Q&A للمعرفة الوثائقية الضخمة | 📈 التصور التفاعلي للتعلم |
| 🧠 تعزيز المعرفة | 🔬 البحث العميق وتوليد الأفكار |


[2026.1.1] سنة جديدة سعيدة! انضم إلى مجتمع Discord، أو مجتمع WeChat، أو Discussions — ساهم في تشكيل مستقبل DeepTutor! 💬

[2025.12.30] زر موقعنا الرسمي لمزيد من التفاصيل!

[2025.12.29] DeepTutor متاح الآن! ✨


الميزات الرئيسية لـ DeepTutor

📚 Q&A للمعرفة الوثائقية الضخمة

قاعدة المعرفة الذكية: ارفع الكتب المدرسية وأوراق البحث والكتيبات التقنية والوثائق الخاصة بالمجال. أنشئ مستودع معرفة شامل مدعوم بالذكاء الاصطناعي للوصول الفوري.
حل المشاكل متعدد الوكلاء: بنية استدلال ثنائية الحلقة مع RAG والبحث على الويب والبحث في الأوراق وتنفيذ الكود—تقديم حلول خطوة بخطوة مع اقتباسات دقيقة.

🎨 التصور التفاعلي للتعلم

تبسيط المعرفة والتفسيرات: حول المفاهيم المعقدة والمعرفة والخوارزميات إلى مساعدات بصرية سهلة الفهم وتفاصيل مفصلة خطوة بخطوة وعروض تفاعلية جذابة.
Q&A مخصص: محادثات واعية بالسياق تتكيف مع تقدمك في التعلم، مع صفحات تفاعلية وتتبع المعرفة القائم على الجلسات.

🎯 تعزيز المعرفة مع مولد مشاكل الممارسة

إنشاء التمارين الذكية: أنشئ اختبارات مستهدفة ومشاكل ممارسة وتقييمات مخصصة مصممة لمستوى معرفتك الحالي وأهداف التعلم المحددة.
محاكاة الامتحان الأصيلة: ارفع امتحانات مرجعية لإنشاء أسئلة ممارسة تطابق تماماً النمط والتنسيق والصعوبة الأصلية—مما يمنحك تحضيراً واقعياً للاختبار الفعلي.

🔍 البحث العميق وتوليد الأفكار

البحث الشامل ومراجعة الأدبيات: قم باستكشاف مواضيع متعمق مع التحليل المنهجي. حدد الأنماط واربط المفاهيم ذات الصلة عبر التخصصات واجمع نتائج البحث الموجودة.
اكتشاف الأفكار الجديدة: أنشئ مواد تعليمية منظمة واكتشف فجوات المعرفة. حدد اتجاهات بحثية جديدة واعدة من خلال التوليف الذكي للمعرفة عبر المجالات.


All-in-One Tutoring System

📚 Q&A للمعرفة الوثائقية الضخمة


حل المشاكل متعدد الوكلاء مع اقتباسات دقيقة

🎨 التصور التفاعلي للتعلم


تفسيرات بصرية خطوة بخطوة مع Q&A مخصص

🎯 تعزيز المعرفة

أسئلة مخصصة
توليد أسئلة ممارسة متحققة تلقائياً

أسئلة محاكاة
استنساخ نمط الامتحان للممارسة الأصيلة

🔍 البحث العميق وتوليد الأفكار

البحث العميق
توسيع المعرفة من الكتاب المدرسي مع RAG والويب والبحث في الأوراق

توليد الأفكار الآلي
العصف الذهني المنهجي وتوليف المفاهيم مع سير عمل التصفية المزدوج

توليد الأفكار التفاعلي
Co-Writer مدعوم بـ RAG والبحث على الويب مع توليد البودكاست

🏗️ نظام المعرفة الشامل

قاعدة المعرفة الشخصية
أنشئ ونظم مستودع معرفتك الخاص

دفتر الملاحظات الشخصي
ذاكرتك السياقية لجلسات التعلم

🌙 استخدم DeepTutor في الوضع الداكن!

معمارية النظام

DeepTutor Full-Stack Workflow

📋 قائمة المهام

تابعنا للحصول على تحديثات مستقبلية!

  • دعم خدمات LLM المحلية (مثل ollama)
  • إعادة هيكلة وحدة RAG (انظر Discussions)
  • الترميز العميق من توليد الأفكار
  • التفاعل المخصص مع دفتر الملاحظات

🚀 البدء السريع

الخطوة 1: الإعداد المسبق

① استنساخ المستودع

git clone https://github.com/HKUDS/DeepTutor.git
cd DeepTutor

② تكوين متغيرات البيئة

cp .env.example .env
# عدّل ملف .env بمفاتيح API الخاصة بك
📋 مرجع متغيرات البيئة
المتغير مطلوب الوصف
LLM_MODEL نعم اسم النموذج (مثال: gpt-4o)
LLM_API_VERSION لا إصدار API لـ Azure OpenAI (مثال: 2024-02-15-preview)
LLM_API_KEY نعم مفتاح API الخاص بك لـ LLM
LLM_HOST نعم عنوان URL لنقطة نهاية API
EMBEDDING_MODEL نعم اسم نموذج التضمين
EMBEDDING_API_VERSION لا إصدار API لـ Azure OpenAI Embeddings
EMBEDDING_API_KEY نعم مفتاح API للتضمين
EMBEDDING_HOST نعم نقطة نهاية API للتضمين
BACKEND_PORT لا منفذ الخلفية (افتراضي: 8001)
FRONTEND_PORT لا منفذ الواجهة الأمامية (افتراضي: 3782)
NEXT_PUBLIC_API_BASE لا عنوان API للواجهة الأمامية — اضبطه للوصول عن بُعد/LAN (مثال: http://192.168.1.100:8001)
TTS_* لا إعدادات تحويل النص إلى كلام
SEARCH_PROVIDER لا مزود البحث (الخيارات: perplexity, tavily, serper, jina, exa, baidu، الافتراضي: perplexity)
SEARCH_API_KEY لا مفتاح API موحد للبحث

💡 وصول عن بُعد: إذا كنت تصل من جهاز آخر (مثلاً: 192.168.31.66:3782)، أضف إلى .env:

NEXT_PUBLIC_API_BASE=http://192.168.31.66:8001

③ تكوين المنافذ و LLM (اختياري)

  • المنافذ: اضبط في .envBACKEND_PORT / FRONTEND_PORT (الافتراضي: 8001/3782)
  • LLM: عدّل config/agents.yamltemperature / max_tokens لكل وحدة
  • راجع وثائق التكوين للتفاصيل

④ تجربة قواعد المعرفة التجريبية (اختياري)

📚 العروض التوضيحية المتاحة
  1. التنزيل من Google Drive
  2. استخراج إلى دليل data/

قواعد المعرفة التجريبية تستخدم text-embedding-3-large مع dimensions = 3072

⑤ إنشاء قاعدة معرفة خاصة بك (بعد البدء)

  1. اذهب إلى http://localhost:3782/knowledge
  2. انقر على "New Knowledge Base" → أدخل الاسم → حمّل ملفات PDF/TXT/MD
  3. راقب التقدم في الطرفية

الخطوة 2: اختر طريقة التثبيت

🐳 نشر Docker

موصى به — لا حاجة لإعداد Python/Node.js


المتطلبات الأساسية: Docker و Docker Compose

🚀 الخيار أ: صورة مسبقة البناء (الأسرع)
# يعمل على جميع الأنظمة: Docker يحدد المعمارية تلقائياً
docker run -d --name deeptutor \
  -p 8001:8001 -p 3782:3782 \
  --env-file .env \
  -v $(pwd)/data:/app/data \
  -v $(pwd)/config:/app/config:ro \
  ghcr.io/hkuds/deeptutor:latest

# Windows PowerShell: استخدم ${PWD} بدلاً من $(pwd)

أو استخدام ملف .env:

docker run -d --name deeptutor \
  -p 8001:8001 -p 3782:3782 \
  --env-file .env \
  -v $(pwd)/data:/app/data \
  -v $(pwd)/config:/app/config:ro \
  ghcr.io/hkuds/deeptutor:latest
🔨 الخيار ب: البناء من الكود المصدري
# بناء والبدء (~5-10 دقيقة في المرة الأولى)
docker compose up --build -d

# عرض السجلات
docker compose logs -f

الأوامر:

docker compose up -d      # البدء
docker compose logs -f    # السجلات
docker compose down       # الإيقاف
docker compose up --build # إعادة البناء
docker pull ghcr.io/hkuds/deeptutor:latest  # تحديث الصورة

وضع التطوير: أضف -f docker-compose.dev.yml

💻 التثبيت اليدوي

للتطوير أو البيئات غير Docker


المتطلبات الأساسية: Python 3.10+, Node.js 18+

إعداد البيئة:

# استخدام conda (موصى به)
conda create -n deeptutor python=3.10
conda activate deeptutor

# أو استخدام venv
python -m venv venv
source venv/bin/activate

تثبيت المتطلبات:

# التثبيت بنقرة واحدة (موصى به)
python scripts/install_all.py
# أو: bash scripts/install_all.sh

# أو التثبيت اليدوي
pip install -r requirements.txt
npm install --prefix web

البدء:

# بدء واجهة الويب
python scripts/start_web.py

# أو CLI فقط
python scripts/start.py

# الإيقاف: Ctrl+C

عناوين URL للوصول

الخدمة URL الوصف
الواجهة الأمامية http://localhost:3782 واجهة الويب الرئيسية
وثائق API http://localhost:8001/docs وثائق API التفاعلية

📄 الترخيص

data/
├── knowledge_bases/              # تخزين قاعدة المعرفة
└── user/                         # بيانات نشاط المستخدم
    ├── solve/                    # نتائج حل المشاكل والعناصر
    ├── question/                 # الأسئلة المولدة
    ├── research/                 # التقارير البحثية والذاكرة المؤقتة
    ├── co-writer/                # وثائق Co-Writer وملفات صوتية
    ├── notebook/                 # سجلات دفتر الملاحظات والبيانات الوصفية
    ├── guide/                    # جلسات التعليم الموجه
    ├── logs/                     # السجلات النظامية
    └── run_code_workspace/       # مساحة عمل تنفيذ الرمز

يتم حفظ جميع النتائج تلقائياً عند إجراء أي نشاط. يتم إنشاء المجلدات تلقائياً إذا كانت غير موجودة.


📖 توثيق الوحدات

Configuration Data Directory API Backend Core Utilities
Knowledge Base Tools Web Frontend Solve Module
Question Module Research Module Co-Writer Module Guide Module
Idea Generation Module

❓ الأسئلة الشائعة

فشل البداية في الخلفية؟

قائمة التحقق

  • تأكد من إصدار Python >= 3.10
  • تأكد من تثبيت جميع المتطلبات: pip install -r requirements.txt
  • تحقق مما إذا كان المنفذ 8001 قيد الاستخدام
  • تحقق من تكوين ملف .env

الحلول

  • تغيير المنفذ: قم بتعيين BACKEND_PORT=9001 في ملف .env
  • التحقق من السجلات: مراجعة رسائل خطأ الطرفية
المنفذ محتل بعد Ctrl+C؟

المشكلة

بعد الضغط على Ctrl+C أثناء تشغيل المهمة (مثل البحث العميق)، يظهر خطأ "المنفذ قيد الاستخدام بالفعل".

السبب

Ctrl+C يُنهي أحياناً فقط عملية الواجهة الأمامية بينما يستمر الخادم الخلفي في العمل في الخلفية.

الحل

# macOS/Linux: البحث عن قتل العملية
lsof -i :8001
kill -9 <PID>

# Windows: البحث عن قتل العملية
netstat -ano | findstr :8001
taskkill /PID <PID> /F

ثم أعد تشغيل الخدمة باستخدام python scripts/start_web.py.

خطأ "npm: command not found"؟

المشكلة

يُظهر تشغيل scripts/start_web.py npm: command not found أو رمز الخروج 127.

قائمة التحقق

  • تحقق مما إذا تم تثبيت npm: npm --version
  • تحقق مما إذا تم تثبيت Node.js: node --version
  • تأكد من تفعيل بيئة conda (إذا كنت تستخدم conda)

الحلول

# الخيار A: استخدام Conda (موصى به)
conda install -c conda-forge nodejs

# الخيار B: استخدام المثبت الرسمي
# تنزيل من https://nodejs.org/

# الخيار C: استخدام nvm
nvm install 18
nvm use 18

التحقق من التثبيت

node --version  # يجب أن يعرض v18.x.x أو أعلى
npm --version   # يجب أن يعرض رقم الإصدار
لا يمكن للواجهة الأمامية الاتصال بالخادم الخلفي؟

قائمة التحقق

  • تأكد من أن الخادم الخلفي يعمل (زر http://localhost:8001/docs)
  • تحقق من وحدة تحكم المتصفح للحصول على رسائل الخطأ

الحل

إنشاء .env.local في دليل web:

NEXT_PUBLIC_API_BASE=http://localhost:8001
فشل اتصال WebSocket؟

قائمة التحقق

  • تأكد من أن الخادم الخلفي يعمل
  • تحقق من إعدادات جدار الحماية
  • تأكد من صحة عنوان URL للـ WebSocket

الحل

  • تحقق من سجلات الخادم الخلفي
  • تأكد من تنسيق URL: ws://localhost:8001/api/v1/...
أين يتم تخزين مخرجات الوحدة؟
الوحدة مسار الإخراج
حل data/user/solve/solve_YYYYMMDD_HHMMSS/
السؤال data/user/question/question_YYYYMMDD_HHMMSS/
البحث data/user/research/reports/
Co-Writer data/user/co-writer/
دفتر الملاحظات data/user/notebook/
الدليل data/user/guide/session_{session_id}.json
السجلات data/user/logs/
كيفية إضافة قاعدة معرفة جديدة؟

واجهة الويب

  1. زر http://localhost:{frontend_port}/knowledge
  2. انقر على "New Knowledge Base"
  3. أدخل اسم قاعدة المعرفة
  4. حمّل وثائق PDF/TXT/MD
  5. سيقوم النظام بمعالجة الوثائق في الخلفية

واجهة الأوامر

python -m src.knowledge.start_kb init <kb_name> --docs <pdf_path>
كيفية إضافة الوثائق بشكل تدريجي إلى KB موجود؟

واجهة الأوامر (موصى به)

python -m src.knowledge.add_documents <kb_name> --docs <new_document.pdf>

الفوائد

  • معالجة الوثائق الجديدة فقط، توفير الوقت وتكلفة API
  • الدمج التلقائي مع الرسم البياني للمعرفة الموجود
  • الحفاظ على جميع البيانات الموجودة
خطأ uvloop.Loop عند استخراج العناصر المرقمة؟

المشكلة

عند تهيئة قاعدة معرفة، قد تواجه هذا الخطأ:

ValueError: Can't patch loop of type <class 'uvloop.Loop'>

يحدث هذا لأن Uvicorn يستخدم حلقة أحداث uvloop افتراضياً، وهي غير متوافقة مع nest_asyncio.

الحل

استخدم إحدى الطرق التالية لاستخراج العناصر المرقمة:

# الخيار 1: استخدام سكريبت shell (موصى به)
./scripts/extract_numbered_items.sh <kb_name>

# الخيار 2: أمر Python مباشر
python src/knowledge/extract_numbered_items.py --kb <kb_name> --base-dir ./data/knowledge_bases

سيؤدي هذا إلى استخراج العناصر المرقمة (التعريفات والنظريات والمعادلات وما إلى ذلك) من قاعدة معرفتك دون إعادة تهيئتها.



📄 الترخيص

هذا المشروع مرخص تحت AGPL-3.0.

⭐ سجل النجوم

🤝 المساهمة

نرحب بالمساهمات من المجتمع! لضمان جودة وتناسق الرمز، يرجى اتباع الإرشادات أدناه.

إعداد التطوير

إعداد Pre-commit Hooks

يستخدم هذا المشروع pre-commit hooks لتنسيق الرمز والتحقق من المشاكل تلقائياً قبل الالتزام.

الخطوة 1: تثبيت pre-commit

# استخدام pip
pip install pre-commit

# أو استخدام conda
conda install -c conda-forge pre-commit

الخطوة 2: تثبيت خطافات Git

cd DeepTutor
pre-commit install

الخطوة 3: (اختياري) قم بتشغيل الفحوصات على جميع الملفات

pre-commit run --all-files

في كل مرة تقوم بتشغيل git commit، ستقوم خطافات pre-commit تلقائياً بـ:

  • تنسيق رمز Python باستخدام Ruff
  • تنسيق رمز الواجهة الأمامية باستخدام Prettier
  • التحقق من أخطاء بناء الجملة
  • التحقق من صحة ملفات YAML/JSON
  • كشف المشاكل الأمنية المحتملة

أدوات جودة الرمز

الأداة الغرض التكوين
Ruff فحص وتنسيق رمز Python pyproject.toml
Prettier تنسيق رمز الواجهة الأمامية web/.prettierrc.json
detect-secrets فحص الأمان .secrets.baseline

ملاحظة: يستخدم المشروع Ruff format بدلاً من Black لتجنب تضارب التنسيق.

الأوامر الشائعة

# الالتزام العادي (تعمل الخطافات تلقائياً)
git commit -m "رسالة التزامك"

# التحقق اليدوي من جميع الملفات
pre-commit run --all-files

# تحديث الخطافات إلى أحدث إصدارات
pre-commit autoupdate

# تخطي الخطافات (غير موصى به، فقط للحالات الطارئة)
git commit --no-verify -m "إصلاح الطوارئ"

إرشادات المساهمة

  1. Fork و Clone: Fork المستودع واستنسخه
  2. إنشاء فرع: إنشاء فرع ميزة من main
  3. تثبيت Pre-commit: اتبع خطوات الإعداد أعلاه
  4. إجراء التغييرات: اكتب الرمز باتباع نمط المشروع
  5. الاختبار: تأكد من أن تغييراتك تعمل بشكل صحيح
  6. الالتزام: ستقوم خطافات pre-commit بتنسيق الرمز تلقائياً
  7. الدفع و PR: ادفع إلى fork الخاص بك وأنشئ طلب سحب

إبلاغ عن المشاكل

  • استخدم GitHub Issues للإبلاغ عن الأخطاء أو اقتراح الميزات
  • توفير معلومات مفصلة حول المشكلة
  • إذا كانت خطأ، فقم بتضمين الخطوات لإعادة إنتاجها

❤️ نشكر جميع المساهمين على مساهماتهم القيمة.

🔗 المشاريع ذات الصلة

⚡ LightRAG 🎨 RAG-Anything 💻 DeepCode 🔬 AI-Researcher
RAG بسيط وسريع RAG متعدد الأنماط مساعد رمز ذكاء اصطناعي أتمتة البحث

مختبر ذكاء البيانات @ جامعة هونج كونج

⭐ Star us · 🐛 Report a bug · 💬 Discussions


✨ شكراً لزيارتك DeepTutor!

Views