kawkabelaloom commited on
Commit
bab2378
·
verified ·
1 Parent(s): ce389e8

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +82 -62
app.py CHANGED
@@ -2,75 +2,89 @@ import gradio as gr
2
  import requests
3
  import os
4
 
5
- # إعدادات API
6
- HF_TOKEN = os.environ.get("HF_TOKEN", "hf_xxxxxx") # ضع token هنا
7
- MODEL_NAME = "kawkabelaloom/astramind"
8
 
9
- API_URL = f"https://api-inference.huggingface.co/models/{MODEL_NAME}"
10
- headers = {"Authorization": f"Bearer {HF_TOKEN}"}
 
 
11
 
12
- def chat_with_api(message):
13
- """استخدام Inference API مباشرة"""
 
 
 
 
 
 
 
 
 
 
 
14
  try:
15
- # تنسيق مناسب للنموذج
16
- prompt = f"المستخدم: {message}\nالمساعد:"
17
-
18
- payload = {
19
- "inputs": prompt,
20
- "parameters": {
21
- "max_new_tokens": 150,
22
- "temperature": 0.7,
23
- "top_p": 0.9,
24
- "return_full_text": False
25
- },
26
- "options": {
27
- "wait_for_model": True,
28
- "use_cache": True
29
- }
30
- }
31
-
32
  response = requests.post(
33
  API_URL,
34
  headers=headers,
35
- json=payload,
36
- timeout=45
 
 
 
 
 
 
 
 
37
  )
38
 
39
  if response.status_code == 200:
40
  result = response.json()
 
41
  if isinstance(result, list) and len(result) > 0:
42
- # استخراج الرد
43
- response_text = result[0].get('generated_text', '')
44
 
45
  # تنظيف الرد
46
- if "المساعد:" in response_text:
47
- response_text = response_text.split("المساعد:")[-1].strip()
48
 
49
- return response_text
50
  else:
51
- return "تلقيت رداً غير متوقع من النموذج."
52
  else:
53
- return f"خطأ من API: {response.status_code}\n{response.text[:200]}"
54
 
 
 
55
  except Exception as e:
56
- return f"حدث خطأ: {str(e)}"
57
 
58
- # إنشاء واجهة
59
- with gr.Blocks(title="Astramind Chatbot", theme=gr.themes.Soft()) as demo:
60
- gr.Markdown("# 🤖 Astramind - مساعد الدردشة العربي")
61
- gr.Markdown("اسأل أي سؤال وسأجيبك باللغة العربية")
 
 
 
 
 
 
 
 
62
 
63
  with gr.Row():
64
- with gr.Column():
65
- input_text = gr.Textbox(
66
  label="اكتب سؤالك هنا",
67
- placeholder="مثل: السلام عليكم، كيف حالك؟",
68
  lines=3
69
  )
70
- submit_btn = gr.Button("إرسال", variant="primary")
 
71
 
72
- with gr.Column():
73
- output_text = gr.Textbox(
74
  label="رد المساعد",
75
  lines=8,
76
  interactive=False
@@ -81,37 +95,43 @@ with gr.Blocks(title="Astramind Chatbot", theme=gr.themes.Soft()) as demo:
81
  examples=[
82
  ["السلام عليكم"],
83
  ["ما هو اسمك؟"],
84
- ["كيف يمكنني التسجيل في الدورة؟"],
85
- ["أخبرني عن الذكاء الاصطناعي"]
 
86
  ],
87
- inputs=input_text
 
88
  )
89
 
90
- def process_message(message):
91
- """معالجة الرسالة"""
92
  if not message.strip():
93
- return "الرجاء كتابة رسالة."
94
-
95
- with gr.Progress() as progress:
96
- progress(0.3, desc="جاري معالجة سؤالك...")
97
- response = chat_with_api(message)
98
- progress(1.0, desc="اكتمل!")
99
 
100
- return response
101
 
102
  # ربط الأحداث
103
- submit_btn.click(process_message, inputs=input_text, outputs=output_text)
104
- input_text.submit(process_message, inputs=input_text, outputs=output_text)
105
 
106
  # زر المسح
107
- clear_btn = gr.Button("مسح")
108
- clear_btn.click(lambda: ("", ""), None, [input_text, output_text])
 
 
 
 
 
 
 
 
 
109
 
110
  # التشغيل
111
  if __name__ == "__main__":
112
  demo.launch(
113
- debug=True,
114
  server_name="0.0.0.0",
115
  server_port=7860,
116
- share=False
 
117
  )
 
2
  import requests
3
  import os
4
 
5
+ # 🔒 احصل على Token من Environment Variables (آمن)
6
+ HF_TOKEN = os.environ.get("HF_TOKEN")
 
7
 
8
+ # تأكد من وجود Token
9
+ if not HF_TOKEN:
10
+ print("⚠️ تحذير: لم يتم العثور على HF_TOKEN في Environment Variables")
11
+ print("🔧 الرجاء إضافة HF_TOKEN في Space → Settings → Repository secrets")
12
 
13
+ def chat_with_model(message):
14
+ """استخدام النموذج بشكل آمن"""
15
+ if not HF_TOKEN:
16
+ return "❌ خطأ: لم يتم تكوين Token. الرجاء التحقق من الإعدادات."
17
+
18
+ # URL النموذج
19
+ MODEL = "kawkabelaloom/astramind"
20
+ API_URL = f"https://api-inference.huggingface.co/models/{MODEL}"
21
+ headers = {"Authorization": f"Bearer {HF_TOKEN}"}
22
+
23
+ # تنسيق الرسالة
24
+ prompt = f"سؤال: {message}\nجواب:"
25
+
26
  try:
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
27
  response = requests.post(
28
  API_URL,
29
  headers=headers,
30
+ json={
31
+ "inputs": prompt,
32
+ "parameters": {
33
+ "max_new_tokens": 200,
34
+ "temperature": 0.7,
35
+ "top_p": 0.9,
36
+ "return_full_text": False
37
+ }
38
+ },
39
+ timeout=30
40
  )
41
 
42
  if response.status_code == 200:
43
  result = response.json()
44
+
45
  if isinstance(result, list) and len(result) > 0:
46
+ answer = result[0].get('generated_text', '')
 
47
 
48
  # تنظيف الرد
49
+ if prompt in answer:
50
+ answer = answer.replace(prompt, "").strip()
51
 
52
+ return f"🤖 {answer}" if answer else "⚠️ لم أتلق رداً واضحاً."
53
  else:
54
+ return f"⚠️ تنسيق غير متوقع: {result}"
55
  else:
56
+ return f"خطأ {response.status_code} من API"
57
 
58
+ except requests.exceptions.Timeout:
59
+ return "⏳ النموذج يأخذ وقتاً، جرب مرة أخرى بعد قليل..."
60
  except Exception as e:
61
+ return f"حدث خطأ: {str(e)}"
62
 
63
+ # واجهة Gradio
64
+ with gr.Blocks(theme=gr.themes.Soft(), title="Astramind Chatbot") as demo:
65
+ gr.Markdown("""
66
+ # 🤖 Astramind - مساعد الدردشة العربي
67
+
68
+ ### اسأل أي سؤال وسأحاول الإجابة عليه باستخدام الذكاء الاصطناعي
69
+ """)
70
+
71
+ # حالة Token
72
+ if not HF_TOKEN:
73
+ gr.Markdown("### ⚠️ تحذير: Token غير موجود")
74
+ gr.Markdown("الرجاء إضافته في Space → Settings → Repository secrets")
75
 
76
  with gr.Row():
77
+ with gr.Column(scale=3):
78
+ input_box = gr.Textbox(
79
  label="اكتب سؤالك هنا",
80
+ placeholder="مثال: السلام عليكم، كيف حالك؟",
81
  lines=3
82
  )
83
+
84
+ send_btn = gr.Button("🚀 إرسال", variant="primary", size="lg")
85
 
86
+ with gr.Column(scale=4):
87
+ output_box = gr.Textbox(
88
  label="رد المساعد",
89
  lines=8,
90
  interactive=False
 
95
  examples=[
96
  ["السلام عليكم"],
97
  ["ما هو اسمك؟"],
98
+ ["كيف يمكنني التسجيل؟"],
99
+ ["أخبرني قصة قصيرة"],
100
+ ["ما هي عاصمة فرنسا؟"]
101
  ],
102
+ inputs=input_box,
103
+ label="امثلة للبداية"
104
  )
105
 
106
+ def process_input(message):
107
+ """معالجة المدخلات"""
108
  if not message.strip():
109
+ return "الرجاء كتابة سؤال أولاً."
 
 
 
 
 
110
 
111
+ return chat_with_model(message)
112
 
113
  # ربط الأحداث
114
+ send_btn.click(process_input, inputs=input_box, outputs=output_box)
115
+ input_box.submit(process_input, inputs=input_box, outputs=output_box)
116
 
117
  # زر المسح
118
+ clear_btn = gr.Button("🧹 مسح", variant="secondary")
119
+ clear_btn.click(lambda: ("", ""), None, [input_box, output_box])
120
+
121
+ # تعليمات
122
+ gr.Markdown("""
123
+ ---
124
+ ### 💡 نصائح:
125
+ - اكتب سؤالاً واضحاً
126
+ - يمكنك سؤال عن أي موضوع
127
+ - الرد قد يستغرق بضع ثواني
128
+ """)
129
 
130
  # التشغيل
131
  if __name__ == "__main__":
132
  demo.launch(
 
133
  server_name="0.0.0.0",
134
  server_port=7860,
135
+ share=False,
136
+ debug=False
137
  )