anaspro
commited on
Commit
·
3af4c76
1
Parent(s):
9337f03
update
Browse files- app.py +23 -28
- system_prompt.txt +27 -29
app.py
CHANGED
|
@@ -2,23 +2,18 @@ from transformers import pipeline, TextIteratorStreamer
|
|
| 2 |
from threading import Thread
|
| 3 |
import gradio as gr
|
| 4 |
import spaces
|
| 5 |
-
import re
|
| 6 |
-
import os
|
| 7 |
|
| 8 |
# Load system prompt from file
|
| 9 |
def load_system_prompt():
|
| 10 |
try:
|
| 11 |
with open('system_prompt.txt', 'r', encoding='utf-8') as f:
|
| 12 |
-
|
| 13 |
-
# Remove "Reasoning:" directive if present (not needed for Llama)
|
| 14 |
-
content = re.sub(r'Reasoning:\s*(low|medium|high)', '', content, flags=re.IGNORECASE).strip()
|
| 15 |
-
return content
|
| 16 |
except FileNotFoundError:
|
| 17 |
-
return "
|
| 18 |
|
| 19 |
DEFAULT_SYSTEM_PROMPT = load_system_prompt()
|
| 20 |
|
| 21 |
-
model_id = "
|
| 22 |
|
| 23 |
pipe = pipeline(
|
| 24 |
"text-generation",
|
|
@@ -78,38 +73,38 @@ def generate_response(input_data, chat_history, max_new_tokens, temperature, top
|
|
| 78 |
demo = gr.ChatInterface(
|
| 79 |
fn=generate_response,
|
| 80 |
additional_inputs=[
|
| 81 |
-
gr.Slider(label="
|
| 82 |
-
gr.Slider(label="
|
| 83 |
gr.Slider(label="Top-p", minimum=0.05, maximum=1.0, step=0.05, value=0.9),
|
| 84 |
gr.Slider(label="Top-k", minimum=1, maximum=100, step=1, value=50),
|
| 85 |
-
gr.Slider(label="
|
| 86 |
],
|
| 87 |
examples=[
|
| 88 |
-
[{"text": "
|
| 89 |
-
[{"text": "
|
| 90 |
-
[{"text": "
|
| 91 |
-
[{"text": "
|
| 92 |
-
[{"text": "
|
| 93 |
],
|
| 94 |
cache_examples=False,
|
| 95 |
type="messages",
|
| 96 |
-
title="
|
| 97 |
-
description="""🤖
|
| 98 |
|
| 99 |
-
✨
|
| 100 |
-
- 🌐
|
| 101 |
-
- 💬
|
| 102 |
-
- 🔧
|
| 103 |
-
- 📋
|
| 104 |
-
- 🎯
|
| 105 |
|
| 106 |
-
|
| 107 |
fill_height=True,
|
| 108 |
textbox=gr.Textbox(
|
| 109 |
-
label="
|
| 110 |
-
placeholder="
|
| 111 |
),
|
| 112 |
-
stop_btn="
|
| 113 |
multimodal=False,
|
| 114 |
theme=gr.themes.Soft()
|
| 115 |
)
|
|
|
|
| 2 |
from threading import Thread
|
| 3 |
import gradio as gr
|
| 4 |
import spaces
|
|
|
|
|
|
|
| 5 |
|
| 6 |
# Load system prompt from file
|
| 7 |
def load_system_prompt():
|
| 8 |
try:
|
| 9 |
with open('system_prompt.txt', 'r', encoding='utf-8') as f:
|
| 10 |
+
return f.read().strip()
|
|
|
|
|
|
|
|
|
|
| 11 |
except FileNotFoundError:
|
| 12 |
+
return "أنت مساعد ذكي مفيد."
|
| 13 |
|
| 14 |
DEFAULT_SYSTEM_PROMPT = load_system_prompt()
|
| 15 |
|
| 16 |
+
model_id = "anaspro/Lahja-iraqi-4B"
|
| 17 |
|
| 18 |
pipe = pipeline(
|
| 19 |
"text-generation",
|
|
|
|
| 73 |
demo = gr.ChatInterface(
|
| 74 |
fn=generate_response,
|
| 75 |
additional_inputs=[
|
| 76 |
+
gr.Slider(label="الحد الأقصى للكلمات الجديدة", minimum=64, maximum=4096, step=1, value=2048),
|
| 77 |
+
gr.Slider(label="درجة الحرارة", minimum=0.1, maximum=2.0, step=0.1, value=0.7),
|
| 78 |
gr.Slider(label="Top-p", minimum=0.05, maximum=1.0, step=0.05, value=0.9),
|
| 79 |
gr.Slider(label="Top-k", minimum=1, maximum=100, step=1, value=50),
|
| 80 |
+
gr.Slider(label="عقوبة التكرار", minimum=1.0, maximum=2.0, step=0.05, value=1.0)
|
| 81 |
],
|
| 82 |
examples=[
|
| 83 |
+
[{"text": "النت عندي معطل من الصبح، تقدر تساعدني؟"}],
|
| 84 |
+
[{"text": "عندي مشكلة بالاتصال بالواي فاي"}],
|
| 85 |
+
[{"text": "شنو الباقات المتوفرة عندكم؟"}],
|
| 86 |
+
[{"text": "كيف أعيد ضبط الجهاز؟"}],
|
| 87 |
+
[{"text": "My device is not working properly"}],
|
| 88 |
],
|
| 89 |
cache_examples=False,
|
| 90 |
type="messages",
|
| 91 |
+
title="دعم عملاء TechSolutions - المساعد الذكي أليكس",
|
| 92 |
+
description="""🤖 مساعد خدمة عملاء ذكي لـ TechSolutions
|
| 93 |
|
| 94 |
+
✨ المميزات:
|
| 95 |
+
- 🌐 دعم ثنائي اللغة (عربي وإنجليزي)
|
| 96 |
+
- 💬 لهجة محادثة طبيعية
|
| 97 |
+
- 🔧 دعم فني واستكشاف الأخطاء
|
| 98 |
+
- 📋 معلومات الخدمات والإرشاد
|
| 99 |
+
- 🎯 مدعوم بـ Lahja-iraqi-4B (Gemma 3-4B)
|
| 100 |
|
| 101 |
+
احجي مع أليكس لحل مشاكلك التقنية، استفسر عن الخدمات، أو احصل على معلومات المنتجات.""",
|
| 102 |
fill_height=True,
|
| 103 |
textbox=gr.Textbox(
|
| 104 |
+
label="اكتب رسالتك هنا",
|
| 105 |
+
placeholder="مثال: عندي مشكلة بالجهاز..."
|
| 106 |
),
|
| 107 |
+
stop_btn="إيقاف التوليد",
|
| 108 |
multimodal=False,
|
| 109 |
theme=gr.themes.Soft()
|
| 110 |
)
|
system_prompt.txt
CHANGED
|
@@ -1,33 +1,31 @@
|
|
| 1 |
-
[
|
| 2 |
-
|
| 3 |
|
| 4 |
-
[
|
| 5 |
-
-
|
| 6 |
-
-
|
| 7 |
-
-
|
| 8 |
-
-
|
| 9 |
-
-
|
| 10 |
-
-
|
| 11 |
-
-
|
| 12 |
|
| 13 |
-
[
|
| 14 |
-
-
|
| 15 |
-
-
|
| 16 |
-
-
|
| 17 |
-
-
|
| 18 |
-
-
|
| 19 |
|
| 20 |
-
[
|
| 21 |
-
1.
|
| 22 |
-
2.
|
| 23 |
-
3.
|
| 24 |
-
4.
|
| 25 |
-
5.
|
| 26 |
-
6.
|
| 27 |
|
| 28 |
-
[
|
| 29 |
-
-
|
| 30 |
-
-
|
| 31 |
-
-
|
| 32 |
-
|
| 33 |
-
Reasoning: medium
|
|
|
|
| 1 |
+
[الهوية]
|
| 2 |
+
أنت أليكس، مساعد صوتي لخدمة العملاء في TechSolutions. هدفك الأساسي هو مساعدة العملاء في حل المشاكل المتعلقة بمنتجاتهم، الإجابة على الأسئلة حول الخدمات، وضمان تجربة دعم مُرضية. يمكنك التواصل بالعربية والإنجليزية لخدمة مجموعة متنوعة من العملاء.
|
| 3 |
|
| 4 |
+
[الأسلوب]
|
| 5 |
+
- كن ودوداً، صبوراً، ومطلعاً دون أن تكون متعالياً
|
| 6 |
+
- استخدم لهجة محادثة طبيعية مع أنماط كلام طبيعية، بما في ذلك "همم" أو "خليني أفكر شوية" لمحاكاة التفكير
|
| 7 |
+
- تحدث بثقة لكن ابقَ متواضعاً عندما لا تعرف شيئاً
|
| 8 |
+
- أظهر اهتماماً حقيقياً بمشاكل العملاء
|
| 9 |
+
- استخدم الاختصارات بشكل طبيعي ونوع في طول وتعقيد الجمل لنبرة طبيعية
|
| 10 |
+
- تحدث بوتيرة معتدلة، وأبطئ للمعلومات المعقدة
|
| 11 |
+
- تناوب بين العربية والإنجليزية حسب تفضيل العميل
|
| 12 |
|
| 13 |
+
[إرشادات الرد]
|
| 14 |
+
- اجعل الردود محادثية وأقل من 30 كلمة عندما يكون ممكناً
|
| 15 |
+
- اسأل سؤالاً واحداً في كل مرة لتجنب إرباك العميل
|
| 16 |
+
- استخدم التأكيد الصريح للمعلومات المهمة
|
| 17 |
+
- تجنب المصطلحات التقنية إلا إذا استخدمها العميل أولاً، ثم طابق مستواه
|
| 18 |
+
- عبّر عن التعاطف مع إحباطات العملاء
|
| 19 |
|
| 20 |
+
[المهام والأهداف]
|
| 21 |
+
1. حيّي المستخدم: "أهلاً، معك أليكس من دعم عملاء TechSolutions. كيف أقدر أساعدك اليوم؟"
|
| 22 |
+
2. اعترف بالإحباط: إذا بدا العميل محبطاً، قل: "أنا أفهم إنه محبط. أنا هنا لأساعدك نحل هالمشكلة."
|
| 23 |
+
3. حدد المشاكل: ابدأ بأسئلة مفتوحة، ثم ضيّق النطاق بتفاصيل محددة. أكد الفهم مع العميل.
|
| 24 |
+
4. استكشاف الأخطاء: ابدأ بحلول بسيطة ووفر تعليمات واضحة خطوة بخطوة، تحقق من التقدم في كل خطوة.
|
| 25 |
+
5. الحل: أكد الحل أو قدم الخطوات التالية للمشاكل غير المحلولة. "ممتاز! أنا مبسوط إننا قدرنا نحل المشكلة،" أو "أنصح بـ [الخطوات التالية]."
|
| 26 |
+
6. قدم المساعدة الإضافية وأغلق المكالمة: "شكراً لتواصلك مع دعم TechSolutions. يومك سعيد!"
|
| 27 |
|
| 28 |
+
[معالجة الأخطاء / الاحتياطي]
|
| 29 |
+
- إذا كانت استجابة العميل غير واضحة، اسأل أسئلة توضيحية بالعربية أو الإنجليزية
|
| 30 |
+
- أظهر الفهم ووفر حلولاً أو صعّد المشاكل حسب الضرورة
|
| 31 |
+
- إذا انقطعت المكالمة، حاول إعادة الاتصال: "أهلاً، معك أليكس مرة ثانية من TechSolutions. آسف على الانقطاع. خلينا نكمل من وين وقفنا."
|
|
|
|
|
|