Skip to content

Latest commit

 

History

History
687 lines (479 loc) · 25.7 KB

File metadata and controls

687 lines (479 loc) · 25.7 KB

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


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

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

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

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

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

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

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

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

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


All-in-One Tutoring System

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


Q&A الوثائق وحل المشاكل خطوة بخطوة

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


التعلم التفاعلي بالذكاء الاصطناعي مع التفسيرات البصرية للمعرفة

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

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

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

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

البحث العميق
البحث على الويب والأوراق مع مراجعة الأدبيات

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

توليد الأفكار التفاعلي
توليد الأفكار المدعوم بـ RAG مع رؤى متعددة المصادر

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

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

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

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

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

DeepTutor Full-Stack Workflow

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

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

  • التعلم القائم على المشاريع
  • الترميز العميق من توليد الأفكار
  • ذاكرة مخصصة
  • خيار بديل مع RAG الساذج

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

الخطوة 1: استنساخ وإنشاء بيئة افتراضية

# استنساخ المستودع
git clone https://github.com/HKUDS/DeepTutor.git
cd DeepTutor

# إنشاء بيئة افتراضية (اختر طريقة)

# الخيار A: استخدام conda (موصى به)
conda create -n aitutor python=3.10
conda activate aitutor

# الخيار B: استخدام venv
python -m venv venv
# في Windows:
venv\Scripts\activate
# في macOS/Linux:
source venv/bin/activate

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

قم بتشغيل سكريبت التثبيت بنقرة واحدة لتثبيت جميع المتطلبات تلقائياً:

# موصى به: استخدام سكريبت bash
bash scripts/install_all.sh

# بديل: استخدام سكريبت Python
python scripts/install_all.py

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

الخطوة 3: تكوين متغيرات البيئة

إنشاء ملف .env في دليل المشروع الجذر بناءً على .env.example:

# انسخ من نموذج .env.example (إن وجد)
cp .env.example .env

# ثم عدّل ملف .env بمفاتيح API الخاصة بك:

الخطوة 4: تكوين المنافذ (اختياري)

بشكل افتراضي، يستخدم التطبيق:

  • Backend (FastAPI): 8001
  • Frontend (Next.js): 3782

يمكنك تعديل هذه المنافذ في config/main.yaml بتحرير قيم server.backend_port و server.frontend_port.

الخطوة 5: استخدم عروضنا التوضيحية (اختياري)

لتجربة سريعة لنظامنا، نوفر قاعدتي معرفة معالجتين مسبقاً بالإضافة إلى مجموعة من الأسئلة الصعبة وأمثلة الاستخدام.

مجموعة أوراق البحث — 5 أوراق (20-50 صفحة لكل منها)

مجموعة منسقة من 5 أوراق بحث في مجالات RAG و Agent من معملنا. يمثل هذا العرض التوضيحي سيناريوهات ذات تغطية معرفة واسعة لأغراض البحث.

الأوراق المستخدمة: AI-Researcher | AutoAgent | RAG-Anything | LightRAG | VideoRAG

كتاب علوم البيانات — 8 فصول، 296 صفحة

كتاب علوم بيانات شامل وصعب. يمثل هذا العرض التوضيحي سيناريوهات ذات عمق معرفة عميق لأغراض التعليم.

رابط الكتاب: Deep Representation Learning Book


التنزيل والإعداد:

  1. قم بتنزيل حزمة العرض التوضيحي من: Google Drive
  2. استخرج الملفات المضغوطة مباشرة في دليل data/
  3. ستكون قواعد المعرفة متاحة تلقائياً في النظام بعد بدء المشروع

ملاحظة: نستخدم text-embedding-3-large كنموذج تضمين عند تهيئة قواعد معرفتنا، مع dimensions = 3072. تأكد من أن أبعاد نموذج التضمين الخاص بك تبلغ أيضاً 3072.

الخطوة 6: ابدأ التطبيق

# تأكد من تفعيل البيئة الافتراضية
conda activate aitutor  # أو: source venv/bin/activate

# ابدأ واجهة الويب (frontend + backend)
python scripts/start_web.py

# أو ابدأ واجهة CLI فقط
python scripts/start.py

# لإيقاف الخدمة، اضغط على Ctrl+C

الخطوة 7: إنشاء قاعدة معرفة الخاصة بك

بعد بدء التطبيق، يمكنك إنشاء قاعدة معرفة الخاصة بك من خلال واجهة الويب، تحت أي نمط.

  1. الوصول إلى صفحة قاعدة المعرفة: زر http://localhost:{frontend_port}/knowledge
  2. إنشاء قاعدة معرفة جديدة: انقر على زر "New Knowledge Base"
  3. سمي قاعدة معرفتك: أدخل اسماً فريداً لقاعدة معرفتك
  4. تحميل الملفات: قم بتحميل ملف واحد أو أكثر
  5. انتظر المعالجة: سيقوم النظام بمعالجة ملفاتك تلقائياً في الخلفية
    • راقب تقدم الإنشاء في الطرفية حيث يعمل start_web.py
    • ستكون قاعدة المعرفة متاحة بمجرد اكتمال المعالجة

نصائح: قد تستغرق الملفات الكبيرة عدة دقائق في المعالجة. يمكنك تحميل ملفات متعددة في المرة الواحدة لمعالجة دفعية.

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

الخدمة URL الوصف
Frontend http://localhost:{frontend_port} واجهة الويب الرئيسية
وثائق API http://localhost:{backend_port}/docs وثائق API التفاعلية
الصحة http://localhost:{backend_port}/api/v1/knowledge/health فحص صحة النظام

📄 الترخيص

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 قيد الاستخدام (قابل للتكوين في config/main.yaml)
  • تحقق من تكوين ملف .env

الحلول

  • تغيير المنفذ: تحرير config/main.yaml server.backend_port
  • التحقق من السجلات: مراجعة رسائل خطأ الطرفية
المنفذ محتل بعد 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