FaizTech commited on
Commit
81d5428
·
verified ·
1 Parent(s): 569ddb2

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +77 -0
app.py ADDED
@@ -0,0 +1,77 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import torch
3
+ from transformers import pipeline, AutoTokenizer
4
+
5
+ # =================================================================
6
+ # == ⚠️ قم بتغيير هذا السطر فقط ⚠️ ==
7
+ # =================================================================
8
+ # ضع هنا الاسم الكامل للمستودع الذي رفعت إليه نموذجك
9
+ MODEL_ID = "FaizTech/my-tinyllama-test" # <--- مثال، غيره إلى اسم نموذجك
10
+ # =================================================================
11
+
12
+
13
+ # --- لا داعي لتعديل أي شيء بعد هذا السطر ---
14
+
15
+ # رسالة لتعقب حالة التحميل في الـ Logs
16
+ print(f"بدء تحميل النموذج: {MODEL_ID}")
17
+
18
+ # تحميل الـ Tokenizer أولاً
19
+ try:
20
+ tokenizer = AutoTokenizer.from_pretrained(MODEL_ID)
21
+ except Exception as e:
22
+ print(f"خطأ في تحميل الـ Tokenizer: {e}")
23
+ raise
24
+
25
+ # إنشاء الـ pipeline الذي سيقوم بتحميل النموذج وتشغيله
26
+ try:
27
+ pipe = pipeline(
28
+ "text-generation",
29
+ model=MODEL_ID,
30
+ tokenizer=tokenizer,
31
+ torch_dtype=torch.bfloat16,
32
+ device_map="auto" # سيستخدم الـ CPU أو الـ GPU المتاح تلقائيًا
33
+ )
34
+ print("تم تحميل النموذج بنجاح!")
35
+ except Exception as e:
36
+ print(f"خطأ في تحميل النموذج: {e}")
37
+ raise
38
+
39
+
40
+ # الدالة الرئيسية التي ستعالج طلبات الـ API والواجهة
41
+ def get_response(prompt_text):
42
+ """
43
+ هذه الدالة تأخذ نصًا وتولد ردًا من النموذج.
44
+ """
45
+ # استخدام قالب المحادثة الجاهز في الـ tokenizer
46
+ messages = [{"role": "user", "content": prompt_text}]
47
+ prompt = pipe.tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
48
+
49
+ # توليد الرد
50
+ outputs = pipe(
51
+ prompt,
52
+ max_new_tokens=256,
53
+ do_sample=True,
54
+ temperature=0.7,
55
+ top_p=0.95
56
+ )
57
+
58
+ # استخراج النص المولد فقط
59
+ response = outputs[0]["generated_text"]
60
+
61
+ # تنظيف الرد من النص الأصلي (اختياري، لتحسين العرض)
62
+ # هذا السطر يزيل السؤال ويعرض الإجابة فقط
63
+ cleaned_response = response.replace(prompt, "").strip()
64
+
65
+ return cleaned_response
66
+
67
+ # إنشاء واجهة Gradio البسيطة
68
+ demo = gr.Interface(
69
+ fn=get_response,
70
+ inputs=gr.Textbox(label="أدخل سؤالك أو أمرك هنا", lines=4),
71
+ outputs=gr.Textbox(label="إجابة النموذج", lines=4),
72
+ title=f"واجهة لنموذج {MODEL_ID.split('/')[-1]}",
73
+ description="هذا تطبيق ويب بسيط لواجهة API لنموذجي الخاص."
74
+ )
75
+
76
+ # تشغيل التطبيق وإتاحة الـ API
77
+ demo.queue().launch()