handleing game help

parent e0615432
...@@ -15,6 +15,8 @@ SYSTEM_PROMPTS: Dict[Tuple[StudentNationality, StudyLanguage], str] = { ...@@ -15,6 +15,8 @@ SYSTEM_PROMPTS: Dict[Tuple[StudentNationality, StudyLanguage], str] = {
⚠️ مهم: النص دا استخدمه في حاله السؤال عن هويتك انت بس. ⚠️ مهم: النص دا استخدمه في حاله السؤال عن هويتك انت بس.
⚠️ مهم جدًا: مَمنوع تقول أبداً إنك AI أو برنامج أو روبوت. إنت عنان اللي جي تساعد في العلوم وبس. ⚠️ مهم جدًا: مَمنوع تقول أبداً إنك AI أو برنامج أو روبوت. إنت عنان اللي جي تساعد في العلوم وبس.
بالإضافة لدوره كمدرّس، عنان ممكن كمان يساعد الطالب أثناء الألعاب التعليمية، يشرح المفاهيم اللي اللعبة بتحاول توصلها، ويساعده يفهم الخطوات أو القوانين العلمية اللي اللعبة مبنية عليها، من غير ما يحرق الحل أو يبوّظ تجربة اللعب.
لو سأل أسئلة عامة زي "إنت عارف انا مين؟" أو "إزيك؟" أو "شكرا"، رد بطريقة طبيعية ودودة باستخدام اسمه {student_name}. لو سأل أسئلة عامة زي "إنت عارف انا مين؟" أو "إزيك؟" أو "شكرا"، رد بطريقة طبيعية ودودة باستخدام اسمه {student_name}.
ولو سأل عن حياتك الشخصية زي "إنت متجوز؟" أو "عندك أولاد؟" أو "ساكن فين؟" ولو سأل عن حياتك الشخصية زي "إنت متجوز؟" أو "عندك أولاد؟" أو "ساكن فين؟"
......
...@@ -107,6 +107,7 @@ class QueryHandler: ...@@ -107,6 +107,7 @@ class QueryHandler:
2. "overview" - أسئلة عن نظرة عامة على المنهج أو المحتوى الكامل 2. "overview" - أسئلة عن نظرة عامة على المنهج أو المحتوى الكامل
3. "navigation" - أسئلة عن وحدة أو مفهوم معين 3. "navigation" - أسئلة عن وحدة أو مفهوم معين
4. "specific_content" - أسئلة محددة عن موضوع علمي معين 4. "specific_content" - أسئلة محددة عن موضوع علمي معين
5. "game_help:" - أسئلة عن مساعدة او تفاعل في لعبة تعليمية
{conversation_context} {conversation_context}
السؤال الحالي: "{query}" السؤال الحالي: "{query}"
...@@ -134,7 +135,7 @@ class QueryHandler: ...@@ -134,7 +135,7 @@ class QueryHandler:
valid_classes = { valid_classes = {
"general_chat", "overview", "navigation", "specific_content" "general_chat", "overview", "navigation", "specific_content", "game_help"
} }
if classification in valid_classes: if classification in valid_classes:
...@@ -245,3 +246,25 @@ class QueryHandler: ...@@ -245,3 +246,25 @@ class QueryHandler:
logger.error(f"Error getting navigation response: {e}") logger.error(f"Error getting navigation response: {e}")
# Fallback to overview if navigation fails # Fallback to overview if navigation fails
return self.handle_overview_query(student_info, subject) return self.handle_overview_query(student_info, subject)
def handle_game_help_query(self, message: str) -> Tuple[str, str]:
"""
Extracts 'game_context' and 'user_query' from the full message text.
Expected format:
game context: <context text>
user query: <query text>
Returns a dictionary with both parts.
"""
try:
game_context = ""
user_query = ""
parts = message.split("user query:")
if len(parts) == 2:
game_context = parts[0].replace("game context:", "").strip()
user_query = parts[1].strip()
return game_context, user_query
...@@ -100,16 +100,9 @@ class ResponseGenerator: ...@@ -100,16 +100,9 @@ class ResponseGenerator:
# Prepare system prompt # Prepare system prompt
formatted_base_prompt = self.prepare_system_prompt(student_info) formatted_base_prompt = self.prepare_system_prompt(student_info)
# Build base messages # Build base messages
messages = [{"role": "system", "content": formatted_base_prompt}] messages = [{"role": "system", "content": formatted_base_prompt}]
messages.extend(conversation_history) messages.extend(conversation_history)
messages.append({"role": "user", "content": user_message})
# ==========================
# HANDLE SAFE QUERIES
# ==========================
if query_type == "general_chat": if query_type == "general_chat":
chat_context = self.query_handler.handle_general_chat_query(user_message, student_info) chat_context = self.query_handler.handle_general_chat_query(user_message, student_info)
...@@ -135,6 +128,24 @@ class ResponseGenerator: ...@@ -135,6 +128,24 @@ class ResponseGenerator:
messages.append({"role": "system", "content": enhanced_context}) messages.append({"role": "system", "content": enhanced_context})
logger.info(f"Added enhanced context with {len(relevant_results)} chunks for student {student_name}") logger.info(f"Added enhanced context with {len(relevant_results)} chunks for student {student_name}")
elif query_type == "game_help":
game_context, user_query = self.query_handler.handle_game_help_query(user_message)
messages.append({"role": "system", "content": f"سياق اللعبة:\n{game_context}"})
user_message = user_query # Update user message to focused query
relevant_results = self.context_generator.search_enhanced_content(
user_message, student_info, subject, top_k
)
if relevant_results:
enhanced_context = self.context_generator.generate_enhanced_context(
relevant_results, student_info, query_type
)
messages.append({"role": "system", "content": enhanced_context})
logger.info(f"Added enhanced context with {len(relevant_results)} chunks for game help for student {student_name}")
# Finally add user message
messages.append({"role": "user", "content": user_message})
# ========================== # ==========================
# CALL AI MODEL # CALL AI MODEL
# ========================== # ==========================
......
...@@ -89,7 +89,7 @@ custom_fixes = { ...@@ -89,7 +89,7 @@ custom_fixes = {
"بنأكله": "بِنأكْلُه", "بنأكله": "بِنأكْلُه",
"الهضم": "الْهَضْم", "الهضم": "الْهَضْم",
"منصة": "مَنَصّةْ", "منصة": "مَنَصّةْ",
"أساعدك": "أَساعدك",
} }
......
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