Commit 780d87b4 authored by salma's avatar salma

Merge branch 'anan_robotic' of...

Merge branch 'anan_robotic' of http://gitlab.caprover.al-arcade.com/SalmaMohammedHamed/ai-tutor into anan_robotic
parents f7364633 39ae3ad9
...@@ -13,7 +13,7 @@ SYSTEM_PROMPTS: Dict[Tuple[StudentNationality, StudyLanguage], str] = { ...@@ -13,7 +13,7 @@ SYSTEM_PROMPTS: Dict[Tuple[StudentNationality, StudyLanguage], str] = {
فقط لو الطفّل سأل عن هويتك بصراحة ووضح (مثل "إنت مين؟"، "عرّفني بنفسك"، "إنت بتعمل إيه هنا؟")، فقط لو الطفّل سأل عن هويتك بصراحة ووضح (مثل "إنت مين؟"، "عرّفني بنفسك"، "إنت بتعمل إيه هنا؟")،
رُد بالنصّ الثابت ده: رُد بالنصّ الثابت ده:
"أنا عَنان مؤسِّس شارع العلوم، وإنت هنا على مَنَصّة Science Street Lab، "أنا عَنان مؤسِّس شارع العلوم، وإنت هنا على مَنَصّة Science Street Lab،
وأنا هنا عشان أَساعدك تتعلَّم أي حاجة عايز تتعلَّمها في العلوم." وأنا هنا عشان أَساعدك تتعلِّم أي حاجة عايز تتعلِّمها في العلوم."
⚠️ مهم: لا تستخدم هذا النص في أي حالة أخرى غير سؤال الهوية. ⚠️ مهم: لا تستخدم هذا النص في أي حالة أخرى غير سؤال الهوية.
⚠️ مهم جدًا: مَمنوع تقول أبداً إنك AI أو برنامج أو روبوت. إنت عنان وبس. ⚠️ مهم جدًا: مَمنوع تقول أبداً إنك AI أو برنامج أو روبوت. إنت عنان وبس.
...@@ -84,7 +84,7 @@ SYSTEM_PROMPTS: Dict[Tuple[StudentNationality, StudyLanguage], str] = { ...@@ -84,7 +84,7 @@ SYSTEM_PROMPTS: Dict[Tuple[StudentNationality, StudyLanguage], str] = {
فقط لو الطفّل سأل عن هويتك بصراحة ووضح (مثل "إنت مين؟"، "عرّفني بنفسك"، "إنت بتعمل إيه هنا؟")، فقط لو الطفّل سأل عن هويتك بصراحة ووضح (مثل "إنت مين؟"، "عرّفني بنفسك"، "إنت بتعمل إيه هنا؟")،
رُد بالنصّ الثابت ده: رُد بالنصّ الثابت ده:
"أنا عَنان مؤسِّس شارع العلوم، وإنت هنا على مَنَصّة Science Street Lab، "أنا عَنان مؤسِّس شارع العلوم، وإنت هنا على مَنَصّة Science Street Lab،
وأنا هنا عشان أَساعدك تتعلَّم أي حاجة عايز تتعلَّمها في العلوم." وأنا هنا عشان أَساعدك تتعلِّم أي حاجة عايز تتعلِّمها في العلوم."
⚠️ مهم: لا تستخدم هذا النص في أي حالة أخرى غير سؤال الهوية. ⚠️ مهم: لا تستخدم هذا النص في أي حالة أخرى غير سؤال الهوية.
⚠️ مهم جدًا: مَمنوع تقول أبداً إنك AI أو برنامج أو روبوت. إنت عنان وبس. ⚠️ مهم جدًا: مَمنوع تقول أبداً إنك AI أو برنامج أو روبوت. إنت عنان وبس.
...@@ -155,7 +155,7 @@ SYSTEM_PROMPTS: Dict[Tuple[StudentNationality, StudyLanguage], str] = { ...@@ -155,7 +155,7 @@ SYSTEM_PROMPTS: Dict[Tuple[StudentNationality, StudyLanguage], str] = {
لو الطفّل سأل عن هويتك بصراحة (زي "إنت مين؟"، "عرِّفني بنفسك")، لو الطفّل سأل عن هويتك بصراحة (زي "إنت مين؟"، "عرِّفني بنفسك")،
رُد بالنصّ الثابت ده: رُد بالنصّ الثابت ده:
"أنا عَنان مؤسس شارع العلوم، وإنت هنا على مَنَصّة Science Street Lab، "أنا عَنان مؤسس شارع العلوم، وإنت هنا على مَنَصّة Science Street Lab،
وأنا هنا عشان أَساعدك تتعلَّم أي حاجة عايز تتعلَّمها في العلوم." وأنا هنا عشان أَساعدك تتعلِّم أي حاجة عايز تتعلِّمها في العلوم."
⚠️ مهم: لا تستخدم هذا النص في أي حالة أخرى غير سؤال الهوية. ⚠️ مهم: لا تستخدم هذا النص في أي حالة أخرى غير سؤال الهوية.
⚠️ مهم جدًا: مَمنوع تقول أبداً إنك AI أو برنامج أو روبوت. إنت عنان وبس. ⚠️ مهم جدًا: مَمنوع تقول أبداً إنك AI أو برنامج أو روبوت. إنت عنان وبس.
...@@ -225,7 +225,7 @@ SYSTEM_PROMPTS: Dict[Tuple[StudentNationality, StudyLanguage], str] = { ...@@ -225,7 +225,7 @@ SYSTEM_PROMPTS: Dict[Tuple[StudentNationality, StudyLanguage], str] = {
لو الطفّل سأل عن هويتك بصراحة (زي "إنت مين؟"، "عرِّفني بنفسك")، لو الطفّل سأل عن هويتك بصراحة (زي "إنت مين؟"، "عرِّفني بنفسك")،
رُد بالنصّ الثابت ده: رُد بالنصّ الثابت ده:
"أنا عَنان مؤسس شارع العلوم، وإنت هنا على مَنَصّة Science Street Lab، "أنا عَنان مؤسس شارع العلوم، وإنت هنا على مَنَصّة Science Street Lab،
وأنا هنا عشان أَساعدك تتعلَّم أي حاجة عايز تتعلَّمها في العلوم." وأنا هنا عشان أَساعدك تتعلِّم أي حاجة عايز تتعلِّمها في العلوم."
⚠️ مهم: لا تستخدم هذا النص في أي حالة أخرى غير سؤال الهوية. ⚠️ مهم: لا تستخدم هذا النص في أي حالة أخرى غير سؤال الهوية.
⚠️ مهم جدًا: مَمنوع تقول أبداً إنك AI أو برنامج أو روبوت. إنت عنان وبس. ⚠️ مهم جدًا: مَمنوع تقول أبداً إنك AI أو برنامج أو روبوت. إنت عنان وبس.
......
...@@ -64,11 +64,11 @@ class QueryHandler: ...@@ -64,11 +64,11 @@ class QueryHandler:
self.pgvector = pgvector_service self.pgvector = pgvector_service
self.db_service = db_service self.db_service = db_service
def get_recent_conversation_context(self, student_id: str, max_messages: int = 5) -> str: def get_recent_conversation_context(self, chat_history: list[Dict[str, str]], max_messages: int = 5) -> str:
"""Get recent conversation history for context""" """Get recent conversation history for context from provided list"""
try: try:
# Get conversation history from database # use the provided list directly
full_history = self.db_service.get_chat_history(student_id) full_history = chat_history
# Get last max_messages messages (excluding system messages) # Get last max_messages messages (excluding system messages)
recent_messages = [] recent_messages = []
...@@ -90,11 +90,11 @@ class QueryHandler: ...@@ -90,11 +90,11 @@ class QueryHandler:
return "\n".join(context_parts) return "\n".join(context_parts)
except Exception as e: except Exception as e:
logger.warning(f"Error getting conversation context for {student_id}: {e}") logger.warning(f"Error processing conversation context: {e}")
return "لا يمكن الحصول على سياق المحادثة." return "لا يمكن الحصول على سياق المحادثة."
def classify_query_type(self, query: str, student_info: StudentProfile, student_id: str) -> str: def classify_query_type(self, query: str, student_info: StudentProfile, student_id: str, chat_history: list[Dict[str, str]]) -> str:
""" """
Enhanced query classification. It first checks for a specific, rule-based Enhanced query classification. It first checks for a specific, rule-based
pattern for 'game_help' and then falls back to the LLM for other cases. pattern for 'game_help' and then falls back to the LLM for other cases.
...@@ -113,7 +113,8 @@ class QueryHandler: ...@@ -113,7 +113,8 @@ class QueryHandler:
is_arabic = student_info.is_arabic is_arabic = student_info.is_arabic
grade = student_info.grade grade = student_info.grade
conversation_context = self.get_recent_conversation_context(student_id, max_messages=5) conversation_context = self.get_recent_conversation_context(chat_history, max_messages=5)
classification_prompt = f""" classification_prompt = f"""
صنف السؤال التالي إلى إحدى الفئات التالية، مع مراعاة سياق المحادثة الأخيرة: صنف السؤال التالي إلى إحدى الفئات التالية، مع مراعاة سياق المحادثة الأخيرة:
......
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