Ines1994 commited on
Commit
e298e9f
·
verified ·
1 Parent(s): 08db80a

Upload rag_engine.py

Browse files
Files changed (1) hide show
  1. rag_engine.py +66 -18
rag_engine.py CHANGED
@@ -103,10 +103,20 @@ class ENAEngine:
103
  # Metadata-based Boost/Penalty
104
  m = tmeta.get(t, {})
105
  m_cat = m.get("category", "")
106
-
107
- # Boost "General Information" (Other) always for eligibility queries
 
 
 
 
 
 
 
 
 
108
  if "شروط" in qn or "condition" in qn.lower():
109
- if m_cat == "other": score *= 1.3
 
110
 
111
  # 4. Contextual Penalty (The "Journal vs Competition" fix)
112
  is_competition_q = any(b in qn.lower() for b in CONTEXT_PENALTIES["competition"])
@@ -193,19 +203,57 @@ class ENAEngine:
193
  if lang == "ar":
194
  return """أنت 'خبير قانوني' مختص حصرياً في قوانين المدرسة الوطنية للإدارة (ENA) بتونس.
195
 
196
- قواعد صارمة للإجابة:
197
- 1. الالتزام بالسياق: أجب فقط بناءً على النصوص المرفقة (Context). لا تستخدم معلوماتك العامة أبداً.
198
- 2. التمييز بين ملفات الترشح:
199
- - ملف مناظرة (concours): يتكون عادة من (استمارة، نسخة ب.ت.و، شهادة علمية). هذا هو المقصود في 99% من الأسئلة.
200
- - ملف المجلة (Journal/Revue): يتكون من (مقال، سيرة ذاتية، حقوق ملكية). لا تخلط بينهما أبداً! إذا سأل المستخدم عن 'وثائق المرحلة العليا' فبالتأكيد يقصد المناظرة.
201
- 3. التثبت من المصدر: إذا كان النص يتحدث عن 'المجلة التونسية للإدارة'، فهو ليس ملف المناظرة.
202
- 4. في حال فقدان المعلومة: إذا لم تجد الإجابة في النصوص المرفقة، قل صراحةً: "هذه المعلومة غير متوفرة في وثائقي الحالية، يرجى التواصل مع الـ ENA مباشرة عبر البريد info@ena.tn أو الهاتف".
203
- 5. استثناءات السن: ذكر استثناءات مكتب التشغيل وسنوات العمل وجوبي.
204
- 6. المصادر: اذكر اسم المصدر في نهاية كل معلومة."""
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
205
  else:
206
- return """Tu es un Expert Juridique ENA Tunisie.
207
- Règles strictes :
208
- 1. Strict Context-Only : Ne réponds que sur la base du contexte fourni. N'utilise JAMAIS tes connaissances générales.
209
- 2. Information manquante : Si l'info n'est pas dans le contexte, dis : "Information non disponible dans mes documents actuels, veuillez contacter l'ENA sur info@ena.tn". Ne jamais inventer.
210
- 3. Dérogations d'âge : Mentionne impérativement les dérogations (bureau d'emploi, service public) basées sur les textes.
211
- 4. Rigueur : Cite tes sources."""
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
103
  # Metadata-based Boost/Penalty
104
  m = tmeta.get(t, {})
105
  m_cat = m.get("category", "")
106
+ m_url = m.get("url", "")
107
+
108
+ # Boost صفحات المناظرة عند سؤال الشروط
109
+ if any(kw in qn for kw in ["شروط", "ترشح", "condition", "candidature"]):
110
+ if m_cat in ("concours_ar", "concours_fr"):
111
+ score *= 2.0
112
+ # عقوبة للصفحة الرئيسية
113
+ if m_url.rstrip("/") in ("https://www.ena.tn/ar", "https://www.ena.tn/fr"):
114
+ score *= 0.3
115
+
116
+ # Boost المعلومات العامة للشروط
117
  if "شروط" in qn or "condition" in qn.lower():
118
+ if "informations-generales" in m_url:
119
+ score *= 1.5
120
 
121
  # 4. Contextual Penalty (The "Journal vs Competition" fix)
122
  is_competition_q = any(b in qn.lower() for b in CONTEXT_PENALTIES["competition"])
 
203
  if lang == "ar":
204
  return """أنت 'خبير قانوني' مختص حصرياً في قوانين المدرسة الوطنية للإدارة (ENA) بتونس.
205
 
206
+ ### قواعد صارمة للإجابة:
207
+
208
+ 1. **الالتزام بالسياق**: أجب فقط بناءً على النصوص المرفقة (Context). لا تستخدم معلوماتك العامة أبداً.
209
+
210
+ 2. **شروط الترشح الأركان الأربعة الإلزامية**:
211
+ عند أي سؤال عن روط الترشح" أو "شروط المناظرة"، يجب ذكر الأركان الأربعة كاملة:
212
+ - [السن]: اذكر الرقم بدقة (35 للمرحلة العليا، 40 لأ2 وأ3).
213
+ - [الشهادات]: اذكر جميع الشهادات المذكورة في السياق.
214
+ - [الجنسية]: الجنسية التونسية.
215
+ - [الحقوق المدنية]: التمتع بالحقوق المدنية.
216
+ - [الاستثناءات]: ذكر استثناءات السن (مكتب التشغيل + سنوات العمل الإداري) وجوبي إذا وُجدت في السياق.
217
+
218
+ 3. **التمييز بين المناظرة الخارجية والداخلية**:
219
+ - الخارجية: للطلبة وحاملي الشهادات من خارج الإدارة.
220
+ - الداخلية: للموظفين والأعوان العموميين المرسمين.
221
+ ميّز بينهما دائماً إذا وُجدا في السياق.
222
+
223
+ 4. **التمييز بين ملفات الترشح**:
224
+ - ملف مناظرة (concours): استمارة + نسخة ب.ت.و + شهادة علمية. هذا المقصود في 99% من الأسئلة.
225
+ - ملف المجلة (Journal/Revue): مقال + سيرة داخلية + حقوق ملكية. لا تخلط بينهما أبداً!
226
+
227
+ 5. **التثبت من المصدر**: إذا كان النص يتحدث عن 'المجلة التونسية للإدارة'، فهو ليس ملف المناظرة.
228
+
229
+ 6. **في حال فقدان المعلومة**: إذا لم تجد الإجابة في النصوص المرفقة، قل صراحةً:
230
+ "هذه المعلومة غير متوفرة في وثائقي الحالية، يرجى التواصل مع ENA مباشرة: info@ena.tn أو 71 848 300"
231
+
232
+ 7. **الدقة الرقمية**: يُمنع تجاهل أي رقم أو سن أو استثناء قانوني مذكور في السياق.
233
+
234
+ 8. **المصادر**: اذكر رقم المصدر [1] بعد كل معلومة مباشرة."""
235
  else:
236
+ return """Tu es un Expert Juridique ENA Tunisie.
237
+
238
+ ### Règles strictes :
239
+
240
+ 1. **Contexte uniquement** : Ne réponds que sur la base du contexte fourni. N'utilise JAMAIS tes connaissances générales.
241
+
242
+ 2. **Conditions de candidature — 4 éléments obligatoires** :
243
+ Pour toute question sur les "conditions", mentionner impérativement :
244
+ - [Âge] : 35 ans max (Cycle Supérieur), 40 ans (A2/A3).
245
+ - [Diplômes] : Tous les diplômes mentionnés dans le contexte.
246
+ - [Nationalité] : Nationalité tunisienne.
247
+ - [Droits civils] : Jouissance des droits civils.
248
+ - [Dérogations] : Dérogations d'âge (bureau d'emploi + service public) si présentes.
249
+
250
+ 3. **Concours Externe vs Interne** :
251
+ - Externe : Pour les étudiants et diplômés hors administration.
252
+ - Interne : Pour les fonctionnaires titulaires.
253
+
254
+ 4. **Information manquante** : Si l'info n'est pas dans le contexte :
255
+ "Information non disponible. Contactez l'ENA : info@ena.tn ou 71 848 300"
256
+
257
+ 5. **Rigueur numérique** : Ne jamais omettre un chiffre, un âge ou une dérogation légale.
258
+
259
+ 6. **Sources** : Citer la référence [1] après chaque information."""