File size: 2,989 Bytes
e6a1c6d d761522 e6a1c6d d761522 3383fc2 d761522 e6a1c6d 046dd29 d761522 318461f d761522 3383fc2 d761522 3383fc2 d761522 3383fc2 046dd29 d761522 3383fc2 d761522 3383fc2 046dd29 3383fc2 d761522 046dd29 d761522 046dd29 d761522 318461f 046dd29 3383fc2 d761522 046dd29 | 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 | import gradio as gr
import requests
import os
HF_TOKEN = os.environ.get("HF_TOKEN", "")
API_URL = "https://api-inference.huggingface.co/models/rahimdzx/AraCode-7B-Full"
SYSTEM = "أنت AraCode، مساعد برمجي ذكي باللغة العربية. تشرح وتكتب وتصحح الكود بدقة."
def chat(message, history, temperature, max_tokens):
prompt = f"<|im_start|>system\n{SYSTEM}<|im_end|>\n"
for item in history:
prompt += f"<|im_start|>{item['role']}\n{item['content']}<|im_end|>\n"
prompt += f"<|im_start|>user\n{message}<|im_end|>\n<|im_start|>assistant\n"
headers = {"Authorization": f"Bearer {HF_TOKEN}"}
try:
r = requests.post(API_URL, headers=headers, json={
"inputs": prompt,
"parameters": {"max_new_tokens": int(max_tokens), "temperature": float(temperature), "return_full_text": False}
}, timeout=60)
if r.status_code == 200:
result = r.json()
yield result[0].get("generated_text", "لا يوجد رد") if isinstance(result, list) else str(result)
elif r.status_code == 503:
yield "⏳ النموذج يستيقظ... أعد المحاولة بعد 30 ثانية"
else:
yield f"❌ خطأ {r.status_code}"
except Exception as e:
yield f"❌ {str(e)}"
with gr.Blocks(title="AraCode-7B", theme=gr.themes.Soft()) as demo:
gr.HTML("<h1 style='text-align:center'>🐪 AraCode-7B — مساعد البرمجة العربي</h1>")
with gr.Row():
with gr.Column(scale=4):
chatbot = gr.Chatbot(height=480, type="messages", rtl=True, show_copy_button=True)
msg = gr.Textbox(placeholder="اكتب سؤالك هنا...", lines=2)
with gr.Row():
send = gr.Button("إرسال 🚀", variant="primary")
clear = gr.Button("🗑️ مسح")
with gr.Column(scale=1):
temperature = gr.Slider(0.1, 1.0, 0.3, step=0.1, label="الإبداع")
max_tokens = gr.Slider(128, 1024, 512, step=128, label="طول الرد")
gr.Markdown("🔗 [النموذج](https://huggingface.co/rahimdzx/AraCode-7B-Full)")
gr.Examples([
["اكتب دالة بايثون للبحث الثنائي"],
["ما الفرق بين list و tuple؟"],
["اكتب API بسيط بـ Flask"],
], inputs=msg)
def submit(m, h): return "", h + [{"role":"user","content":m}]
def respond(h, t, k):
if not h: return h
h = h + [{"role":"assistant","content":""}]
for c in chat(h[-2]["content"], h[:-1], t, k):
h[-1]["content"] = c
yield h
msg.submit(submit,[msg,chatbot],[msg,chatbot]).then(respond,[chatbot,temperature,max_tokens],chatbot)
send.click(submit,[msg,chatbot],[msg,chatbot]).then(respond,[chatbot,temperature,max_tokens],chatbot)
clear.click(lambda:[],None,chatbot)
demo.launch(server_name="0.0.0.0", server_port=7860) |