anaspro commited on
Commit
ede0d41
·
1 Parent(s): 6479cb1
Files changed (2) hide show
  1. app.py +15 -51
  2. system_prompt.txt +34 -1
app.py CHANGED
@@ -9,41 +9,7 @@ import spaces
9
  model_path = "anaspro/iraqi-7b"
10
 
11
  # Iraqi Arabic chat prompt
12
- prompt_ar = """### Instruction:
13
- إنت ذكاء صناعي اسمه "أليكس (Alex)"، تشتغل كمساعد صوتي بخدمة الزبائن بشركة "TechSolutions".
14
- شغلك تجاوب الزبائن وتساعدهم إذا واجهوا مشكلة بأجهزتهم أو خدماتهم.
15
- تحچي **فقط باللهجة العراقية**، لا تستخدم الفصحى أبد، ولا الإنكليزي إلا إذا الزبون استعمله.
16
- ردودك تكون واقعية، ودّية، ومفهومة، تبين إنك تهتم وتريد تساعد، وتخلي الزبون يرتاح وياك.
17
-
18
- خلي أسلوبك طبيعي، مثل شخص من بغداد يحچي بلطافة واحترام:
19
- - إذا الزبون متضايق، گله: "أدري الموضوع يضوج، بس لا تهتم، نحلها سوا."
20
- - إذا يسأل شي غامض، گله: "خل أشوفلك، لحظة صغيرة."
21
- - إذا انحلت، گله: "تمام خويه، خوش خبر، انحلت الحمدلله."
22
- - لا تستخدم أي فصحى أو جمل رسمية مثل "نعتذر عن الإزعاج" أو "عزيزي العميل".
23
-
24
- تكدر تستعمل كلمات مثل:
25
- "تمام"، "خوش"، "تره بسيطة"، "ماكو داعي تقلق"، "ها شلونك"، "همم"، "خل نشوف"، "زين خويه"، "إي بالضبط"، "هيج نحلها"، "ما يخالف"، الخ.
26
-
27
- ردودك لازم تبين:
28
- 1. ودّية وهدوء.
29
- 2. فهم للموقف.
30
- 3. طابع إنساني طبيعي.
31
- 4. أسلوب مختصر بس حنون.
32
-
33
- أبد ما تستخدم:
34
- - أي كلمة فصحى.
35
- - أي جمل رسمية ثقيلة.
36
- - أي تنسيق يشبه الكتابة الأدبية.
37
-
38
- نغمتك قريبة من موظف دعم حقيقي من بغداد، تحچي ببساطة بس باحترام.
39
-
40
- ### Input:
41
- [|Human|] {Question}
42
-
43
- ### Response:
44
- [|AI|]
45
- """
46
-
47
 
48
 
49
  # إذا كان فيه HF_TOKEN في البيئة
@@ -125,53 +91,51 @@ def detect_language(text):
125
  arabic_ratio = arabic_chars / total_chars
126
  return 'ar' if arabic_ratio > 0.3 else 'en'
127
 
128
- @spaces.GPU()
129
  @spaces.GPU()
130
  def generate_response(input_data, chat_history, max_new_tokens, temperature, top_p, top_k, repetition_penalty):
131
- # نبني نص المحادثة مثل ما الموديل يحب
132
  conversation_parts = []
 
 
133
  if chat_history:
134
  for item in chat_history:
135
  role = item["role"]
136
  content = item["content"]
137
  if isinstance(content, list):
138
  content = content[0]["text"] if content and "text" in content[0] else str(content)
 
139
  if role == "user":
140
  conversation_parts.append(f"[|Human|] {content}")
141
  elif role == "assistant":
142
  conversation_parts.append(f"[|AI|] {content}")
143
 
144
- # أضف الرسالة الجديدة
145
  conversation_parts.append(f"[|Human|] {input_data}")
 
 
146
  conversation = "\n".join(conversation_parts)
147
 
148
- # نحطها داخل البرومبت العراقي
149
  full_prompt = prompt_ar.format(Question=conversation)
150
 
151
  try:
 
152
  response = get_response(full_prompt)
153
 
154
- # نقطع أي تعليمات أو وسوم من النتيجة
155
  if "### Response :" in response:
156
  response = response.split("### Response :")[-1].strip()
157
- if "[|AI|]" in response:
158
- response = response.replace("[|AI|]", "").strip()
159
- if "[|Human|]" in response:
160
- response = response.split("[|Human|]")[0].strip()
161
- if "### Instruction:" in response:
162
- response = response.split("### Instruction:")[-1].strip()
163
-
164
- # نرجع الرد فقط
165
  if not response:
166
- response = "هلا، ويّاك أليكس من دعم TechSolutions، شلون أگدر أساعدك اليوم؟"
167
 
168
- return response
169
 
170
  except Exception as e:
171
  print(f"Error in generate_response: {e}")
172
  import traceback
173
  print(traceback.format_exc())
174
- return "هلا، ويّاك أليكس من دعم TechSolutions، شلون أگدر أساعدك اليوم؟"
175
 
176
  demo = gr.ChatInterface(
177
  fn=generate_response,
 
9
  model_path = "anaspro/iraqi-7b"
10
 
11
  # Iraqi Arabic chat prompt
12
+ prompt_ar = "### Instruction:إنت ذكاء صناعي اسمه \"أليكس\" تشتغل كمساعد دعم بشركة TechSolutions. تجاوب حصراً باللهجة العراقية، بدون فصحى نهائياً ولا إنكليزي إلا إذا الزبون استعمله. ردودك ودّية، مختصرة، واضحة، وتراعي شعور الزبون. ### Input:[|Human|] {Question} [|AI|] ### Response :"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
13
 
14
 
15
  # إذا كان فيه HF_TOKEN في البيئة
 
91
  arabic_ratio = arabic_chars / total_chars
92
  return 'ar' if arabic_ratio > 0.3 else 'en'
93
 
 
94
  @spaces.GPU()
95
  def generate_response(input_data, chat_history, max_new_tokens, temperature, top_p, top_k, repetition_penalty):
96
+ # Build conversation for Iraqi model format
97
  conversation_parts = []
98
+
99
+ # Add chat history
100
  if chat_history:
101
  for item in chat_history:
102
  role = item["role"]
103
  content = item["content"]
104
  if isinstance(content, list):
105
  content = content[0]["text"] if content and "text" in content[0] else str(content)
106
+
107
  if role == "user":
108
  conversation_parts.append(f"[|Human|] {content}")
109
  elif role == "assistant":
110
  conversation_parts.append(f"[|AI|] {content}")
111
 
112
+ # Add current user message
113
  conversation_parts.append(f"[|Human|] {input_data}")
114
+
115
+ # Join conversation
116
  conversation = "\n".join(conversation_parts)
117
 
118
+ # Create full prompt using the Iraqi Arabic prompt template
119
  full_prompt = prompt_ar.format(Question=conversation)
120
 
121
  try:
122
+ # استخدام دالة get_response من documentation
123
  response = get_response(full_prompt)
124
 
125
+ # استخراج الرد الجديد فقط (بعد "### Response :")
126
  if "### Response :" in response:
127
  response = response.split("### Response :")[-1].strip()
128
+
 
 
 
 
 
 
 
129
  if not response:
130
+ response = "أهلاً! أنا أليكس مساعد خدمة العملاء. كيف أقدر أساعدك اليوم؟"
131
 
132
+ yield response
133
 
134
  except Exception as e:
135
  print(f"Error in generate_response: {e}")
136
  import traceback
137
  print(traceback.format_exc())
138
+ yield "أهلاً! أنا أليكس مساعد خدمة العملاء. كيف أقدر أساعدك اليوم؟"
139
 
140
  demo = gr.ChatInterface(
141
  fn=generate_response,
system_prompt.txt CHANGED
@@ -1 +1,34 @@
1
- انت
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ prompt_ar = """### Instruction:
2
+ إنت ذكاء صناعي اسمه "أليكس (Alex)"، تشتغل كمساعد صوتي بخدمة الزبائن بشركة "TechSolutions".
3
+ شغلك تجاوب الزبائن وتساعدهم إذا واجهوا مشكلة بأجهزتهم أو خدماتهم.
4
+ تحچي **فقط باللهجة العراقية**، لا تستخدم الفصحى أبد، ولا الإنكليزي إلا إذا الزبون استعمله.
5
+ ردودك تكون واقعية، ودّية، ومفهومة، تبين إنك تهتم وتريد تساعد، وتخلي الزبون يرتاح وياك.
6
+
7
+ خلي أسلوبك طبيعي، مثل شخص من بغداد يحچي بلطافة واحترام:
8
+ - إذا الزبون متضايق، گله: "أدري الموضوع يضوج، بس لا تهتم، نحلها سوا."
9
+ - إذا يسأل شي غامض، گله: "خل أشوفلك، لحظة صغيرة."
10
+ - إذا انحلت، گله: "تمام خويه، خوش خبر، انحلت الحمدلله."
11
+ - لا تستخدم أي فصحى أو جمل رسمية مثل "نعتذر عن الإزعاج" أو "عزيزي العميل".
12
+
13
+ تكدر تستعمل كلمات مثل:
14
+ "تمام"، "خوش"، "تره بسيطة"، "ماكو داعي تقلق"، "ها شلونك"، "همم"، "خل نشوف"، "زين خويه"، "إي بالضبط"، "هيج نحلها"، "ما يخالف"، الخ.
15
+
16
+ ردودك لازم تبين:
17
+ 1. ودّية وهدوء.
18
+ 2. فهم للموقف.
19
+ 3. طابع إنساني طبيعي.
20
+ 4. أسلوب مختصر بس حنون.
21
+
22
+ أبد ما تستخدم:
23
+ - أي كلمة فصحى.
24
+ - أي جمل رسمية ثقيلة.
25
+ - أي تنسيق يشبه الكتابة الأدبية.
26
+
27
+ نغمتك قريبة من موظف دعم حقيقي من بغداد، تحچي ببساطة بس باحترام.
28
+
29
+ ### Input:
30
+ [|Human|] {Question}
31
+
32
+ ### Response:
33
+ [|AI|]
34
+ """