ramedde commited on
Commit
44b914a
·
verified ·
1 Parent(s): d95c502

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +56 -17
app.py CHANGED
@@ -1,6 +1,7 @@
1
  import subprocess
2
  import time
3
  import requests
 
4
  import gradio as gr
5
  from huggingface_hub import hf_hub_download
6
 
@@ -21,7 +22,7 @@ server = subprocess.Popen([
21
  "./llama/llama-server",
22
  "-m", MODEL_PATH,
23
 
24
- # smaller context
25
  "-c", "1024",
26
 
27
  # use more CPU threads
@@ -33,39 +34,77 @@ server = subprocess.Popen([
33
  # no GPU on free CPU spaces
34
  "-ngl", "0",
35
 
36
-
37
-
38
  "--host", "0.0.0.0",
39
  "--port", "8080"
40
  ])
41
 
 
 
42
  time.sleep(10)
43
 
44
 
45
  # =========================
46
  # 3. GRADIO CHAT FUNCTION
47
  # =========================
48
- def chat(message, history):
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
49
  payload = {
50
  "messages": [
51
- {"role": "user", "content": message}
52
  ]
53
  }
54
 
55
- r = requests.post(
56
- "http://127.0.0.1:8080/v1/chat/completions",
57
- json=payload,
58
- timeout=300
59
- )
60
-
61
- return r.json()["choices"][0]["message"]["content"]
 
 
 
62
 
63
  # =========================
64
  # 4. GRADIO UI
65
  # =========================
66
- demo = gr.ChatInterface(chat)
 
 
 
 
 
67
 
68
- demo.launch(
69
- server_name="0.0.0.0",
70
- server_port=7860
71
- )
 
 
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
7
 
 
22
  "./llama/llama-server",
23
  "-m", MODEL_PATH,
24
 
25
+ # smaller context to fit the 350M model memory footprint
26
  "-c", "1024",
27
 
28
  # use more CPU threads
 
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
+ "قوانين هامة:\n"
55
+ "- لا تكتب أي أسماء أو ألقاب أو أماكن في الإجابة.\n"
56
+ "- اكتب فقط اسم الجريمة والمادة القانونية مباشرة دون مقدمات.\n\n"
57
+ "أمثلة توضيحية:\n"
58
+ "الفعل: ضرب شخص فسبب له عجز 40 يوم\n"
59
+ "الرد: الضرب والجرح العمدي المادة 266 من قانون العقوبات\n"
60
+ "الفعل: سرق هاتف نقال من محل تجاري\n"
61
+ "الرد: السرقة المادة 350 من قانون العقوبات\n"
62
+ "الفعل: قيادة مركبة وهو في حالة سكر\n"
63
+ "الرد: السياقة في حالة سكر المادة 74 من قانون المرور\n"
64
+ "الفعل: بناء طابق بدون حيازة رخصة بناء\n"
65
+ "الرد: جنحة البناء بدون رخصة المادة 77 من قانون التهيأة والتعمير\n"
66
+ "الفعل: صرف شيك لا يقابله رصيد قائم وقابل للصرف\n"
67
+ "الرد: إصدار شيك بدون رصيد المادة 374 من قانون العقوبات\n"
68
+ "الفعل: تصرف في عتاد بعدما امتنع عن تسديد مبلغ القرض\n"
69
+ "الرد: جنحة تبديد أموال مرهونة المادة 364 من قانون العقوبات"
70
+ )
71
+
72
+ # دمج التوجيهات مع الواقعة التي أدخلها المستخدم حالياً
73
+ full_prompt = (
74
+ f"{system_prompt}\n\n"
75
+ f"الفعل: {user_fact}\n"
76
+ f"الرد:"
77
+ )
78
+
79
  payload = {
80
  "messages": [
81
+ {"role": "user", "content": full_prompt}
82
  ]
83
  }
84
 
85
+ try:
86
+ r = requests.post(
87
+ "http://127.0.0.1:8080/v1/chat/completions",
88
+ json=payload,
89
+ timeout=300
90
+ )
91
+ r.raise_for_status()
92
+ return r.json()["choices"][0]["message"]["content"].strip()
93
+ except Exception as e:
94
+ return f"حدث خطأ أثناء الاتصال بالخادم الداخلي: {str(e)}"
95
 
96
  # =========================
97
  # 4. GRADIO UI
98
  # =========================
99
+ # تم تهيئة واجهة المستخدم للتركيز على إدخال الوقائع واستخراج التكييف القانوني
100
+ demo = gr.ChatInterface(
101
+ fn=chat,
102
+ title="مساعد تكييف الجرائم - قانون العقوبات الجزائري",
103
+ description="أدخل تفاصيل الواقعة أو الفعل، وسيقوم النظام بتحديد الوصف القانوني للجريمة والمادة المعاقب عليها."
104
+ )
105
 
106
+ if __name__ == "__main__":
107
+ demo.launch(
108
+ server_name="0.0.0.0",
109
+ server_port=7860
110
+ )