البدء السريع · الوحدات الأساسية · الأسئلة الشائعة
🇬🇧 English · 🇨🇳 中文 · 🇯🇵 日本語 · 🇪🇸 Español · 🇫🇷 Français · 🇷🇺 Русский · 🇮🇳 हिन्दी · 🇵🇹 Português
| ⚡ Q&A للمعرفة الوثائقية الضخمة | 📈 التصور التفاعلي للتعلم |
| 🧠 تعزيز المعرفة | 🔬 البحث العميق وتوليد الأفكار |
[2026.1.1] سنة جديدة سعيدة! انضم إلى مجتمع Discord، أو مجتمع WeChat، أو Discussions — ساهم في تشكيل مستقبل DeepTutor! 💬
[2025.12.30] زر موقعنا الرسمي لمزيد من التفاصيل!
[2025.12.29] DeepTutor متاح الآن! ✨
• قاعدة المعرفة الذكية: ارفع الكتب المدرسية وأوراق البحث والكتيبات التقنية والوثائق الخاصة بالمجال. أنشئ مستودع معرفة شامل مدعوم بالذكاء الاصطناعي للوصول الفوري.
• حل المشاكل متعدد الوكلاء: بنية استدلال ثنائية الحلقة مع RAG والبحث على الويب والبحث في الأوراق وتنفيذ الكود—تقديم حلول خطوة بخطوة مع اقتباسات دقيقة.
• تبسيط المعرفة والتفسيرات: حول المفاهيم المعقدة والمعرفة والخوارزميات إلى مساعدات بصرية سهلة الفهم وتفاصيل مفصلة خطوة بخطوة وعروض تفاعلية جذابة.
• Q&A مخصص: محادثات واعية بالسياق تتكيف مع تقدمك في التعلم، مع صفحات تفاعلية وتتبع المعرفة القائم على الجلسات.
• إنشاء التمارين الذكية: أنشئ اختبارات مستهدفة ومشاكل ممارسة وتقييمات مخصصة مصممة لمستوى معرفتك الحالي وأهداف التعلم المحددة.
• محاكاة الامتحان الأصيلة: ارفع امتحانات مرجعية لإنشاء أسئلة ممارسة تطابق تماماً النمط والتنسيق والصعوبة الأصلية—مما يمنحك تحضيراً واقعياً للاختبار الفعلي.
• البحث الشامل ومراجعة الأدبيات: قم باستكشاف مواضيع متعمق مع التحليل المنهجي. حدد الأنماط واربط المفاهيم ذات الصلة عبر التخصصات واجمع نتائج البحث الموجودة.
• اكتشاف الأفكار الجديدة: أنشئ مواد تعليمية منظمة واكتشف فجوات المعرفة. حدد اتجاهات بحثية جديدة واعدة من خلال التوليف الذكي للمعرفة عبر المجالات.
حل المشاكل متعدد الوكلاء مع اقتباسات دقيقة |
تفسيرات بصرية خطوة بخطوة مع Q&A مخصص |
أسئلة مخصصة |
أسئلة محاكاة |
قاعدة المعرفة الشخصية |
دفتر الملاحظات الشخصي |
🌙 استخدم DeepTutor في الوضع الداكن!
تابعنا للحصول على تحديثات مستقبلية!
- دعم خدمات LLM المحلية (مثل ollama)
- إعادة هيكلة وحدة RAG (انظر Discussions)
- الترميز العميق من توليد الأفكار
- التفاعل المخصص مع دفتر الملاحظات
① استنساخ المستودع
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 (اختياري)
- المنافذ: اضبط في
.env→BACKEND_PORT/FRONTEND_PORT(الافتراضي: 8001/3782) - LLM: عدّل
config/agents.yaml→temperature/max_tokensلكل وحدة - راجع وثائق التكوين للتفاصيل
④ تجربة قواعد المعرفة التجريبية (اختياري)
📚 العروض التوضيحية المتاحة
- أوراق البحث — 5 أوراق من معملنا (AI-Researcher, LightRAG, إلخ)
- كتاب علوم البيانات — 8 فصول، 296 صفحة (رابط الكتاب)
- التنزيل من Google Drive
- استخراج إلى دليل
data/
قواعد المعرفة التجريبية تستخدم
text-embedding-3-largeمعdimensions = 3072
⑤ إنشاء قاعدة معرفة خاصة بك (بعد البدء)
- اذهب إلى http://localhost:3782/knowledge
- انقر على "New Knowledge Base" → أدخل الاسم → حمّل ملفات PDF/TXT/MD
- راقب التقدم في الطرفية
|
موصى به — لا حاجة لإعداد 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)أو استخدام ملف 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 # تحديث الصورة
|
للتطوير أو البيئات غير 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 | الوصف |
|---|---|---|
| الواجهة الأمامية | 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/ |
كيفية إضافة قاعدة معرفة جديدة؟
واجهة الويب
- زر http://localhost:{frontend_port}/knowledge
- انقر على "New Knowledge Base"
- أدخل اسم قاعدة المعرفة
- حمّل وثائق PDF/TXT/MD
- سيقوم النظام بمعالجة الوثائق في الخلفية
واجهة الأوامر
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 لتنسيق الرمز والتحقق من المشاكل تلقائياً قبل الالتزام.
الخطوة 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 "إصلاح الطوارئ"- Fork و Clone: Fork المستودع واستنسخه
- إنشاء فرع: إنشاء فرع ميزة من
main - تثبيت Pre-commit: اتبع خطوات الإعداد أعلاه
- إجراء التغييرات: اكتب الرمز باتباع نمط المشروع
- الاختبار: تأكد من أن تغييراتك تعمل بشكل صحيح
- الالتزام: ستقوم خطافات pre-commit بتنسيق الرمز تلقائياً
- الدفع و PR: ادفع إلى fork الخاص بك وأنشئ طلب سحب
- استخدم GitHub Issues للإبلاغ عن الأخطاء أو اقتراح الميزات
- توفير معلومات مفصلة حول المشكلة
- إذا كانت خطأ، فقم بتضمين الخطوات لإعادة إنتاجها
❤️ نشكر جميع المساهمين على مساهماتهم القيمة.
| ⚡ LightRAG | 🎨 RAG-Anything | 💻 DeepCode | 🔬 AI-Researcher |
|---|---|---|---|
| RAG بسيط وسريع | RAG متعدد الأنماط | مساعد رمز ذكاء اصطناعي | أتمتة البحث |
مختبر ذكاء البيانات @ جامعة هونج كونج
⭐ Star us · 🐛 Report a bug · 💬 Discussions
✨ شكراً لزيارتك DeepTutor!
