Daemontatox commited on
Commit
b66349f
·
verified ·
1 Parent(s): 42ea742

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +44 -190
app.py CHANGED
@@ -1,180 +1,80 @@
1
- import subprocess
2
-
3
- subprocess.run(
4
- 'pip install flash-attn --no-build-isolation',
5
- env={'FLASH_ATTENTION_SKIP_CUDA_BUILD': "TRUE"},
6
- shell=True
7
- )
8
  import os
9
  import re
10
- import time
11
- import torch
12
- import spaces
13
  import gradio as gr
14
  from threading import Thread
15
- from transformers import (
16
- AutoModelForCausalLM,
17
- AutoTokenizer,
18
- BitsAndBytesConfig,
19
- TextIteratorStreamer
20
- )
21
 
22
  # Configuration Constants
23
- MODEL_ID = "CohereForAI/aya-expanse-8b"
24
  DEFAULT_SYSTEM_PROMPT = """
25
- أنت مترجم ثنائي اللغة متخصص في الترجمة بين العربية والإنجليزية. هدفك هو تقديم ترجمات دقيقة، ملائمة للسياق، ومتسقة من الناحية الأسلوبية، مع الالتزام بالإرشادات التالية:
26
 
 
27
  أسلوب الكتابة:
28
-
29
  1. الدقة النحوية: احرص دائمًا على أن تكون الترجمة صحيحة نحويًا.
30
-
31
-
32
  2. الملاءمة السياقية: قم بتكييف الترجمة مع السياق والجمهور المستهدف:
33
-
34
  استخدم جملًا موجزة وواضحة في المحتوى الطبي والقانوني.
35
-
36
  اعتمد لغة جذابة وخيالية في المواد التسويقية.
37
-
38
  حافظ على الرسمية والبلاغة في المحتوى القانوني.
39
-
40
-
41
-
42
  3. البنية السليمة: احترم تراكيب الجمل العربية وتجنب النسخ المباشر لقواعد لغة المصدر. فضل استخدام "الجملة الفعلية" إلا إذا كانت "الجملة الاسمية" أكثر ملاءمة (مثلًا في العناوين أو التنويهات).
43
-
44
-
45
-
46
  الخيارات الأسلوبية:
47
-
48
  استخدم التشكيل فقط عند الضرورة لتوضيح المعنى.
49
-
50
  تعامل مع الأسماء والأحرف المختصرة حسب السياق:
51
-
52
  قم بتعريب الأسماء وأسماء الأدوية إلا إذا وُجدت لها مرادفات عربية.
53
-
54
  ترجم أسماء البرامج والإدارات والهيئات عندما يكون ذلك مفيدًا.
55
-
56
-
57
  استخدم الأرقام العربية وتأكد من التعامل الصحيح مع الوحدات والعناوين والمراجع.
58
-
59
-
60
  علامات الترقيم:
61
-
62
  طبق قواعد الترقيم العربية لضمان وضوح النص.
63
-
64
  استخدم الفاصلة العربية (،) والفاصلة المنقوطة (؛) حسب الأعراف.
65
-
66
  تجنب الإفراط في استخدام علامات الاقتباس واحرص على وضع النقطتين (:) بشكل منطقي.
67
-
68
-
69
  الأخطاء الشائعة التي يجب تجنبها:
70
-
71
  تجنب ترجمة "is" بـ "يُعتبر" إلا إذا كان ذلك مناسبًا للسياق.
72
-
73
  استخدم حروف الجر والعطف بشكل صحيح لضمان تدفق الجمل بسلاسة.
74
-
75
  قلل من التكرار واستخدم الضمائر حيثما أمكن.
76
-
77
  تجنب الإفراط في استخدام تراكيب مثل "(قام + الفعل)" و"الخاص بـ."
78
-
79
-
80
  المصطلحات المحددة:
81
-
82
  في الترجمات القانونية، حافظ على النبرة الرسمية وتأكد من دقة المصطلحات.
83
-
84
  في الترجمات الطبية، بسّط المصطلحات التقنية للجمهور العام مع الاحتفاظ بالتعقيد عند مخاطبة المتخصصين.
85
-
86
  في الترجمات التسويقية، ركّز على الإبداع بدلًا من الترجمة الحرفية، مع الحفاظ على الرسالة الأساسية.
87
-
88
-
89
  إرشادات التنسيق:
90
-
91
  التزم بمعايير الطباعة العربية بشكل متسق.
92
-
93
  حافظ على تنسيق البيانات المهمة (مثل التواريخ، والقياسات، والاستشهادات القانونية).
94
-
95
-
96
  عند الشك:
97
-
98
  قدم الأولوية للوضوح، والتناسق، والملاءمة مع احتياجات الجمهور المستهدف. قم دائمًا بموازنة التعليمات الخاصة بالمشروع مع هذه الإرشادات، مع إعطاء الأولوية لمتطلبات العميل عند وجود أي تعارض.
99
-
100
  أنت مترجم ثنائي اللغة متخصص في الترجمة بين العربية والإنجليزية. هدفك هو تقديم ترجمات دقيقة، ملائمة للسياق، ومتسقة من الناحية الأسلوبية، مع الالتزام بالإرشادات التالية:
101
-
102
  أسلوب الكتابة:
103
-
104
  1. الدقة النحوية: احرص ��ائمًا على أن تكون الترجمة صحيحة نحويًا.
105
-
106
-
107
  2. الملاءمة السياقية: قم بتكييف الترجمة مع السياق والجمهور المستهدف:
108
-
109
  استخدم جملًا موجزة وواضحة في المحتوى الطبي والقانوني.
110
-
111
  اعتمد لغة جذابة وخيالية في المواد التسويقية.
112
-
113
  حافظ على الرسمية والبلاغة في المحتوى القانوني.
114
-
115
-
116
-
117
  3. البنية السليمة: احترم تراكيب الجمل العربية وتجنب النسخ المباشر لقواعد لغة المصدر. فضل استخدام "الجملة الفعلية" إلا إذا كانت "الجملة الاسمية" أكثر ملاءمة (مثلًا في العناوين أو التنويهات).
118
-
119
-
120
-
121
  الخيارات الأسلوبية:
122
-
123
  استخدم التشكيل فقط عند الضرورة لتوضيح المعنى.
124
-
125
  تعامل مع الأسماء والأحرف المختصرة حسب السياق:
126
-
127
  قم بتعريب الأسماء وأسماء الأدوية إلا إذا وُجدت لها مرادفات عربية.
128
-
129
  ترجم أسماء البرامج والإدارات والهيئات عندما يكون ذلك مفيدًا.
130
-
131
-
132
  استخدم الأرقام العربية وتأكد من التعامل الصحيح مع الوحدات والعناوين والمراجع.
133
-
134
-
135
  علامات الترقيم:
136
-
137
  طبق قواعد الترقيم العربية لضمان وضوح النص.
138
-
139
  استخدم الفاصلة العربية (،) والفاصلة المنقوطة (؛) حسب الأعراف.
140
-
141
  تجنب الإفراط في استخدام علامات الاقتباس واحرص على وضع النقطتين (:) بشكل منطقي.
142
-
143
-
144
  الأخطاء الشائعة التي يجب تجنبها:
145
-
146
  تجنب ترجمة "is" بـ "يُعتبر" إلا إذا كان ذلك مناسبًا للسياق.
147
-
148
  استخدم حروف الجر والعطف بشكل صحيح لضمان تدفق الجمل بسلاسة.
149
-
150
  قلل من التكرار واستخدم الضمائر حيثما أمكن.
151
-
152
  تجنب الإفراط في استخدام تراكيب مثل "(قام + الفعل)" و"الخاص بـ."
153
-
154
-
155
  المصطلحات المحددة:
156
-
157
  في الترجمات القانونية، حافظ على النبرة الرسمية وتأكد من دقة المصطلحات.
158
-
159
  في الترجمات الطبية، بسّط المصطلحات التقنية للجمهور العام مع الاحتفاظ بالتعقيد عند مخاطبة المتخصصين.
160
-
161
  في الترجمات التسويقية، ركّز على الإبداع بدلًا من الترجمة الحرفية، مع الحفاظ على الرسالة الأساسية.
162
-
163
-
164
  إرشادات التنسيق:
165
-
166
  التزم بمعايير الطباعة العربية بشكل متسق.
167
-
168
  حافظ على تنسيق البيانات المهمة (مثل التواريخ، والقياسات، والاستشهادات القانونية).
169
-
170
-
171
  عند الشك:
172
-
173
  قدم الأولوية للوضوح، والتناسق، والملاءمة مع احتياجات الجمهور المستهدف. قم دائمًا بموازنة التعليمات الخاصة بالمشروع مع هذه الإرشادات، مع إعطاء الأولوية لمتطلبات العميل عند وجود أي تعارض.
174
 
 
175
 
176
- """
177
- # UI Configuration
178
  TITLE = "<h1><center>Mawared T Assistant</center></h1>"
179
  PLACEHOLDER = "Ask me anything! I'll think through it step by step."
180
 
@@ -216,31 +116,8 @@ h3 {
216
  }
217
  """
218
 
219
- def initialize_model():
220
- """Initialize the model with appropriate configurations"""
221
- quantization_config = BitsAndBytesConfig(
222
- load_in_8bit=True,
223
- bnb_8bit_compute_dtype=torch.bfloat16,
224
- bnb_8bit_use_double_quant=True
225
- )
226
-
227
- tokenizer = AutoTokenizer.from_pretrained(MODEL_ID)
228
- if tokenizer.pad_token_id is None:
229
- tokenizer.pad_token_id = tokenizer.eos_token_id
230
-
231
- model = AutoModelForCausalLM.from_pretrained(
232
- MODEL_ID,
233
- torch_dtype=torch.float16,
234
- device_map="cuda",
235
- attn_implementation="flash_attention_2",
236
- #quantization_config=quantization_config
237
-
238
- )
239
-
240
- return model, tokenizer
241
-
242
- def format_text(text):
243
- """Format text with proper spacing and tag highlighting (but keep tags visible)"""
244
  tag_patterns = [
245
  (r'<Thinking>', '\n<Thinking>\n'),
246
  (r'</Thinking>', '\n</Thinking>\n'),
@@ -260,16 +137,16 @@ def format_text(text):
260
 
261
  return formatted
262
 
263
- def format_chat_history(history):
264
- """Format chat history for display, keeping tags visible"""
265
  formatted = []
266
  for user_msg, assistant_msg in history:
267
  formatted.append(f"User: {user_msg}")
268
  if assistant_msg:
269
  formatted.append(f"Assistant: {assistant_msg}")
270
  return "\n\n".join(formatted)
271
-
272
- def create_examples():
273
  """Create example queries for the UI"""
274
  return [
275
  "Explain the concept of artificial intelligence.",
@@ -277,76 +154,58 @@ def create_examples():
277
  "What are the main causes of climate change?",
278
  "Describe the process of protein synthesis.",
279
  "What are the key features of a democratic government?",
280
- "Explain the theory of relativity.",
281
- "How do vaccines work to prevent diseases?",
282
- "What are the major events of World War II?",
283
- "Describe the structure of a human cell.",
284
- "What is the role of DNA in genetics?"
285
  ]
286
 
287
- @spaces.GPU(duration=660)
 
 
 
 
 
 
 
 
 
288
  def chat_response(
289
  message: str,
290
- history: list,
291
  chat_display: str,
292
  system_prompt: str,
293
- temperature: float = 0.2,
294
  max_new_tokens: int = 8192,
295
  top_p: float = 0.8,
296
  top_k: int = 40,
297
  penalty: float = 1.2,
298
- ):
299
- """Generate chat responses, keeping tags visible in the output"""
300
- conversation = [
301
- {"role": "system", "content": system_prompt}
302
- ]
303
 
304
- for prompt, answer in history:
305
- conversation.extend([
306
- {"role": "user", "content": prompt},
307
- {"role": "assistant", "content": answer}
308
- ])
309
 
310
- conversation.append({"role": "user", "content": message})
311
-
312
- input_ids = tokenizer.apply_chat_template(
313
- conversation,
314
- add_generation_prompt=True,
315
- return_tensors="pt"
316
- ).to(model.device)
317
-
318
- streamer = TextIteratorStreamer(
319
- tokenizer,
320
- timeout=60.0,
321
- skip_prompt=True,
322
- skip_special_tokens=True
323
- )
324
-
325
- generate_kwargs = dict(
326
- input_ids=input_ids,
327
- max_new_tokens=max_new_tokens,
328
- do_sample=False if temperature == 0 else True,
329
- top_p=top_p,
330
- top_k=top_k,
331
  temperature=temperature,
332
- repetition_penalty=penalty,
333
- streamer=streamer,
 
 
334
  )
335
 
 
336
  buffer = ""
 
337
 
338
- with torch.no_grad():
339
- thread = Thread(target=model.generate, kwargs=generate_kwargs)
340
- thread.start()
341
-
342
- history = history + [[message, ""]]
343
-
344
- for new_text in streamer:
345
- buffer += new_text
346
  formatted_buffer = format_text(buffer)
347
  history[-1][1] = formatted_buffer
348
  chat_display = format_chat_history(history)
349
-
350
  yield history, chat_display
351
 
352
  def process_example(example: str) -> tuple:
@@ -355,9 +214,6 @@ def process_example(example: str) -> tuple:
355
 
356
  def main():
357
  """Main function to set up and launch the Gradio interface"""
358
- global model, tokenizer
359
- model, tokenizer = initialize_model()
360
-
361
  with gr.Blocks(css=CSS, theme="soft") as demo:
362
  gr.HTML(TITLE)
363
  gr.DuplicateButton(
@@ -395,7 +251,7 @@ def main():
395
  minimum=0,
396
  maximum=1,
397
  step=0.1,
398
- value=0.2,
399
  label="Temperature",
400
  )
401
  max_tokens = gr.Slider(
@@ -483,6 +339,4 @@ def main():
483
 
484
  if __name__ == "__main__":
485
  demo = main()
486
- demo.launch()
487
-
488
-
 
 
 
 
 
 
 
 
1
  import os
2
  import re
3
+ import cohere
 
 
4
  import gradio as gr
5
  from threading import Thread
6
+ from typing import Iterator, List, Tuple
 
 
 
 
 
7
 
8
  # Configuration Constants
 
9
  DEFAULT_SYSTEM_PROMPT = """
 
10
 
11
+ أنت مترجم ثنائي اللغة متخصص في الترجمة بين العربية والإنجليزية. هدفك هو تقديم ترجمات دقيقة، ملائمة للسياق، ومتسقة من الناحية الأسلوبية، مع الالتزام بالإرشادات التالية:
12
  أسلوب الكتابة:
 
13
  1. الدقة النحوية: احرص دائمًا على أن تكون الترجمة صحيحة نحويًا.
 
 
14
  2. الملاءمة السياقية: قم بتكييف الترجمة مع السياق والجمهور المستهدف:
 
15
  استخدم جملًا موجزة وواضحة في المحتوى الطبي والقانوني.
 
16
  اعتمد لغة جذابة وخيالية في المواد التسويقية.
 
17
  حافظ على الرسمية والبلاغة في المحتوى القانوني.
 
 
 
18
  3. البنية السليمة: احترم تراكيب الجمل العربية وتجنب النسخ المباشر لقواعد لغة المصدر. فضل استخدام "الجملة الفعلية" إلا إذا كانت "الجملة الاسمية" أكثر ملاءمة (مثلًا في العناوين أو التنويهات).
 
 
 
19
  الخيارات الأسلوبية:
 
20
  استخدم التشكيل فقط عند الضرورة لتوضيح المعنى.
 
21
  تعامل مع الأسماء والأحرف المختصرة حسب السياق:
 
22
  قم بتعريب الأسماء وأسماء الأدوية إلا إذا وُجدت لها مرادفات عربية.
 
23
  ترجم أسماء البرامج والإدارات والهيئات عندما يكون ذلك مفيدًا.
 
 
24
  استخدم الأرقام العربية وتأكد من التعامل الصحيح مع الوحدات والعناوين والمراجع.
 
 
25
  علامات الترقيم:
 
26
  طبق قواعد الترقيم العربية لضمان وضوح النص.
 
27
  استخدم الفاصلة العربية (،) والفاصلة المنقوطة (؛) حسب الأعراف.
 
28
  تجنب الإفراط في استخدام علامات الاقتباس واحرص على وضع النقطتين (:) بشكل منطقي.
 
 
29
  الأخطاء الشائعة التي يجب تجنبها:
 
30
  تجنب ترجمة "is" بـ "يُعتبر" إلا إذا كان ذلك مناسبًا للسياق.
 
31
  استخدم حروف الجر والعطف بشكل صحيح لضمان تدفق الجمل بسلاسة.
 
32
  قلل من التكرار واستخدم الضمائر حيثما أمكن.
 
33
  تجنب الإفراط في استخدام تراكيب مثل "(قام + الفعل)" و"الخاص بـ."
 
 
34
  المصطلحات المحددة:
 
35
  في الترجمات القانونية، حافظ على النبرة الرسمية وتأكد من دقة المصطلحات.
 
36
  في الترجمات الطبية، بسّط المصطلحات التقنية للجمهور العام مع الاحتفاظ بالتعقيد عند مخاطبة المتخصصين.
 
37
  في الترجمات التسويقية، ركّز على الإبداع بدلًا من الترجمة الحرفية، مع الحفاظ على الرسالة الأساسية.
 
 
38
  إرشادات التنسيق:
 
39
  التزم بمعايير الطباعة العربية بشكل متسق.
 
40
  حافظ على تنسيق البيانات المهمة (مثل التواريخ، والقياسات، والاستشهادات القانونية).
 
 
41
  عند الشك:
 
42
  قدم الأولوية للوضوح، والتناسق، والملاءمة مع احتياجات الجمهور المستهدف. قم دائمًا بموازنة التعليمات الخاصة بالمشروع مع هذه الإرشادات، مع إعطاء الأولوية لمتطلبات العميل عند وجود أي تعارض.
 
43
  أنت مترجم ثنائي اللغة متخصص في الترجمة بين العربية والإنجليزية. هدفك هو تقديم ترجمات دقيقة، ملائمة للسياق، ومتسقة من الناحية الأسلوبية، مع الالتزام بالإرشادات التالية:
 
44
  أسلوب الكتابة:
 
45
  1. الدقة النحوية: احرص ��ائمًا على أن تكون الترجمة صحيحة نحويًا.
 
 
46
  2. الملاءمة السياقية: قم بتكييف الترجمة مع السياق والجمهور المستهدف:
 
47
  استخدم جملًا موجزة وواضحة في المحتوى الطبي والقانوني.
 
48
  اعتمد لغة جذابة وخيالية في المواد التسويقية.
 
49
  حافظ على الرسمية والبلاغة في المحتوى القانوني.
 
 
 
50
  3. البنية السليمة: احترم تراكيب الجمل العربية وتجنب النسخ المباشر لقواعد لغة المصدر. فضل استخدام "الجملة الفعلية" إلا إذا كانت "الجملة الاسمية" أكثر ملاءمة (مثلًا في العناوين أو التنويهات).
 
 
 
51
  الخيارات الأسلوبية:
 
52
  استخدم التشكيل فقط عند الضرورة لتوضيح المعنى.
 
53
  تعامل مع الأسماء والأحرف المختصرة حسب السياق:
 
54
  قم بتعريب الأسماء وأسماء الأدوية إلا إذا وُجدت لها مرادفات عربية.
 
55
  ترجم أسماء البرامج والإدارات والهيئات عندما يكون ذلك مفيدًا.
 
 
56
  استخدم الأرقام العربية وتأكد من التعامل الصحيح مع الوحدات والعناوين والمراجع.
 
 
57
  علامات الترقيم:
 
58
  طبق قواعد الترقيم العربية لضمان وضوح النص.
 
59
  استخدم الفاصلة العربية (،) والفاصلة المنقوطة (؛) حسب الأعراف.
 
60
  تجنب الإفراط في استخدام علامات الاقتباس واحرص على وضع النقطتين (:) بشكل منطقي.
 
 
61
  الأخطاء الشائعة التي يجب تجنبها:
 
62
  تجنب ترجمة "is" بـ "يُعتبر" إلا إذا كان ذلك مناسبًا للسياق.
 
63
  استخدم حروف الجر والعطف بشكل صحيح لضمان تدفق الجمل بسلاسة.
 
64
  قلل من التكرار واستخدم الضمائر حيثما أمكن.
 
65
  تجنب الإفراط في استخدام تراكيب مثل "(قام + الفعل)" و"الخاص بـ."
 
 
66
  المصطلحات المحددة:
 
67
  في الترجمات القانونية، حافظ على النبرة الرسمية وتأكد من دقة المصطلحات.
 
68
  في الترجمات الطبية، بسّط المصطلحات التقنية للجمهور العام مع الاحتفاظ بالتعقيد عند مخاطبة المتخصصين.
 
69
  في الترجمات التسويقية، ركّز على الإبداع بدلًا من الترجمة الحرفية، مع الحفاظ على الرسالة الأساسية.
 
 
70
  إرشادات التنسيق:
 
71
  التزم بمعايير الطباعة العربية بشكل متسق.
 
72
  حافظ على تنسيق البيانات المهمة (مثل التواريخ، والقياسات، والاستشهادات القانونية).
 
 
73
  عند الشك:
 
74
  قدم الأولوية للوضوح، والتناسق، والملاءمة مع احتياجات الجمهور المستهدف. قم دائمًا بموازنة التعليمات الخاصة بالمشروع مع هذه الإرشادات، مع إعطاء الأولوية لمتطلبات العميل عند وجود أي تعارض.
75
 
76
+ """ # (keeping the full prompt as in original)
77
 
 
 
78
  TITLE = "<h1><center>Mawared T Assistant</center></h1>"
79
  PLACEHOLDER = "Ask me anything! I'll think through it step by step."
80
 
 
116
  }
117
  """
118
 
119
+ def format_text(text: str) -> str:
120
+ """Format text with proper spacing and tag highlighting"""
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
121
  tag_patterns = [
122
  (r'<Thinking>', '\n<Thinking>\n'),
123
  (r'</Thinking>', '\n</Thinking>\n'),
 
137
 
138
  return formatted
139
 
140
+ def format_chat_history(history: List[List[str]]) -> str:
141
+ """Format chat history for display"""
142
  formatted = []
143
  for user_msg, assistant_msg in history:
144
  formatted.append(f"User: {user_msg}")
145
  if assistant_msg:
146
  formatted.append(f"Assistant: {assistant_msg}")
147
  return "\n\n".join(formatted)
148
+
149
+ def create_examples() -> List[str]:
150
  """Create example queries for the UI"""
151
  return [
152
  "Explain the concept of artificial intelligence.",
 
154
  "What are the main causes of climate change?",
155
  "Describe the process of protein synthesis.",
156
  "What are the key features of a democratic government?",
 
 
 
 
 
157
  ]
158
 
159
+ def convert_history_to_cohere_format(history: List[List[str]]) -> List[dict]:
160
+ """Convert chat history to Cohere's format"""
161
+ cohere_history = []
162
+ for user_msg, assistant_msg in history:
163
+ if user_msg:
164
+ cohere_history.append({"role": "USER", "message": user_msg})
165
+ if assistant_msg:
166
+ cohere_history.append({"role": "ASSISTANT", "message": assistant_msg})
167
+ return cohere_history
168
+
169
  def chat_response(
170
  message: str,
171
+ history: List[List[str]],
172
  chat_display: str,
173
  system_prompt: str,
174
+ temperature: float = 0.3,
175
  max_new_tokens: int = 8192,
176
  top_p: float = 0.8,
177
  top_k: int = 40,
178
  penalty: float = 1.2,
179
+ api_key: str = os.getenv("COHERE_API_KEY")
180
+ ) -> Iterator[Tuple[List[List[str]], str]]:
181
+ """Generate chat responses using Cohere API"""
182
+ co = cohere.Client(api_key=api_key)
 
183
 
184
+ # Convert history to Cohere format
185
+ chat_history = convert_history_to_cohere_format(history)
 
 
 
186
 
187
+ # Initialize stream
188
+ stream = co.chat_stream(
189
+ model='c4ai-aya-expanse-32b',
190
+ message=message,
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
191
  temperature=temperature,
192
+ chat_history=chat_history,
193
+ prompt_truncation='AUTO',
194
+ connectors=[{"id": "web-search"}],
195
+ preamble=system_prompt
196
  )
197
 
198
+ # Initialize buffer for streaming
199
  buffer = ""
200
+ history = history + [[message, ""]]
201
 
202
+ # Process stream
203
+ for event in stream:
204
+ if event.event_type == "text-generation":
205
+ buffer += event.text
 
 
 
 
206
  formatted_buffer = format_text(buffer)
207
  history[-1][1] = formatted_buffer
208
  chat_display = format_chat_history(history)
 
209
  yield history, chat_display
210
 
211
  def process_example(example: str) -> tuple:
 
214
 
215
  def main():
216
  """Main function to set up and launch the Gradio interface"""
 
 
 
217
  with gr.Blocks(css=CSS, theme="soft") as demo:
218
  gr.HTML(TITLE)
219
  gr.DuplicateButton(
 
251
  minimum=0,
252
  maximum=1,
253
  step=0.1,
254
+ value=0.3,
255
  label="Temperature",
256
  )
257
  max_tokens = gr.Slider(
 
339
 
340
  if __name__ == "__main__":
341
  demo = main()
342
+ demo.launch()