Spaces:
Sleeping
Sleeping
File size: 4,607 Bytes
9d04bc3 ce389e8 9d04bc3 bab2378 9d04bc3 bab2378 9d04bc3 bab2378 4cf2a82 ce389e8 bab2378 ce389e8 ab6494d ce389e8 bab2378 ce389e8 bab2378 ce389e8 bab2378 ce389e8 bab2378 ce389e8 bab2378 9d04bc3 bab2378 ce389e8 bab2378 4cf2a82 bab2378 9d04bc3 bab2378 ce389e8 bab2378 ce389e8 bab2378 ce389e8 bab2378 ce389e8 bab2378 ce389e8 bab2378 ce389e8 bab2378 ce389e8 bab2378 ce389e8 bab2378 ce389e8 bab2378 ce389e8 bab2378 ce389e8 bab2378 9d04bc3 ce389e8 9d04bc3 ce389e8 bab2378 ce389e8 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 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 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 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 | import gradio as gr
import requests
import os
# 🔒 احصل على Token من Environment Variables (آمن)
HF_TOKEN = os.environ.get("HF_TOKEN")
# تأكد من وجود Token
if not HF_TOKEN:
print("⚠️ تحذير: لم يتم العثور على HF_TOKEN في Environment Variables")
print("🔧 الرجاء إضافة HF_TOKEN في Space → Settings → Repository secrets")
def chat_with_model(message):
"""استخدام النموذج بشكل آمن"""
if not HF_TOKEN:
return "❌ خطأ: لم يتم تكوين Token. الرجاء التحقق من الإعدادات."
# URL النموذج
MODEL = "kawkabelaloom/astramind"
API_URL = f"https://api-inference.huggingface.co/models/{MODEL}"
headers = {"Authorization": f"Bearer {HF_TOKEN}"}
# تنسيق الرسالة
prompt = f"سؤال: {message}\nجواب:"
try:
response = requests.post(
API_URL,
headers=headers,
json={
"inputs": prompt,
"parameters": {
"max_new_tokens": 200,
"temperature": 0.7,
"top_p": 0.9,
"return_full_text": False
}
},
timeout=30
)
if response.status_code == 200:
result = response.json()
if isinstance(result, list) and len(result) > 0:
answer = result[0].get('generated_text', '')
# تنظيف الرد
if prompt in answer:
answer = answer.replace(prompt, "").strip()
return f"🤖 {answer}" if answer else "⚠️ لم أتلق رداً واضحاً."
else:
return f"⚠️ تنسيق غير متوقع: {result}"
else:
return f"❌ خطأ {response.status_code} من API"
except requests.exceptions.Timeout:
return "⏳ النموذج يأخذ وقتاً، جرب مرة أخرى بعد قليل..."
except Exception as e:
return f"❌ حدث خطأ: {str(e)}"
# واجهة Gradio
with gr.Blocks(theme=gr.themes.Soft(), title="Astramind Chatbot") as demo:
gr.Markdown("""
# 🤖 Astramind - مساعد الدردشة العربي
### اسأل أي سؤال وسأحاول الإجابة عليه باستخدام الذكاء الاصطناعي
""")
# حالة Token
if not HF_TOKEN:
gr.Markdown("### ⚠️ تحذير: Token غير موجود")
gr.Markdown("الرجاء إضافته في Space → Settings → Repository secrets")
with gr.Row():
with gr.Column(scale=3):
input_box = gr.Textbox(
label="اكتب سؤالك هنا",
placeholder="مثال: السلام عليكم، كيف حالك؟",
lines=3
)
send_btn = gr.Button("🚀 إرسال", variant="primary", size="lg")
with gr.Column(scale=4):
output_box = gr.Textbox(
label="رد المساعد",
lines=8,
interactive=False
)
# أمثلة
gr.Examples(
examples=[
["السلام عليكم"],
["ما هو اسمك؟"],
["كيف يمكنني التسجيل؟"],
["أخبرني قصة قصيرة"],
["ما هي عاصمة فرنسا؟"]
],
inputs=input_box,
label="امثلة للبداية"
)
def process_input(message):
"""معالجة المدخلات"""
if not message.strip():
return "الرجاء كتابة سؤال أولاً."
return chat_with_model(message)
# ربط الأحداث
send_btn.click(process_input, inputs=input_box, outputs=output_box)
input_box.submit(process_input, inputs=input_box, outputs=output_box)
# زر المسح
clear_btn = gr.Button("🧹 مسح", variant="secondary")
clear_btn.click(lambda: ("", ""), None, [input_box, output_box])
# تعليمات
gr.Markdown("""
---
### 💡 نصائح:
- اكتب سؤالاً واضحاً
- يمكنك سؤال عن أي موضوع
- الرد قد يستغرق بضع ثواني
""")
# التشغيل
if __name__ == "__main__":
demo.launch(
server_name="0.0.0.0",
server_port=7860,
share=False,
debug=False
) |