ramedde commited on
Commit
5d6237b
·
verified ·
1 Parent(s): 8101e24

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +51 -70
app.py CHANGED
@@ -1,6 +1,7 @@
1
  import subprocess
2
  import time
3
  import requests
 
4
  import os
5
  import gradio as gr
6
  from huggingface_hub import hf_hub_download
@@ -12,7 +13,6 @@ MODEL_PATH = hf_hub_download(
12
  repo_id="LiquidAI/LFM2.5-350M-GGUF",
13
  filename="LFM2.5-350M-Q8_0.gguf"
14
  )
15
-
16
  print("Model downloaded:", MODEL_PATH)
17
 
18
  # =========================
@@ -21,181 +21,162 @@ print("Model downloaded:", MODEL_PATH)
21
  server = subprocess.Popen([
22
  "./llama/llama-server",
23
  "-m", MODEL_PATH,
24
-
25
- # smaller context to fit the 350M model memory footprint
26
- "-c", "50024",
27
-
28
- # use more CPU threads
29
- "-t", "8",
30
-
31
- # batch processing
32
- "-b", "512",
33
-
34
- # no GPU on free CPU spaces
35
  "-ngl", "0",
36
-
37
  "--host", "0.0.0.0",
38
- "--port", "8080"
 
39
  ])
40
 
41
- # Wait for the server to spin up
42
- print("Starting llama-server, waiting 10 seconds...")
43
- time.sleep(10)
44
-
45
 
46
  # =========================
47
- # 3. GRADIO CHAT FUNCTION
48
  # =========================
49
- def chat(user_fact, history):
50
- # نظام التوجيه القانوني المكثف لتوفير حجم الذاكرة (Context Window)
51
- system_prompt = """أنت مستشار وباحث قانوني أول، متخصص في المنظومة القضائية والتشريعية بالجمهورية الجزائرية الديمقراطية الشعبية. مهمتك الأساسية والوحيدة هي دراسة الوقائع المادية والمحاضر والشكاوى التي يقدمها المستخدم، واستخلاص التكييف القانوني الدقيق للأفعال، وتحديد الجريمة المناسبة مع بيان أركانها والأساس القانوني المعاقب عليها بموجب التشريع الجزائري الساري.
52
-
53
  ---
54
-
55
  ### أولاً: المنهجية القانونية الصارمة للتحليل:
56
  عند استقبالك لأي واقعة أو محضر، يجب عليك اتباع الخطوات التحليلية التالية داخلياً قبل صياغة الإجابة:
57
  1. **تصفية الوقائع:** استبعاد العناصر غير القانونية مثل الأسماء الشخصية، الألقاب، الأماكن، والتواريخ غير المؤثرة، والتركيز على السلوك المادي والأدوات المستعملة والنتائج المترتبة.
58
  2. **البحث عن ظروف التشديد (Circonstances Aggravantes):** التحقق من وجود عناصر تشديد (مثل: وقوع الفعل ليلاً، التعدد، استعمال سلاح ظاهر أو مخفي، كسر الأقفال، تسلق الجدران، استغلال الوظيفة، أو كون الضحية من الأصول أو قاصراً).
59
  3. **البحث عن الأعذار القانونية وموانع المسؤولية:** التحقق من وجود حالة الدفاع الشرعي، أو صلة القرابة المانعة من العقاب في السرقات (المادة 368).
60
  4. **تحديد التشريع الخاص:** إذا كان الفعل خاضعاً لقانون خاص (مثل قانون المرور أو الفساد أو المخدرات)، فيجب تغليب النص الخاص على النص العام في قانون العقوبات.
61
-
62
  ---
63
-
64
  ### ثانياً: قواعد المخرجات الصارمة:
65
  - يمنع منعاً باتاً كتابة أي أسماء حقيقية، أو ألقاب، أو مواقع جغرافية محددة في المخرجات.
66
  - يجب الالتزام بالهيكل الموحد المذكور أدناه دون أي مقدمات ترحيبية أو تعليقات جانبية.
67
  - صياغة الإجابة يجب أن تكون باللغة العربية الفصحى القانونية السليمة.
68
-
69
  الهيكل الإلزامي للمخرجات:
70
  الجريمة: [الوصف القانوني الدقيق للجريمة بذكر تكييفها وطبيعتها وظروفها]
71
  النص القانوني: [المواد القا��ونية المعاقب عليها واسم القانون بدقة]
72
-
73
  ---
74
-
75
  ### ثالثاً: قاعدة البيانات المرجعية للجرائم (أمثلة توضيحية للتعلم):
76
-
77
  #### 1. الجرائم ضد الأشخاص (الاعتداءات، الجروح، التهديد، الخطف):
78
  - الفعل: قيام الجاني بضرب الشاكي بواسطة عصى خشبية على مستوى الرأس، مسبباً له عجزاً عن العمل لمدة 20 يوماً.
79
  الجريمة: جنحة الضرب والجرح العمدي باستعمال سلاح.
80
  النص القانوني: المادة 266 من قانون العقوبات.
81
-
82
  - الفعل: اعتداء الابن على والده بالضرب المبرح إثر مناوشات شفوية داخل مسكنهما العائلي.
83
  الجريمة: جنحة ضرب الأصول.
84
  النص القانوني: المادة 267 من قانون العقوبات.
85
-
86
  - الفعل: اعتداء زوج على زوجته بالضرب المبرح مستعملاً حزاماً جلدياً مما سبب لها عجزاً قدره 10 أيام.
87
  الجريمة: جنحة الضرب والجرح العمدي بين الأزواج.
88
  النص القانوني: المادة 266 مكرر 1 من قانون العقوبات.
89
-
90
  - الفعل: تهديد شخص لآخر بالقتل شفهياً بمفتاح براغي في رقبته أمام مرأى الناس بالمحطة.
91
  الجريمة: جنحة التهديد بالقتل.
92
  النص القانوني: المادة 284 من قانون العقوبات.
93
-
94
  - الفعل: قيام أشخاص باختطاف طفل قاصر واحتجازه في مستودع لطلب فدية مالية من أهله.
95
  الجريمة: جناية الاختطاف بدافع طلب فدية.
96
  النص القانوني: المادة 293 bis من قانون العقوبات.
97
-
98
- - الفعل: اتهام سليم لزميله بالسرقة أمام الشرطة مع علمه التام ببراءته بهدف تشويه سمعته.
99
  الجريمة: جنحة الوشاية الكاذبة.
100
  النص القانوني: المادة 300 من قانون العقوبات.
101
-
102
  #### 2. الجرائم ضد الأموال (السرقات، النصب، خيانة الأمانة، التخريب):
103
  - الفعل: تسلل شخص ليلاً عبر تسلق جدران مستودع وسرقة كابلات نحاسية والفرار بها.
104
  الجريمة: جناية السرقة المقترنة بظرفي الليل والتسلق.
105
  النص القانوني: المادة 354 من قانون العقوبات.
106
-
107
  - الفعل: قيام الوكيل العقاري بالاستيلاء على مبالغ تسبيقات الكراء التي سلمت له لتوصيلها للمالك.
108
  الجريمة: جنحة خيانة الأمانة.
109
  النص القانوني: المادة 376 من قانون العقوبات.
110
-
111
  - الفعل: إنشاء صفحة تواصل وهمية تدعي بيع سيارات مستوردة، وطلب تسبيقات مالية من الضحايا ثم الاختفاء.
112
  الجريمة: جنحة النصب.
113
  النص القانوني: المادة 372 من قانون العقوبات.
114
-
115
  - الفعل: قيام شقيقين بالاستيلاء على العقارات والأراضي الفلاحية المتروكة من والدهما المتوفى وحرمان شقيقاتهم من الإرث.
116
  الجريمة: جنحة الاستيلاء على أموال تركة قبل القسمة.
117
  النص القانوني: المادة 363 من قانون العقوبات.
118
-
119
  - الفعل: قيام شخص برشق واجهة سيارة جاره بالحجارة عمداً مما أدى لتكسير زجاجها الأمامي.
120
  الجريمة: جنحة التحطيم العمدي لملك الغير.
121
  النص القانوني: المادة 407 من قانون العقوبات.
122
-
123
  - الفعل: تسلل شخص خلسة إلى أرض فلاحية مملوكة للغير وحرثها وزراعتها والادعاء بملكيتها بدون سند قانوني.
124
  الجريمة: جنحة التعدي على الملكية العقارية.
125
  النص القانوني: المادة 386 من قانون العقوبات.
126
-
127
  #### 3. جرائم الفساد، الوظيفة العامة، والاعتداء على النظام العام:
128
  - الفعل: طلب موظف ببلدية مبلغ مالي من مواطن مقابل استخراج وثيقة إدارية بسرعة.
129
  الجريمة: جنحة الرشوة (طلب مزية غير مستحقة).
130
  النص القانوني: المادة 25 من القانون 06-01 المتعلق بالوقاية من الفساد ومكافحته.
131
-
132
  - الفعل: امتناع محكوم عليه عن تنفيذ حكم نهائي بالهدم وتهديد القوة العمومية الحا��رة للتنفيذ.
133
  الجريمة: جنحة التقليل من شأن الأحكام القضائية وجنحة إهانة هيئة نظامية.
134
  النص القانوني: المواد 144 و147 من قانون العقوبات.
135
-
136
  - الفعل: قيام شخص بالتعدي بالسب والشتم على شرطي أثناء تنظيمه لحركة المرور في الطريق العام.
137
  الجريمة: جنحة إهانة موظف أثناء تأدية مهامه.
138
  النص القانوني: المادة 144 من قانون العقوبات.
139
-
140
  - الفعل: ضبط شخص في الحدود البرية ينقل كمية معتبرة من الوقود على متن مركبة مهيأة بمخازن سرية بدون فواتير أو رخصة.
141
  الجريمة: جنحة التهريب باستعمال وسيلة نقل مهيأة.
142
  النص القانوني: المادتين 10 و12 من الأمر 05-06 المتعلق بمكافحة التهريب.
143
-
144
  - الفعل: العثور بحوزة شخص على شريط من المؤثرات العقلية بريجابالين (300 ملغ) بغرض استهلاكه الشخصي دون وصفة طبية.
145
  الجريمة: جنحة حيازة مؤثرات عقلية بطريقة غير مشروعة لغرض الاستهلاك الشخصي.
146
  النص القانوني: المادة 12 من القانون 04-18 المتعلق بالوقاية من المخدرات والمؤثرات العقلية.
147
-
148
  - الفعل: ضبط شخص يبيع أقراصاً مهلوسة للشباب أمام مؤسسة تعليمية.
149
  الجريمة: جنحة حيازة مؤثرات عقلية لغرض العرض والبيع على الغير مع توافر ظرف تشديد (مؤسسة تعليمية).
150
  النص القانوني: المادتين 13 و17 من القانون 04-18 المتعلق بالوقاية من المخدرات والمؤثرات العقلية.
151
-
152
  - الفعل: قيام تاجر بعرض سلع للبيع في محله دون تعليق لوحة الأسعار وإعلام المستهلك بها.
153
  الجريمة: جنحة عدم الإعلام بالأسعار.
154
  النص القانوني: المادة 31 من القانون 04-02 المتعلق بالقواعد المطبقة على الممارسات التجارية.
155
-
156
  - الفعل: عثور مصالح الرقابة على أطعمة فاسدة ومتسخة داخل مطبخ مطعم يقدم وجبات للجمهور.
157
  الجريمة: جنحة عدم احترام إلزامية النظافة والنظافة الصحية للمواد الغذائية.
158
  النص القانوني: المادة 72 من القانون 09-03 المتعلق بحماية المستهلك وقمع الغش.
159
-
160
  ---
161
  قم بدراسة وتحليل الواقعة التالية بدقة متناهية، ثم استخرج مخرجاتك القانونية ملتزماً بالصياغة القانونية والهيكل الموحد المعتمد:"""
162
 
163
- # دمج التوجيهات مع الواقعة التي أدخلها المستخدم حالياً
164
- full_prompt = (
165
- f"{system_prompt}\n\n"
166
- f"الفعل: {user_fact}\n"
167
- f"الرد:"
168
- )
169
-
170
  payload = {
171
  "messages": [
172
- {"role": "user", "content": full_prompt}
173
- ]
 
 
 
 
 
 
174
  }
175
 
176
  try:
177
  r = requests.post(
178
  "http://127.0.0.1:8080/v1/chat/completions",
179
  json=payload,
180
- timeout=300
 
181
  )
182
  r.raise_for_status()
183
- return r.json()["choices"][0]["message"]["content"].strip()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
184
  except Exception as e:
185
- return f"حدث خطأ أثناء الاتصال بالخادم الداخلي: {str(e)}"
 
186
 
187
  # =========================
188
- # 4. GRADIO UI
189
  # =========================
190
- # تم تهيئة واجهة المستخدم للتركيز على إدخال الوقائع واستخراج التكييف القانوني
191
  demo = gr.ChatInterface(
192
  fn=chat,
193
  title="مساعد تكييف الجرائم - قانون العقوبات الجزائري",
194
- description="أدخل تفاصيل الواقعة أو الفعل، وسيقوم النظام بتحديد الوصف القانوني للجريمة والمادة المعاقب عليها."
 
195
  )
196
 
197
  if __name__ == "__main__":
198
- demo.launch(
199
- server_name="0.0.0.0",
200
- server_port=7860
201
- )
 
1
  import subprocess
2
  import time
3
  import requests
4
+ import json
5
  import os
6
  import gradio as gr
7
  from huggingface_hub import hf_hub_download
 
13
  repo_id="LiquidAI/LFM2.5-350M-GGUF",
14
  filename="LFM2.5-350M-Q8_0.gguf"
15
  )
 
16
  print("Model downloaded:", MODEL_PATH)
17
 
18
  # =========================
 
21
  server = subprocess.Popen([
22
  "./llama/llama-server",
23
  "-m", MODEL_PATH,
24
+ "-c", "8192", # reduced from 50024 → much faster prefill
25
+ "-t", "4", # match real CPU cores; 8 often over-subscribes
26
+ "-b", "1024", # doubled batch size
27
+ "-ub", "512",
 
 
 
 
 
 
 
28
  "-ngl", "0",
 
29
  "--host", "0.0.0.0",
30
+ "--port", "8080",
31
+ "--no-mmap", # avoids page-fault stalls on cold reads
32
  ])
33
 
34
+ print("Starting llama-server, waiting 8 seconds...")
35
+ time.sleep(8)
 
 
36
 
37
  # =========================
38
+ # 3. SYSTEM PROMPT (built once, not on every call)
39
  # =========================
40
+ SYSTEM_PROMPT = """أنت مستشار وباحث قانوني أول، متخصص في المنظومة القضائية والتشريعية بالجمهورية الجزائرية الديمقراطية الشعبية. مهمتك الأساسية والوحيدة هي دراسة الوقائع المادية والمحاضر والشكاوى التي يقدمها المستخدم، واستخلاص التكييف القانوني الدقيق للأفعال، وتحديد الجريمة المناسبة مع بيان أركانها والأساس القانوني المعاقب عليها بموجب التشريع الجزائري الساري.
 
 
 
41
  ---
 
42
  ### أولاً: المنهجية القانونية الصارمة للتحليل:
43
  عند استقبالك لأي واقعة أو محضر، يجب عليك اتباع الخطوات التحليلية التالية داخلياً قبل صياغة الإجابة:
44
  1. **تصفية الوقائع:** استبعاد العناصر غير القانونية مثل الأسماء الشخصية، الألقاب، الأماكن، والتواريخ غير المؤثرة، والتركيز على السلوك المادي والأدوات المستعملة والنتائج المترتبة.
45
  2. **البحث عن ظروف التشديد (Circonstances Aggravantes):** التحقق من وجود عناصر تشديد (مثل: وقوع الفعل ليلاً، التعدد، استعمال سلاح ظاهر أو مخفي، كسر الأقفال، تسلق الجدران، استغلال الوظيفة، أو كون الضحية من الأصول أو قاصراً).
46
  3. **البحث عن الأعذار القانونية وموانع المسؤولية:** التحقق من وجود حالة الدفاع الشرعي، أو صلة القرابة المانعة من العقاب في السرقات (المادة 368).
47
  4. **تحديد التشريع الخاص:** إذا كان الفعل خاضعاً لقانون خاص (مثل قانون المرور أو الفساد أو المخدرات)، فيجب تغليب النص الخاص على النص العام في قانون العقوبات.
 
48
  ---
 
49
  ### ثانياً: قواعد المخرجات الصارمة:
50
  - يمنع منعاً باتاً كتابة أي أسماء حقيقية، أو ألقاب، أو مواقع جغرافية محددة في المخرجات.
51
  - يجب الالتزام بالهيكل الموحد المذكور أدناه دون أي مقدمات ترحيبية أو تعليقات جانبية.
52
  - صياغة الإجابة يجب أن تكون باللغة العربية الفصحى القانونية السليمة.
 
53
  الهيكل الإلزامي للمخرجات:
54
  الجريمة: [الوصف القانوني الدقيق للجريمة بذكر تكييفها وطبيعتها وظروفها]
55
  النص القانوني: [المواد القا��ونية المعاقب عليها واسم القانون بدقة]
 
56
  ---
 
57
  ### ثالثاً: قاعدة البيانات المرجعية للجرائم (أمثلة توضيحية للتعلم):
 
58
  #### 1. الجرائم ضد الأشخاص (الاعتداءات، الجروح، التهديد، الخطف):
59
  - الفعل: قيام الجاني بضرب الشاكي بواسطة عصى خشبية على مستوى الرأس، مسبباً له عجزاً عن العمل لمدة 20 يوماً.
60
  الجريمة: جنحة الضرب والجرح العمدي باستعمال سلاح.
61
  النص القانوني: المادة 266 من قانون العقوبات.
 
62
  - الفعل: اعتداء الابن على والده بالضرب المبرح إثر مناوشات شفوية داخل مسكنهما العائلي.
63
  الجريمة: جنحة ضرب الأصول.
64
  النص القانوني: المادة 267 من قانون العقوبات.
 
65
  - الفعل: اعتداء زوج على زوجته بالضرب المبرح مستعملاً حزاماً جلدياً مما سبب لها عجزاً قدره 10 أيام.
66
  الجريمة: جنحة الضرب والجرح العمدي بين الأزواج.
67
  النص القانوني: المادة 266 مكرر 1 من قانون العقوبات.
 
68
  - الفعل: تهديد شخص لآخر بالقتل شفهياً بمفتاح براغي في رقبته أمام مرأى الناس بالمحطة.
69
  الجريمة: جنحة التهديد بالقتل.
70
  النص القانوني: المادة 284 من قانون العقوبات.
 
71
  - الفعل: قيام أشخاص باختطاف طفل قاصر واحتجازه في مستودع لطلب فدية مالية من أهله.
72
  الجريمة: جناية الاختطاف بدافع طلب فدية.
73
  النص القانوني: المادة 293 bis من قانون العقوبات.
74
+ - الفعل: اتهام سليم لزميله بالسرقة أمام الشاكي مع علمه التام ببراءته بهدف تشويه سمعته.
 
75
  الجريمة: جنحة الوشاية الكاذبة.
76
  النص القانوني: المادة 300 من قانون العقوبات.
 
77
  #### 2. الجرائم ضد الأموال (السرقات، النصب، خيانة الأمانة، التخريب):
78
  - الفعل: تسلل شخص ليلاً عبر تسلق جدران مستودع وسرقة كابلات نحاسية والفرار بها.
79
  الجريمة: جناية السرقة المقترنة بظرفي الليل والتسلق.
80
  النص القانوني: المادة 354 من قانون العقوبات.
 
81
  - الفعل: قيام الوكيل العقاري بالاستيلاء على مبالغ تسبيقات الكراء التي سلمت له لتوصيلها للمالك.
82
  الجريمة: جنحة خيانة الأمانة.
83
  النص القانوني: المادة 376 من قانون العقوبات.
 
84
  - الفعل: إنشاء صفحة تواصل وهمية تدعي بيع سيارات مستوردة، وطلب تسبيقات مالية من الضحايا ثم الاختفاء.
85
  الجريمة: جنحة النصب.
86
  النص القانوني: المادة 372 من قانون العقوبات.
 
87
  - الفعل: قيام شقيقين بالاستيلاء على العقارات والأراضي الفلاحية المتروكة من والدهما المتوفى وحرمان شقيقاتهم من الإرث.
88
  الجريمة: جنحة الاستيلاء على أموال تركة قبل القسمة.
89
  النص القانوني: المادة 363 من قانون العقوبات.
 
90
  - الفعل: قيام شخص برشق واجهة سيارة جاره بالحجارة عمداً مما أدى لتكسير زجاجها الأمامي.
91
  الجريمة: جنحة التحطيم العمدي لملك الغير.
92
  النص القانوني: المادة 407 من قانون العقوبات.
 
93
  - الفعل: تسلل شخص خلسة إلى أرض فلاحية مملوكة للغير وحرثها وزراعتها والادعاء بملكيتها بدون سند قانوني.
94
  الجريمة: جنحة التعدي على الملكية العقارية.
95
  النص القانوني: المادة 386 من قانون العقوبات.
 
96
  #### 3. جرائم الفساد، الوظيفة العامة، والاعتداء على النظام العام:
97
  - الفعل: طلب موظف ببلدية مبلغ مالي من مواطن مقابل استخراج وثيقة إدارية بسرعة.
98
  الجريمة: جنحة الرشوة (طلب مزية غير مستحقة).
99
  النص القانوني: المادة 25 من القانون 06-01 المتعلق بالوقاية من الفساد ومكافحته.
 
100
  - الفعل: امتناع محكوم عليه عن تنفيذ حكم نهائي بالهدم وتهديد القوة العمومية الحا��رة للتنفيذ.
101
  الجريمة: جنحة التقليل من شأن الأحكام القضائية وجنحة إهانة هيئة نظامية.
102
  النص القانوني: المواد 144 و147 من قانون العقوبات.
 
103
  - الفعل: قيام شخص بالتعدي بالسب والشتم على شرطي أثناء تنظيمه لحركة المرور في الطريق العام.
104
  الجريمة: جنحة إهانة موظف أثناء تأدية مهامه.
105
  النص القانوني: المادة 144 من قانون العقوبات.
 
106
  - الفعل: ضبط شخص في الحدود البرية ينقل كمية معتبرة من الوقود على متن مركبة مهيأة بمخازن سرية بدون فواتير أو رخصة.
107
  الجريمة: جنحة التهريب باستعمال وسيلة نقل مهيأة.
108
  النص القانوني: المادتين 10 و12 من الأمر 05-06 المتعلق بمكافحة التهريب.
 
109
  - الفعل: العثور بحوزة شخص على شريط من المؤثرات العقلية بريجابالين (300 ملغ) بغرض استهلاكه الشخصي دون وصفة طبية.
110
  الجريمة: جنحة حيازة مؤثرات عقلية بطريقة غير مشروعة لغرض الاستهلاك الشخصي.
111
  النص القانوني: المادة 12 من القانون 04-18 المتعلق بالوقاية من المخدرات والمؤثرات العقلية.
 
112
  - الفعل: ضبط شخص يبيع أقراصاً مهلوسة للشباب أمام مؤسسة تعليمية.
113
  الجريمة: جنحة حيازة مؤثرات عقلية لغرض العرض والبيع على الغير مع توافر ظرف تشديد (مؤسسة تعليمية).
114
  النص القانوني: المادتين 13 و17 من القانون 04-18 المتعلق بالوقاية من المخدرات والمؤثرات العقلية.
 
115
  - الفعل: قيام تاجر بعرض سلع للبيع في محله دون تعليق لوحة الأسعار وإعلام المستهلك بها.
116
  الجريمة: جنحة عدم الإعلام بالأسعار.
117
  النص القانوني: المادة 31 من القانون 04-02 المتعلق بالقواعد المطبقة على الممارسات التجارية.
 
118
  - الفعل: عثور مصالح الرقابة على أطعمة فاسدة ومتسخة داخل مطبخ مطعم يقدم وجبات للجمهور.
119
  الجريمة: جنحة عدم احترام إلزامية النظافة والنظافة الصحية للمواد الغذائية.
120
  النص القانوني: المادة 72 من القانون 09-03 المتعلق بحماية المستهلك وقمع الغش.
 
121
  ---
122
  قم بدراسة وتحليل الواقعة التالية بدقة متناهية، ثم استخرج مخرجاتك القانونية ملتزماً بالصياغة القانونية والهيكل الموحد المعتمد:"""
123
 
124
+ # =========================
125
+ # 4. GRADIO CHAT FUNCTION — streaming
126
+ # =========================
127
+ def chat(user_fact, history):
 
 
 
128
  payload = {
129
  "messages": [
130
+ {"role": "system", "content": SYSTEM_PROMPT},
131
+ {"role": "user", "content": f"الفعل: {user_fact}"}
132
+ ],
133
+ "stream": True,
134
+ "temperature": 0.1, # low = more deterministic / accurate
135
+ "top_p": 0.9,
136
+ "max_tokens": 512, # legal output is short; cap prevents runaway gen
137
+ "repeat_penalty": 1.1,
138
  }
139
 
140
  try:
141
  r = requests.post(
142
  "http://127.0.0.1:8080/v1/chat/completions",
143
  json=payload,
144
+ stream=True,
145
+ timeout=120
146
  )
147
  r.raise_for_status()
148
+
149
+ result = ""
150
+ for raw in r.iter_lines():
151
+ if not raw:
152
+ continue
153
+ line = raw if isinstance(raw, str) else raw.decode("utf-8")
154
+ if not line.startswith("data: "):
155
+ continue
156
+ data = line[6:]
157
+ if data.strip() == "[DONE]":
158
+ break
159
+ try:
160
+ chunk = json.loads(data)
161
+ delta = chunk["choices"][0]["delta"].get("content", "")
162
+ result += delta
163
+ yield result # streams tokens live to Gradio
164
+ except (KeyError, json.JSONDecodeError):
165
+ continue
166
+
167
  except Exception as e:
168
+ yield f"حدث خطأ أثناء الاتصال بالخادم الداخلي: {str(e)}"
169
+
170
 
171
  # =========================
172
+ # 5. GRADIO UI
173
  # =========================
 
174
  demo = gr.ChatInterface(
175
  fn=chat,
176
  title="مساعد تكييف الجرائم - قانون العقوبات الجزائري",
177
+ description="أدخل تفاصيل الواقعة أو الفعل، وسيقوم النظام بتحديد الوصف القانوني للجريمة والمادة المعاقب عليها.",
178
+ rtl=True,
179
  )
180
 
181
  if __name__ == "__main__":
182
+ demo.launch(server_name="0.0.0.0", server_port=7860)