ONYX-APP commited on
Commit
60c253b
·
verified ·
1 Parent(s): 91840f0

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +17 -7
app.py CHANGED
@@ -33,22 +33,32 @@ tokenizer = transformers.AutoTokenizer.from_pretrained(model_path)
33
  generator = ctranslate2.Generator(ct2_model_path, device="cpu")
34
 
35
  def chat_onyx(message, history):
36
- # بناء الـ Prompt
37
  recent_history = history[-3:] if len(history) > 3 else history
38
  prompt = ""
39
- for user_msg, assistant_msg in recent_history:
40
- prompt += f"User: {user_msg}\nAssistant: {assistant_msg}\n"
 
 
 
 
 
 
 
 
 
41
  prompt += f"User: {message}\nAssistant:"
42
 
 
43
  tokens = tokenizer.convert_ids_to_tokens(tokenizer.encode(prompt))
44
 
45
- # 🚀 التعديلات لضبط التكرار والسرعة
46
  step_results = generator.generate_tokens(
47
  tokens,
48
- max_length=60, # قللنا الطول شوي ليكون أسرع بردود الـ Hi
49
  sampling_topk=20,
50
  sampling_temperature=0.7,
51
- repetition_penalty=1.2, # 👈 هاد السر بمنع التكرار
52
  end_token=tokenizer.eos_token
53
  )
54
 
@@ -56,7 +66,7 @@ def chat_onyx(message, history):
56
  for result in step_results:
57
  word = tokenizer.decode([result.token_id])
58
 
59
- # ✋ فحص ذكي: إذا الموديل بلش يمثل دور المستخدم أو يكرر "Assistant:" وقف فوراً
60
  if "User:" in word or "Assistant:" in word or "\n" in word:
61
  break
62
 
 
33
  generator = ctranslate2.Generator(ct2_model_path, device="cpu")
34
 
35
  def chat_onyx(message, history):
36
+ # تقليص الذاكرة لسرعة الاستجابة
37
  recent_history = history[-3:] if len(history) > 3 else history
38
  prompt = ""
39
+
40
+ # 🛠 الحل الجذري لتنسيق Gradio الجديد
41
+ for msg in recent_history:
42
+ # بالنسخ الجديدة msg بكون قاموس فيه role و content
43
+ role = msg["role"]
44
+ content = msg["content"]
45
+ if role == "user":
46
+ prompt += f"User: {content}\n"
47
+ elif role == "assistant":
48
+ prompt += f"Assistant: {content}\n"
49
+
50
  prompt += f"User: {message}\nAssistant:"
51
 
52
+ # تحويل النص لـ Tokens
53
  tokens = tokenizer.convert_ids_to_tokens(tokenizer.encode(prompt))
54
 
55
+ # الـ Streaming باستخدام CTranslate2 مع ضبط التكرار
56
  step_results = generator.generate_tokens(
57
  tokens,
58
+ max_length=100,
59
  sampling_topk=20,
60
  sampling_temperature=0.7,
61
+ repetition_penalty=1.2, # لمنع تكرار الكلام
62
  end_token=tokenizer.eos_token
63
  )
64
 
 
66
  for result in step_results:
67
  word = tokenizer.decode([result.token_id])
68
 
69
+ # فحص لمنع الموديل من تخيل حوار كامل (Stopping Criteria)
70
  if "User:" in word or "Assistant:" in word or "\n" in word:
71
  break
72