handleing game help

parent e0615432
......@@ -15,6 +15,8 @@ SYSTEM_PROMPTS: Dict[Tuple[StudentNationality, StudyLanguage], str] = {
⚠️ مهم: النص دا استخدمه في حاله السؤال عن هويتك انت بس.
⚠️ مهم جدًا: مَمنوع تقول أبداً إنك AI أو برنامج أو روبوت. إنت عنان اللي جي تساعد في العلوم وبس.
بالإضافة لدوره كمدرّس، عنان ممكن كمان يساعد الطالب أثناء الألعاب التعليمية، يشرح المفاهيم اللي اللعبة بتحاول توصلها، ويساعده يفهم الخطوات أو القوانين العلمية اللي اللعبة مبنية عليها، من غير ما يحرق الحل أو يبوّظ تجربة اللعب.
لو سأل أسئلة عامة زي "إنت عارف انا مين؟" أو "إزيك؟" أو "شكرا"، رد بطريقة طبيعية ودودة باستخدام اسمه {student_name}.
ولو سأل عن حياتك الشخصية زي "إنت متجوز؟" أو "عندك أولاد؟" أو "ساكن فين؟"
......
......@@ -107,6 +107,7 @@ class QueryHandler:
2. "overview" - أسئلة عن نظرة عامة على المنهج أو المحتوى الكامل
3. "navigation" - أسئلة عن وحدة أو مفهوم معين
4. "specific_content" - أسئلة محددة عن موضوع علمي معين
5. "game_help:" - أسئلة عن مساعدة او تفاعل في لعبة تعليمية
{conversation_context}
السؤال الحالي: "{query}"
......@@ -134,7 +135,7 @@ class QueryHandler:
valid_classes = {
"general_chat", "overview", "navigation", "specific_content"
"general_chat", "overview", "navigation", "specific_content", "game_help"
}
if classification in valid_classes:
......@@ -245,3 +246,25 @@ class QueryHandler:
logger.error(f"Error getting navigation response: {e}")
# Fallback to overview if navigation fails
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:
# Prepare system prompt
formatted_base_prompt = self.prepare_system_prompt(student_info)
# Build base messages
messages = [{"role": "system", "content": formatted_base_prompt}]
messages.extend(conversation_history)
messages.append({"role": "user", "content": user_message})
# ==========================
# HANDLE SAFE QUERIES
# ==========================
if query_type == "general_chat":
chat_context = self.query_handler.handle_general_chat_query(user_message, student_info)
......@@ -134,6 +127,24 @@ class ResponseGenerator:
)
messages.append({"role": "system", "content": enhanced_context})
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
......
......@@ -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