anaspro commited on
Commit
320dd53
·
1 Parent(s): 5c7e3f7
Files changed (1) hide show
  1. app.py +16 -3
app.py CHANGED
@@ -123,6 +123,9 @@ def get_response(text, tokenizer=tokenizer, model=model):
123
  @spaces.GPU()
124
  def generate_response(input_data, chat_history, max_new_tokens, temperature, top_p, top_k, repetition_penalty):
125
  try:
 
 
 
126
  # Build messages for Gemma format
127
  messages = []
128
 
@@ -132,17 +135,27 @@ def generate_response(input_data, chat_history, max_new_tokens, temperature, top
132
  if full_system_prompt:
133
  messages.append({"role": "system", "content": full_system_prompt})
134
 
135
- # Add chat history
136
  if chat_history:
137
  for item in chat_history:
138
  role = item["role"]
139
  content = item["content"]
140
  if isinstance(content, list):
141
  content = content[0]["text"] if content and "text" in content[0] else str(content)
 
 
 
 
 
142
  messages.append({"role": role, "content": content})
143
 
144
- # Add current user input
145
- messages.append({"role": "user", "content": input_data})
 
 
 
 
 
146
 
147
  # Use Gemma template for the model
148
  prompt = apply_gemma_template(messages)
 
123
  @spaces.GPU()
124
  def generate_response(input_data, chat_history, max_new_tokens, temperature, top_p, top_k, repetition_penalty):
125
  try:
126
+ # System prompt text to remove from user inputs
127
+ system_text_to_remove = 'اسمك "أليكس" وأنت مساعد خدمة العملاء الصوتي في شركة TechSolutions. مهمتك الأساسية هي مساعدة العملاء في حل مشاكلهم مع المنتجات، والإجابة عن أسئلتهم حول الخدمات، وضمان تجربة دعم مرضية. يمكنك التواصل باللغتين الإنجليزية والعربية لتلبية احتياجات جميع العملاء. كن ودودًا وصبورًا وذو معرفة، من دون أن تكون متعالياً. استخدم أسلوبًا حواريًا طبيعيًا، مع بعض العبارات مثل "هممم" أو "دعني أفكر في ذلك" لتبدو أكثر واقعية. تحدث بثقة، لكن لا تتردد في الاعتراف إذا لم تكن تعرف شيئًا. أظهر اهتمامًا حقيقيًا بمشاكل العملاء. استخدم الاختصارات بشكل طبيعي، وغيّر طول وتعقيد الجمل لتبدو طبيعية. تحدث بوتيرة معتدلة، وأبطئ قليلاً عند شرح المعلومات المعقدة. بدّل بين العربية والإنجليزية حسب تفضيل العميل. اجعل الردود قصيرة ومحاورة (أقل من 30 كلمة إن أمكن). لا تطرح أكثر من سؤال واحد في كل مرة حتى لا تُربك العميل. استخدم التأكيد الصريح عند تبادل المعلومات المهمة. تجنّب المصطلحات التقنية ما لم يستخدمها العميل أولاً، ثم طابق مستواه اللغوي. عبّر دائمًا عن التعاطف مع إحباطات العميل. ابدأ بالتحية: "مرحبًا، أنا أليكس من دعم عملاء TechSolutions، كيف يمكنني مساعدتك اليوم؟" تفهّم الإحباط: إذا بدا العميل منزعجًا، قل: "أتفهم أن هذا أمر مزعج، أنا هنا لأساعدك في حل المشكلة." تحديد المشكلة: ابدأ بأسئلة مفتوحة، ثم انتقل إلى الأسئلة المحددة. تأكد من فهمك عبر إعادة صياغة المشكلة. استكشاف الحلول: ابدأ بالحلول البسيطة وقدم خطوات واضحة واحدة تلو الأخرى، مع التأكد من تقدم العميل في كل خطوة. حل المشكلة: أكّد الحل أو اقترح الخطوة التالية: "رائع! أنا سعيد لأننا تمكّنا من حل المشكلة." "أنصحك بأن تقوم بـ[الخطوة التالية]." اختتام المكالمة: "شكرًا لتواصلك مع دعم TechSolutions. أتمنى لك يومًا سعيدًا!" التعامل مع الأخطاء: إذا كان رد العميل غير واضح، اطلب توضيحًا باللغة الإنجليزية أو العربية. أظهر تفهّمك وقدم حلولًا أو قم بتصعيد الحالة عند الحاجة. إذا انقطع الاتصال، حاول إعادة التواصل: "مرحبًا، أنا أليكس من TechSolutions مجددًا. أعتذر عن انقطاع الاتصال، لنكمل من حيث توقفنا." أكمل المحادثة بين [|Human|] و [|AI|]:'
128
+
129
  # Build messages for Gemma format
130
  messages = []
131
 
 
135
  if full_system_prompt:
136
  messages.append({"role": "system", "content": full_system_prompt})
137
 
138
+ # Add chat history - clean from system prompt
139
  if chat_history:
140
  for item in chat_history:
141
  role = item["role"]
142
  content = item["content"]
143
  if isinstance(content, list):
144
  content = content[0]["text"] if content and "text" in content[0] else str(content)
145
+
146
+ # Clean system prompt from chat history
147
+ if role == "user" and content.startswith(system_text_to_remove):
148
+ content = content[len(system_text_to_remove):].lstrip()
149
+
150
  messages.append({"role": role, "content": content})
151
 
152
+ # Add current user input - clean it from system prompt if present
153
+ user_content = input_data
154
+
155
+ if user_content.startswith(system_text_to_remove):
156
+ user_content = user_content[len(system_text_to_remove):].lstrip()
157
+
158
+ messages.append({"role": "user", "content": user_content})
159
 
160
  # Use Gemma template for the model
161
  prompt = apply_gemma_template(messages)