Daemontatox commited on
Commit
07aeca6
·
verified ·
1 Parent(s): 1ab4db2

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +40 -15
app.py CHANGED
@@ -1,5 +1,3 @@
1
- modify the code to allow the send button to work with enter and make other necessary optimizations.
2
-
3
  import os
4
  import re
5
  import cohere
@@ -14,7 +12,7 @@ DEFAULT_SYSTEM_PROMPT = """
14
  2. الملاءمة السياقية: قم بتكييف الترجمة مع السياق والجمهور المستهدف:
15
  استخدم جملًا موجزة وواضحة في المحتوى الطبي والقانوني.
16
  اعتمد لغة جذابة وخيالية في المواد التسويقية.
17
- حافظ على الرسمية والبلاغة في المحتوى القانوني.
18
  3. البنية السليمة: احترم تراكيب الجمل العربية وتجنب النسخ المباشر لقواعد لغة المصدر. فضل استخدام "الجملة الفعلية" إلا إذا كانت "الجملة الاسمية" أكثر ملاءمة (مثلًا في العناوين أو التنويهات).
19
  الخيارات الأسلوبية:
20
  استخدم التشكيل فقط عند الضرورة لتوضيح المعنى.
@@ -40,10 +38,10 @@ DEFAULT_SYSTEM_PROMPT = """
40
  حافظ على تنسيق البيانات المهمة (مثل التواريخ، والقياسات، والاستشهادات القانونية).
41
  عند الشك:
42
  قدم الأولوية للوضوح، والتناسق، والملاءمة مع احتياجات الجمهور المستهدف. قم دائمًا بموازنة التعليمات الخاصة بالمشروع مع هذه الإرشادات، مع إعطاء الأولوية لمتطلبات العميل عند وجود أي تعارض.
43
- """ # (keeping the full prompt as in original)
44
 
45
  TITLE = "<h1><center>Mawared T Assistant</center></h1>"
46
- PLACEHOLDER = "Ask me anything! I'll think through it step by step."
47
 
48
  CSS = """
49
  .duplicate-button {
@@ -81,8 +79,17 @@ h3 {
81
  height: 500px !important;
82
  overflow-y: auto !important;
83
  }
 
 
 
 
 
84
  """
85
 
 
 
 
 
86
  def format_text(text: str) -> str:
87
  """Format text with proper spacing and tag highlighting"""
88
  tag_patterns = [
@@ -116,11 +123,11 @@ def format_chat_history(history: List[List[str]]) -> str:
116
  def create_examples() -> List[str]:
117
  """Create example queries for the UI"""
118
  return [
119
- "Explain the concept of artificial intelligence.",
120
- "How does photosynthesis work?",
121
- "What are the main causes of climate change?",
122
- "Describe the process of protein synthesis.",
123
- "What are the key features of a democratic government?",
124
  ]
125
 
126
  def convert_history_to_cohere_format(history: List[List[str]]) -> List[dict]:
@@ -138,7 +145,7 @@ def chat_response(
138
  history: List[List[str]],
139
  chat_display: str,
140
  system_prompt: str,
141
- temperature: float = 0.2,
142
  max_new_tokens: int = 8192,
143
  top_p: float = 0.8,
144
  top_k: int = 40,
@@ -200,14 +207,15 @@ def main():
200
  chat_display = gr.TextArea(
201
  value="",
202
  label="Chat History",
203
- interactive=AttributeError,
204
  elem_classes=["chat-area"],
205
  )
206
 
207
  message = gr.TextArea(
208
  placeholder=PLACEHOLDER,
209
  label="Your message",
210
- lines=5
 
211
  )
212
 
213
  with gr.Row():
@@ -224,7 +232,7 @@ def main():
224
  minimum=0,
225
  maximum=1,
226
  step=0.1,
227
- value=0.2,
228
  label="Temperature",
229
  )
230
  max_tokens = gr.Slider(
@@ -264,6 +272,23 @@ def main():
264
  cache_examples=False,
265
  )
266
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
267
  # Set up event handlers
268
  submit_click = submit.click(
269
  chat_response,
@@ -282,7 +307,7 @@ def main():
282
  show_progress=True,
283
  )
284
 
285
- # Bind Enter key to submit
286
  message.submit(
287
  chat_response,
288
  inputs=[
 
 
 
1
  import os
2
  import re
3
  import cohere
 
12
  2. الملاءمة السياقية: قم بتكييف الترجمة مع السياق والجمهور المستهدف:
13
  استخدم جملًا موجزة وواضحة في المحتوى الطبي والقانوني.
14
  اعتمد لغة جذابة وخيالية في المواد التسويقية.
15
+ حافظ على الرسمية والبلاغية في المحتوى القانوني.
16
  3. البنية السليمة: احترم تراكيب الجمل العربية وتجنب النسخ المباشر لقواعد لغة المصدر. فضل استخدام "الجملة الفعلية" إلا إذا كانت "الجملة الاسمية" أكثر ملاءمة (مثلًا في العناوين أو التنويهات).
17
  الخيارات الأسلوبية:
18
  استخدم التشكيل فقط عند الضرورة لتوضيح المعنى.
 
38
  حافظ على تنسيق البيانات المهمة (مثل التواريخ، والقياسات، والاستشهادات القانونية).
39
  عند الشك:
40
  قدم الأولوية للوضوح، والتناسق، والملاءمة مع احتياجات الجمهور المستهدف. قم دائمًا بموازنة التعليمات الخاصة بالمشروع مع هذه الإرشادات، مع إعطاء الأولوية لمتطلبات العميل عند وجود أي تعارض.
41
+ """
42
 
43
  TITLE = "<h1><center>Mawared T Assistant</center></h1>"
44
+ PLACEHOLDER = "اسأل عن أي شيء! سأفكر فيه خطوة بخطوة."
45
 
46
  CSS = """
47
  .duplicate-button {
 
79
  height: 500px !important;
80
  overflow-y: auto !important;
81
  }
82
+ .arabic-input {
83
+ direction: rtl;
84
+ text-align: right;
85
+ font-family: 'Arabic', Arial, sans-serif;
86
+ }
87
  """
88
 
89
+ def is_arabic_text(text: str) -> bool:
90
+ """Detect if the text contains Arabic characters"""
91
+ return any('\u0600' <= char <= '\u06FF' for char in text)
92
+
93
  def format_text(text: str) -> str:
94
  """Format text with proper spacing and tag highlighting"""
95
  tag_patterns = [
 
123
  def create_examples() -> List[str]:
124
  """Create example queries for the UI"""
125
  return [
126
+ "اشرح مفهوم الذكاء الاصطناعي",
127
+ "كيف تعمل عملية التمثيل الضوئي؟",
128
+ "ما هي الأسباب الرئيسية لتغير المناخ؟",
129
+ "صف عملية تخليق البروتين",
130
+ "ما هي الميزات الرئيسية للحكومة الديمقراطية؟",
131
  ]
132
 
133
  def convert_history_to_cohere_format(history: List[List[str]]) -> List[dict]:
 
145
  history: List[List[str]],
146
  chat_display: str,
147
  system_prompt: str,
148
+ temperature: float = 0.3,
149
  max_new_tokens: int = 8192,
150
  top_p: float = 0.8,
151
  top_k: int = 40,
 
207
  chat_display = gr.TextArea(
208
  value="",
209
  label="Chat History",
210
+ interactive=False,
211
  elem_classes=["chat-area"],
212
  )
213
 
214
  message = gr.TextArea(
215
  placeholder=PLACEHOLDER,
216
  label="Your message",
217
+ lines=3,
218
+ elem_classes=["message-input"]
219
  )
220
 
221
  with gr.Row():
 
232
  minimum=0,
233
  maximum=1,
234
  step=0.1,
235
+ value=0.3,
236
  label="Temperature",
237
  )
238
  max_tokens = gr.Slider(
 
272
  cache_examples=False,
273
  )
274
 
275
+ # Function to dynamically add RTL class for Arabic text
276
+ js_rtl_handler = """
277
+ function updateTextDirection(textArea) {
278
+ const text = textArea.value;
279
+ const containsArabic = /[\u0600-\u06FF]/.test(text);
280
+
281
+ if (containsArabic) {
282
+ textArea.classList.add('arabic-input');
283
+ } else {
284
+ textArea.classList.remove('arabic-input');
285
+ }
286
+ }
287
+ """
288
+
289
+ # Attach RTL support to message input
290
+ message.change(None, inputs=message, js=js_rtl_handler)
291
+
292
  # Set up event handlers
293
  submit_click = submit.click(
294
  chat_response,
 
307
  show_progress=True,
308
  )
309
 
310
+ # Bind Enter key to submit with Shift+Enter for new line
311
  message.submit(
312
  chat_response,
313
  inputs=[