| from crewai import Agent, Task |
| import os |
| import json |
| from modules import llm_open_4m |
| from schemas import CourseContent |
|
|
| |
| |
| |
| def curriculum_designer(): |
| model = llm_open_4m() |
| return Agent( |
| role="مصمم مناهج تعليمية", |
| goal=( |
| |
| "أنت مصمم مناهج ذو خبرة عالية. مهمتك تحويل بيانات المقرر إلى خريطة تعلمية مفصلة تشمل وحدات، موضوعات، ونقاط فرعية (subtopics)" |
| "يمكن شرحها مباشرة من قبل مدرب للمتدربين. رتب المحتوى من المفاهيم الأساسية إلى التطبيق العملي، مع مراعاة وضوح كل نقطة وغرضها التعليمي للفئة المستهدفة." |
| "المُدخلات:" |
| "- course_name: {course_name}" |
| "- course_audience: {course_audience}" |
| "- course_description: {course_description}" |
| "- learning_outcomes: {learning_outcomes}" |
| "- units: {units}" |
| "مرجع: استخدم المثال التالي كنموذج لإنتاج محتوى مفصل:" |
| "{example_reference}" |
| "لكل وحدة في units:" |
| " - لكل موضوع أصلي، أنشئ 2-5 نقاط فرعية (subtopics) مفصلة." |
| " - لكل subtopic:" |
| " - title: عبارة قصيرة." |
| " - description: 1-2 جمل تشرح الفكرة والغرض التعليمي." |
| " - رتب النقاط من الأساسيات للتطبيق العملي." |
| " - ركز على جعل المحتوى مناسبًا للفئة المستهدفة المحددة في course_audience." |
| "تحويل بيانات المقرر إلى بنية مفصلة تشمل وحدات وموضوعات ونقاط فرعية، " |
| "مناسبة لأي فئة مستهدفة، مع الالتزام بنمط المثال المرجعي." |
| ), |
| backstory=( |
| "أنت مصمم مناهج ذو خبرة عالية. مهمتك هي ان تتعلم من المثال المرجعي لإنشاء محتوى عملي و تحليل بيانات المقرر وإنتاج خريطة تعلمية تفصيلية تشمل وحدات،" |
| "موضوعات، ونقاط فرعية (subtopics) يمكن شرحها مباشرة من قِبل مدرب لمتدربين،" |
| "مع ترتيبها من الأساسيات إلى التطبيق العملي، مع مراعاة {course_audience}الفئة المستهدفة." |
| |
| |
| ), |
| verbose=True, |
| memory=True, |
| llm=model, |
| allow_delegation=False, |
| ) |
|
|
| |
| |
| |
| def generate_course_structure_task(curriculum_designer): |
| return Task( |
| description=( |
| "تحويل بيانات المقرر (course_name, course_audience, units) إلى JSON مفصل يشمل expanded_units. " |
| "لكل موضوع، أنشئ 2-5 subtopics، كل subtopic يحتوي على title و description قصيرة تشرح الفكرة والغرض التعليمي. " |
| |
| "تأكد أن كل subtopic يمكن شرحه مباشرة من قبل مدرب للمتدربين. " |
| "رتب النقاط من المفاهيم الأساسية إلى التطبيق العملي، وأضف أمثلة عملية إذا أمكن." |
| ), |
| |
| |
| |
| |
| expected_output=( |
| "CourseContent JSON: fields: course_name, course_audience, expanded_units" |
| ), |
| agent=curriculum_designer, |
| output_json=CourseContent, |
| async_execution=False, |
| |
| ) |
|
|