️ ملحوظة: التطوير النشط لهذا المشروع معلق في الوقت الحالي، بسبب ضيق الوقت. في غضون ذلك، لا تتردد في تغيير المستودع أو التواصل معه إذا كنت ترغب في الحفاظ على المشروع.
Pruju AI هو مساعد تدريس يسمح للطلاب بالتفاعل مع المواد الدراسية للمعلم. تم تصميم المساعد للإجابة على أي سؤال للطالب، ولكن فقط إذا كان من الممكن العثور على الإجابة في مواد الدورة التدريبية التي يقدمها المعلم (على سبيل المثال، المنهج، والشرائح، ونصوص المحاضرات). يمكن أيضًا توجيه المساعد للإجابة بطرق تتوافق مع الأهداف التربوية للدورة. على سبيل المثال، يمكن أن يُطلب من المساعد عدم الإجابة على أسئلة معينة أو الإجابة بطريقة معينة.
يهدف المشروع إلى جعل إنشاء مساعدي التدريس الافتراضيين أمرًا سهلاً قدر الإمكان. من وجهة نظر تربوية، من الضروري أن تكون قادرًا على التحكم في القاعدة المعرفية للمساعد بالإضافة إلى أنواع الإجابات التي يقدمها المساعد على أسئلة الطالب.
يمكن تكوين التطبيق للعمل مع المواد الخاصة بالمعلم دون أي تعليمات برمجية. أنت بحاجة إلى تعديل بعض الملفات النصية وتشغيل برنامج Python النصي لجعله خاصًا بك. يمكنك أيضًا استخدام الكود كنقطة بداية لإعدادات أكثر تعقيدًا وتخصيصًا. إذا كانت الدورة التدريبية الخاصة بك تستخدم Moodle، فيمكنك الآن استيراد البيانات من الدورة التدريبية الخاصة بك!
يعمل التطبيق مع OpenAI's API وخدمة Azure OpenAI من Microsoft وOllama. تدعم شركة Olma نطاقًا أوسع من النماذج مفتوحة المصدر (على سبيل المثال، Mistral 7B، وLlama 2). تم اختبار ميسترال 7B فقط.
Pruju هي كلمة عامية جامعية فنلندية تشير إلى النشرة الدراسية. وفقًا للقاموس الحضري (الفنلندي)، فإن prujus "يمكن أن تتراوح في الجودة من كتاب جيد [...] إلى كومة من شرائح المحاضرات المبهمة التي لا معنى لها على الإطلاق."
التعليمات مخصصة لنظام التشغيل macOS ولكن يجب أن تعمل مع Linux و(مع تعديلات صغيرة) Windows أيضًا.
استنساخ الريبو وإنشاء بيئة افتراضية للمشروع. تثبيت التبعيات المطلوبة:
pip install -r requirements.txt
textract
. الخطوات التالية يجب أن تساعدك على تجنب أي مشاكل.
pip install --upgrade pip==24.0
six
بعد تثبيت المتطلبات: pip install --upgrade six
يجب عليك إنشاء ملف .env يحتوي على ما يلي على الأقل:
# Specify LLM provider and model
LLM_PROVIDER="openai"
MODEL_NAME="gpt-4"
# Directory for your course data:
CHAT_DATA_FOLDER ="prujuai_resources"
# Total model call quota:
TOTAL_MODEL_QUOTA=5
# Max number of tokens per call
MAX_PROMPT_TOKENS=2000
# Capacity management:
MAX_CONCURRENCY=2
MAX_QUEUE=10
يمكنك حاليًا الاختيار بين "openai" (واجهة برمجة التطبيقات الخاصة بـ OpenAI)، أو "azure" (خدمة Azure OpenAI من Microsoft)، أو "ollama" (Ollama).
إذا اخترت openai، فيجب عليك تحديد مفتاح API:
LLM_PROVIDER="openai"
MODEL_NAME="gpt-4"
OPENAI_API_KEY="your-secret-key-goes-here"
إذا اخترت Azure، فيجب عليك تحديد نقطة نهاية API ومفتاح API:
LLM_PROVIDER="azure"
MODEL_NAME="gpt-4"
OPENAI_API_KEY = "your-secret-key-goes-here"
MODEL_ENDPOINT="https://your-azure-endpoint"
# Optionally, you can define:
AZURE_OPENAI_CUSTOM_BACKEND = "/custom/url/back/end/other/than/chat/completions"
AZURE_OPENAI_CUSTOM_HEADER="Some-Custom-Authentication-Header"
إذا اخترت أولاما، فأنت بحاجة إلى تحديد النموذج الذي سيتم استخدامه.
LLM_PROVIDER="ollama"
MODEL_NAME="mistral"
في حالة Ollama، تحتاج إلى تثبيت Ollama وتشغيل ollama serve <modelname>
لخدمة النموذج إلى 127.0.0.1:11434
. تم اختبار ميسترال 7B فقط حتى الآن. تعمل الوظيفة الأساسية، ولكن لم يتم اختبارها على نطاق واسع.
يجري:
gradio app.py
بمجرد تشغيل التطبيق، سيخبرك بالعنوان الذي يمكنك من خلاله العثور على واجهة chatbot.
للبدء، أنشئ نسخة من دليل prujuai_resources
وأعطه الاسم الذي تريده (على سبيل المثال، mycourse_resources
) ثم قم بتعديل ملف .env حتى يعرف التطبيق مكان البحث عن الملفات (على سبيل المثال CHAT_DATA_FOLDER="mycourse_resources"
). في هذا الدليل الجديد، قم بتعديل الملفات التالية حسب رغبتك:
prompt_template.txt
تعليمات النظام العامة لبرنامج الدردشة الآليةexamples_ui.txt
الأمثلة التي تساعد المستخدم على البدء في طرح أسئلة مفيدةfavicon.ico
هو رمز التطبيقchat_header.md
وصفًا قابلاً للتعديل لتطبيقك والذي يتم عرضه أعلى واجهة الدردشةchat_footer.md
كما هو مذكور أعلاه، ولكن أسفل واجهة الدردشةلقراءة المواد الخاصة بك إلى متجر المتجهات، يجب عليك تشغيل:
python3 read_to_vectorstore.py
سيقرأ البرنامج النصي مواد الدورة التدريبية الخاصة بك من موقع معين ( ./course_material
بشكل افتراضي) ويخزنها في متجر FAISS Vector (افتراضيًا ./course_material_vdb
). بمجرد الانتهاء، انقل ملفات index.faiss
و index.pkl
إلى CHAT_DATA_FOLDER/faiss_index
. إذا كنت تريد المزيد من الخيارات، مثل تشغيل البرنامج النصي في الوضع غير التفاعلي مع الإعدادات الافتراضية المعقولة، فقم بتشغيل البرنامج النصي باستخدام -h:
python3 read_to_vectorstore.py -h
مواد الدورة التدريبية الافتراضية هي من دورة تدريبية خيالية تسمى Primer on Business Analytics with Python ، والتي تم إنتاجها بمساعدة ChatGPT (GPT-4) لأغراض العرض التوضيحي. تشتمل المواد النموذجية ( course_materials
) على شرائح المحاضرات ونصوص المحاضرات ودروس البرمجة النصية بلغة Python.
يرجى التفكير مليًا في البيانات التي (لا تريد) أن يتمكن تطبيقك من الوصول إليها!
يمكنك استيراد المواد من مثيل Moodle. قم بإنشاء ملف باسم .moodle
وقم بتعديله ليحتوي على الأشياء التالية:
COURSE_ID="12345"
WS_TOKEN="your-token"
WS_ENDPOINT="https://your-moodle-instance.edu/webservice/rest/server.php"
WS_STORAGE="moodle_data"
سيؤدي تشغيل البرنامج النصي moodle.py
إلى تنزيل الملفات (من موارد الملفات والمجلدات ). يمكن تضمين المشاركات من منتدى الإعلانات بالعلامة -p
. سيقوم البرنامج النصي افتراضيًا بتضمين المحتويات في مخزن متجه FAISS في دليل محدد في متغير البيئة WS_STORAGE
، متبوعًا بـ " _vdb
" (على سبيل المثال، moode_data_vdb
).
python3 moodle.py
يمكنك بعد ذلك نسخ ملفات index.faiss
و index.pkl
إلى مجلد مواد الدورة التدريبية ( CHAT_DATA_FOLDER/faiss_index
). يتضمن البرنامج النصي أيضًا روابط Moodle للمجموعات النصية التي يستهلكها متجر المتجهات، لذا يُنصح بإضافة شيء مثل هذا إلى موجه النظام: Make sure to include hyperlinks to allow easy access to the materials.
يتيح ذلك للمستخدم التنقل بسهولة لرؤية المحتوى الأصلي على Moodle. تأكد من أن رمز الوصول مرتبط بالأذونات المناسبة في نهاية Moodle.
يمكنك أيضًا استخدام قاعدة بيانات متجهات qdrant، أو تشغيلها محليًا في حاوية أو باستخدام الخدمة المستضافة. يمكنك تحديد التطبيق لاستخدام مجموعة qdrant الخاصة بك عن طريق تعديل .env كما يلي:
VECTOR_STORE="qdrant" # If you use qdrant
VECTOR_STORE_COLLECTION="my_collection" # qdrant collection name
VECTOR_STORE_ENDPOINT="localhost" #"localhost" or hosted service endpoint
VECTOR_STORE_API_KEY="your-secret" # If you use qdrant's hosted service
إذا كنت تستورد مواد الدورة التدريبية الخاصة بك من Moodle باستخدام moodle.py
، فأضف الأسطر أعلاه إلى .moodle
الخاص بك أيضًا. يمكنك التفكير في تشغيل البرنامج النصي لاستيراد Moodle بشكل دوري للحفاظ على تحديث قاعدة معارف برنامج الدردشة الآلية. مرة أخرى، يرجى الانتباه إلى الأذونات الموجودة في نهاية Moodle .
هناك بعض الميزات الجديدة في التطبيق التي لم يتم توثيقها بشكل صحيح بعد. ولا تتأثر الوظائف الموجودة مسبقًا. وتشمل هذه:
المشروع حاليًا في حالة تجريبية، مع وجود مجال كبير للتحسين. بعض الاتجاهات الممكنة لمزيد من التطوير:
قدم إنريكو جليريان نصائح لا تقدر بثمن بشأن العديد من جوانب المشروع. ساهم توماس بفاو في البرمجة وقدم العديد من الأفكار التقنية المهمة على طول الطريق.