unsafe_bullying

parent 7f3a7de0
......@@ -48,59 +48,112 @@ GENERAL_CHAT_CONTEXTS: Dict[StudentNationality, str] = {
UNSAFE_CONTEXTS: Dict[StudentNationality, Dict[str, str]] = {
StudentNationality.EGYPTIAN: {
"unsafe_religion": """
الموضوع ده مش مناسب نتكلم فيه هنا. أي حاجة دينيّة الأحسن تسأل فيها بابا أو ماما أو حد كبير بتثق فيه.
تعالى نرجع للدرس—تحب نكمل في الموضوع اللي بنتعلمه سوا؟
لو الطفل سأل عن الدين أو المواضيع الدينية:
- ممنوع تجاوب بمعلومة دينية.
- رد بطريقة ودودة: قوله إن المواضيع دي يسأل فيها بابا أو ماما أو شخص كبير يثق فيه.
- بعد كده حاول ترجع المحادثة لموضوع علمي مفيد.
""",
"unsafe_personal": """
مينفعش تقول أسرارك أو تفاصيلك الشخصية هنا، دي حاجات تحتفظ بيها لنفسك أو تقولها لحد كبير زي بابا أو ماما.
طب إيه رأيك نكمّل في الدرس ونشوف النقطة اللي كنا شغالين عليها؟
لو الطفل حاول يشارك أسرار أو تفاصيل شخصية (زي عنوان، رقم تليفون...):
- ممنوع تاخد منه بيانات.
- قول له إن المعلومات دي خاصة ويشاركها مع بابا أو ماما بس.
- بعد كده انقل الحديث لموضوع علمي.
""",
"unsafe_harmful": """
الكلام ده خطر ومش مناسب. لو حسيت بحاجة زي دي، لازم تكلم بابا أو ماما أو حد كبير تثق فيه.
تحب نغيّر الموضوع ونرجع للدرس بتاعنا؟
لو الطفل قال حاجة عن العنف، الأذى للنفس، أو المخدرات:
- لازم تكون حازم وتوضح إن ده خطر وغلط.
- انصحه يتكلم مع بابا أو ماما فورًا.
- بعد التحذير، حاول تربط الموضوع بحاجة في العلوم (زي التعاون أو السلامة).
""",
"unsafe_sensitive_emotion": """
أنا حاسس إنك زعلان، وده طبيعي. الأحسن تحكي لماما أو بابا أو حد كبير قريب منك.
تحب نرجع للدرس ونشغل نفسنا باللي كنا بنتعلمه؟
لو الطفل بيعبّر عن زعل أو حزن شديد أو فقدان:
- طمّنه وخليه يحس إن مشاعره طبيعية.
- انصحه يتكلم مع أهله أو شخص كبير يثق فيه.
- بعد كده، حاول تلهيه بحاجة علمية بسيطة ومبهجة.
""",
"unsafe_sensitive_bio": """
الموضوع ده انت هتدرسه بعدين، بس دلوقتي أنسب إنك تسأل بابا وماما لو عندك فضول، وهم بس اللي ممكن يشرحوهولك ويردوا على سؤالك.
تحب نكمّل سوا في الدرس اللي فاتحينه دلوقتي؟
لو الطفل سأل عن الحمل أو الجنس أو إزاي الأطفال بيتولدوا:
- ممنوع تجاوب على تفاصيل بيولوجية حساسة.
- قوله ان الموضوع ده انت هتدرسه بعدين، بس دلوقتي أنسب إنك تسأل بابا وماما لو عندك فضول، وهم بس اللي ممكن يشرحوهولك ويردوا على سؤالك.
- رجّع الحوار لجزء مبسط من العلوم عن جسم الإنسان يناسب سنه.
""",
"unsafe_bullying": """
لو الطفل بيتعرض للتنمّر:
- طمّنه وقوله إن اللي يتعرض للتنمّر مش ذنبه.
- انصحه يحكي لبابا أو ماما أو مدرس كبير.
لو الطفل هو اللي بيتنمّر أو بيتريق:
- رد بشكل قصير وحازم إن ده غلط ومش مقبول.
- وضّح إن اللي بيتنمّر محدش بيحبه ولا بيصاحبه.
- قلّه إن الناس بتحب اللي يكون محترم وجدع.
ممنوع الرغي الطويل أو الشرح العلمي.
خليك بالعامية المصريّة، جُمَل قصيرة وواضحة.
بعد كده حوّل الحوار بلطف لموضوع تعليمي أو درس.
""",
},
StudentNationality.SAUDI: {
"unsafe_religion": """
هذا موضوع ما نقدر نتكلم فيه هنا. أي شي يخص الدين الأفضل تسأل فيه أبوك أو أمك أو شخص كبير تثق فيه.
خلنا نرجع للدرس—تحب نكمل في الموضوع اللي ندرسه الحين؟
إذا الطالب سأل عن الدين أو المواضيع الدينية:
- لا تجاوب بأي معلومة دينية.
- قل له بلطف إن المواضيع هذي يسأل فيها أهله أو شخص كبير يثق فيه.
- بعدين رجّع الحديث لموضوع علمي مفيد.
""",
"unsafe_personal": """
ما ينفع تشارك أسرارك أو معلوماتك الشخصية هنا، هذي لازم تقولها بس لأهلك أو شخص كبير تثق فيه.
وش رايك نرجع للدرس ونكمل اللي كنا نشتغل عليه؟
إذا الطالب حاول يشارك معلومات شخصية (عنوان، رقم جوال...):
- لا تقبل أي بيانات منه.
- وضّح إن هذي معلومات خاصة، يقولها لأهله فقط.
- بعدين انقل الموضوع للعلوم.
""",
"unsafe_harmful": """
الكلام ذا خطر وما يصلح. إذا حسيت بشي زي كذا لازم تحكي مع أبوك أو أمك أو شخص كبير تثق فيه.
خلنا نغيّر الموضوع ونرجع للدرس؟
إذا الطالب تكلم عن عنف، أذى، أو مخدرات:
- لازم تكون واضح إن ذا شي خطر وغلط.
- انصحه يكلم أهله فورًا.
- بعد التوضيح، حاول تربطها بعلوم عن السلامة أو التعاون.
""",
"unsafe_sensitive_emotion": """
واضح إنك حزين، وهذا شعور طبيعي. الأفضل تحكي مع أهلك أو شخص كبير قريب منك.
تحب نرجع للدرس ونركز فيه؟
إذا الطالب عبّر عن حزن أو فقدان:
- طمّنه وخليه يحس إن مشاعره طبيعية.
- انصحه يكلم أهله أو شخص كبير يثق فيه.
- بعدين خفف الجو بموضوع علمي ممتع.
""",
"unsafe_sensitive_bio": """
هذا موضوع تدرسه بعدين، لكن الآن الأفضل تسأل فيه أهلك، هم اللي يقدرون يشرحونه لك ويجاوبونك.
تحب نرجع للدرس اللي احنا فيه؟
إذا الطالب سأل عن الحمل أو الجنس أو كيف يجي الأطفال:
- لا تجاوب بأي تفاصيل حساسة.
- قوله هذا موضوع تدرسه بعدين، لكن الآن الأفضل تسأل فيه أهلك، هم اللي يقدرون يشرحونه لك ويجاوبونك.
- رجّع الحديث لعلوم تناسب عمره عن جسم الإنسان.
""",
}
"unsafe_bullying": """
إذا الطالب يتعرض للتنمّر:
- طمّنه وقله إن اللي يتعرض للتنمّر ما هو غلطان.
- انصحه يتكلم مع أبوه أو أمه أو معلم كبير.
إذا الطالب هو اللي يتنمّر أو يتريق:
- رد بكلام قصير وحازم إن ذا غلط وما ينفع.
- وضّح إن المتنمّر محد يحبّه ولا يبي يصاحبه.
- قلّه إن الناس تحب اللي يحترم غيره ويكون طيب.
لا تدخل في شروحات طويلة أو أمثلة علمية.
خل ردك باللهجة السعوديّة، بسيط وواضح.
بعدها رجّع الكلام للدرس أو موضوع علمي مفيد.
""",
}
}
class QueryHandler:
"""Handles different types of queries and their classification"""
......@@ -155,7 +208,8 @@ class QueryHandler:
"unsafe_personal": ["عنوان", "ساكن", "موبايل", "رقم", "تليفون", "شارع", "عمارة", "شقة"],
"unsafe_harmful": ["مخدرات", "سجاير", "انتحار", "اضرب", "أقتل", "أذى", "دم", "خطر"],
"unsafe_sensitive_emotion": ["زعلان", "حزين", "موت", "اتوفى", "وَفاة", "بعيط", "عايط", "اكتئاب"],
"unsafe_sensitive_bio": ["جنس", "جنسي", "حمل", "دورة شهرية", "أمومة", "ولادة"]
"unsafe_sensitive_bio": ["جنس", "جنسي", "حمل", "دورة شهرية", "أمومة", "ولادة"],
"unsafe_bullying": ["اتنمر", "بتنمر", "بتريق", "بسخر", "بشتم", "بغلط", "بضرب", "بعاير", "شكله وحش"]
}
q_lower = query.lower()
......@@ -179,6 +233,8 @@ class QueryHandler:
- "الأطفال بييجوا للدنيا إزاي؟"
- "يعني إيه حمل؟"
10. "unsafe_bullying" - أي كلام عن التنمر (سواء كان ضحية أو متنمر) او تريقه على شكل حد او تشبيهه بحاجة تزعل
{conversation_context}
السؤال الحالي: "{query}"
......@@ -205,12 +261,13 @@ class QueryHandler:
temperature=0,
max_tokens=20
)
classification: str = response.choices[0].message.content.strip().lower()
classification: str = response.choices[0].message.content.strip().lower().strip('"').strip("'")
valid_classes = {
"general_chat", "overview", "navigation", "specific_content",
"unsafe_religion", "unsafe_personal", "unsafe_harmful",
"unsafe_sensitive_emotion", "unsafe_sensitive_bio"
"unsafe_sensitive_emotion", "unsafe_sensitive_bio", "unsafe_bullying"
}
if classification in valid_classes:
......@@ -430,3 +487,23 @@ class QueryHandler:
logger.info(f"Handled unsafe_sensitive_bio query for nationality: {nationality_enum}")
return response_template.strip()
def handle_unsafe_bullying_query(self, student_info: Dict[str, Any]) -> str:
"""Handle queries about bullying (whether victim or bully)"""
nationality_str: str = student_info.get('nationality', 'egyptian')
nationality_mapping = {
'egyptian': StudentNationality.EGYPTIAN,
'saudi': StudentNationality.SAUDI
}
nationality_enum = nationality_mapping.get(nationality_str.lower().strip(), StudentNationality.EGYPTIAN)
unsafe_responses = UNSAFE_CONTEXTS.get(nationality_enum, {})
response_template = unsafe_responses.get("unsafe_bullying")
if not response_template:
# fallback
response_template = "لو في موضوع فيه تنمّر، لازم تتكلم مع بابا أو ماما أو شخص كبير تثق فيه. التنمّر غلط، ولازم نعامل غيرنا باحترام."
logger.info(f"Handled unsafe_bullying query for nationality: {nationality_enum}")
return response_template.strip()
......@@ -120,6 +120,8 @@ class ResponseGenerator:
unsafe_context = self.query_handler.handle_unsafe_personal_query(student_info)
elif query_type == "unsafe_harmful":
unsafe_context = self.query_handler.handle_unsafe_harmful_query(student_info)
elif query_type == "unsafe_bullying":
unsafe_context = self.query_handler.handle_unsafe_bullying_query(student_info)
else:
unsafe_context = "هذا الموضوع غير مناسب للمناقشة هنا."
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment