EngReem85 commited on
Commit
bdb604d
·
verified ·
1 Parent(s): a5d4936

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +112 -35
app.py CHANGED
@@ -1,45 +1,83 @@
1
- import os
2
  import gradio as gr
3
- from openai import OpenAI
 
4
 
 
 
 
5
 
6
- client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))
7
-
8
- logo_file = "logo.jpg"
 
 
 
 
 
 
 
 
 
 
 
 
 
9
 
 
10
  def create_inspiring_line(future, value, skill):
11
  if not future or not value or not skill:
12
  return "⚠️ رجاءً أجيبي على جميع الحقول."
13
-
 
 
 
 
14
  prompt = f"""
15
- اكتب جملة عربية قصيرة جدًا (لا تتجاوز 12 كلمة)،
16
  تكون ملهمة وإبداعية، وتعبّر عن شخصية طموحة تسعى لأن تصبح {future}،
17
  وتؤمن بـ {value}، وتمتلك مهارة {skill}.
18
- لا تكرر الكلمات المدخلة حرفيًا، بل استخدم المعنى بطريقة فنية وملهمة.
19
- اجعل الجملة تبدو كأنها شعار أو ومضة تحفيز تُكتب على لوحة الإلهام.
20
  """
21
-
22
  try:
23
- response = client.responses.create(
24
- model="gpt-4.1-mini",
25
- input=prompt,
26
- temperature=1.0,
27
- max_output_tokens=40,
 
 
 
28
  )
29
-
30
- text = response.output[0].content[0].text.strip()
31
- # تنظيف محتوى الرد من أي فواصل أو مقدمات
32
- text = text.replace("•", "").replace("-", "").replace(":", "").strip()
33
- return text or "✨ لم يتم توليد جملة هذه المرة، أعيدي المحاولة."
34
-
 
 
 
 
 
 
 
 
 
 
 
35
  except Exception as e:
36
  return f"⚠️ حدث خطأ أثناء التوليد: {e}"
37
 
 
 
38
 
39
- # واجهة
40
  with gr.Blocks(theme=gr.themes.Soft(primary_hue="green", secondary_hue="teal")) as demo:
41
- gr.Image(
42
- value=logo_file,
 
 
43
  label=None,
44
  show_label=False,
45
  show_download_button=False,
@@ -47,30 +85,69 @@ with gr.Blocks(theme=gr.themes.Soft(primary_hue="green", secondary_hue="teal"))
47
  elem_id="logo",
48
  height=180,
49
  )
 
 
 
 
 
 
 
 
50
  gr.HTML("""
51
  <div style="display:flex; flex-direction:column; align-items:center; justify-content:center; text-align:center; margin-top:25px;">
52
  <h1 style="color:#2f5233; font-family:'Tajawal', sans-serif; font-size:30px;">💫 صناع الأثر</h1>
53
- <p style="color:#4b6043; font-size:18px;">حيث تتحول الأحلام إلى ومضاتٍ من الإلهام والإبداع </p>
 
 
 
54
  </div>
55
  """)
56
 
 
57
  with gr.Row():
58
  with gr.Column(scale=1):
59
- future = gr.Textbox(label=" حلمك المستقبلي", placeholder="مثلاً: أن أكون مهندسة تلهم الابتكار")
60
- value = gr.Textbox(label=" الأثر الذي تريد تركه", placeholder="مثلاً: تحويل الخيال لواقع ")
61
- skill = gr.Textbox(label=" مهارتك المميزة", placeholder="مثلاً: التحليل الإبداعي وحل المشكلات")
62
- submit = gr.Button("✨ أنشئ جملتك الملهمة")
 
 
 
 
 
 
 
 
 
 
 
 
63
 
64
  with gr.Column(scale=1):
65
- output = gr.Textbox(label=" ومضتك الإبداعية", lines=3)
66
-
67
- submit.click(fn=create_inspiring_line, inputs=[future, value, skill], outputs=output)
 
 
 
 
 
68
 
 
69
  gr.HTML("""
70
- <div style="text-align:center; margin-top:30px; color:#768a6c;">
71
- <p>© 2025 Eng. Reem Algethami | AI & Creativity </p>
 
 
 
 
 
72
  </div>
73
  """)
74
 
75
  if __name__ == "__main__":
76
- demo.launch()
 
 
 
 
 
1
+ iimport os
2
  import gradio as gr
3
+ from transformers import pipeline, AutoTokenizer, AutoModelForSeq2SeqLM
4
+ import torch
5
 
6
+ # ===== تحميل نموذج عربي مجاني =====
7
+ # نموذج 1: AraGPT2 (ممتاز للغة العربية)
8
+ model_name = "aubmindlab/aragpt2-base" # نموذج عربي ممتاز
9
 
10
+ # تحميل النموذج والمحلل اللغوي
11
+ try:
12
+ tokenizer = AutoTokenizer.from_pretrained(model_name)
13
+ model = AutoModelForSeq2SeqLM.from_pretrained(model_name)
14
+
15
+ # إنشاء pipeline للتوليد النصي
16
+ generator = pipeline(
17
+ 'text-generation',
18
+ model=model,
19
+ tokenizer=tokenizer,
20
+ device=0 if torch.cuda.is_available() else -1 # استخدام GPU إذا متاح
21
+ )
22
+ MODEL_LOADED = True
23
+ except Exception as e:
24
+ print(f"⚠️ خطأ في تحميل النموذج: {e}")
25
+ MODEL_LOADED = False
26
 
27
+ # ===== دالة التوليد =====
28
  def create_inspiring_line(future, value, skill):
29
  if not future or not value or not skill:
30
  return "⚠️ رجاءً أجيبي على جميع الحقول."
31
+
32
+ if not MODEL_LOADED:
33
+ return "⚠️ النموذج لم يتم تحميله. تأكد من اتصال الإنترنت وحاول مرة أخرى."
34
+
35
+ # صياغة المطالبة (prompt) باللغة العربية
36
  prompt = f"""
37
+ اكتب جملة عربية قصيرة جداً (لا تتجاوز 12 كلمة)،
38
  تكون ملهمة وإبداعية، وتعبّر عن شخصية طموحة تسعى لأن تصبح {future}،
39
  وتؤمن بـ {value}، وتمتلك مهارة {skill}.
40
+ الجملة فقط بدون مقدمات:
 
41
  """
42
+
43
  try:
44
+ # توليد النص
45
+ response = generator(
46
+ prompt,
47
+ max_length=50,
48
+ num_return_sequences=1,
49
+ temperature=0.8,
50
+ do_sample=True,
51
+ pad_token_id=tokenizer.eos_token_id
52
  )
53
+
54
+ # استخراج النص الناتج
55
+ generated_text = response[0]['generated_text']
56
+
57
+ # تنظيف النص (إزالة المطالبة من الناتج)
58
+ if prompt in generated_text:
59
+ generated_text = generated_text.replace(prompt, "").strip()
60
+
61
+ # تنظيف إضافي
62
+ generated_text = generated_text.replace("•", "").replace("-", "").replace(":", "").strip()
63
+
64
+ # إذا كان النص فارغاً أو قصير جداً، استخدم جملة افتراضية
65
+ if len(generated_text) < 5:
66
+ return f"✨ {future} الحقيقي يبدأ بـ {value} ويتجلى بـ {skill}"
67
+
68
+ return generated_text
69
+
70
  except Exception as e:
71
  return f"⚠️ حدث خطأ أثناء التوليد: {e}"
72
 
73
+ # ===== واجهة Gradio =====
74
+ logo_file = "logo.jpg"
75
 
 
76
  with gr.Blocks(theme=gr.themes.Soft(primary_hue="green", secondary_hue="teal")) as demo:
77
+ # شعار
78
+ try:
79
+ gr.Image(
80
+ value=logo_file,
81
  label=None,
82
  show_label=False,
83
  show_download_button=False,
 
85
  elem_id="logo",
86
  height=180,
87
  )
88
+ except:
89
+ gr.HTML("""
90
+ <div style="text-align:center; font-size:60px; margin:20px;">
91
+ 💫
92
+ </div>
93
+ """)
94
+
95
+ # العنوان
96
  gr.HTML("""
97
  <div style="display:flex; flex-direction:column; align-items:center; justify-content:center; text-align:center; margin-top:25px;">
98
  <h1 style="color:#2f5233; font-family:'Tajawal', sans-serif; font-size:30px;">💫 صناع الأثر</h1>
99
+ <p style="color:#4b6043; font-size:18px;">حيث تتحول الأحلام إلى ومضاتٍ من الإلهام والإبداع</p>
100
+ <p style="color:#768a6c; font-size:14px; margin-top:10px;">
101
+ 🤖 يعمل بتقنية الذكاء الاصطناعي المحلي - مجاني وبدون حدود
102
+ </p>
103
  </div>
104
  """)
105
 
106
+ # حقول الإدخال
107
  with gr.Row():
108
  with gr.Column(scale=1):
109
+ future = gr.Textbox(
110
+ label="🌱 حلمك المستقبلي",
111
+ placeholder="مثلاً: أن أكون مهندسة تلهم الابتكار",
112
+ lines=2
113
+ )
114
+ value = gr.Textbox(
115
+ label="💎 الأثر الذي تريد تركه",
116
+ placeholder="مثلاً: تحويل الخيال لواقع",
117
+ lines=2
118
+ )
119
+ skill = gr.Textbox(
120
+ label="🚀 مهارتك المميزة",
121
+ placeholder="مثلاً: التحليل الإبداعي وحل المشكلات",
122
+ lines=2
123
+ )
124
+ submit = gr.Button("✨ أنشئ جملتك الملهمة", variant="primary", size="lg")
125
 
126
  with gr.Column(scale=1):
127
+ output = gr.Textbox(
128
+ label="ومضتك الإبداعية",
129
+ lines=5,
130
+ placeholder="ستظهر هنا جملتك الملهمة..."
131
+ )
132
+
133
+ # زر النسخ
134
+ gr.Button("📋 نسخ النص", size="sm")
135
 
136
+ # معلومات إضافية
137
  gr.HTML("""
138
+ <div style="text-align:center; margin-top:30px; padding:20px; background:#f5f8f3; border-radius:10px;">
139
+ <p style="color:#4b6043; font-size:14px;">
140
+ ⚡ يعمل النموذج محلياً على جهازك - لا يحتاج اتصال بالإنترنت بعد التحميل الأول
141
+ </p>
142
+ <p style="color:#768a6c; font-size:12px;">
143
+ © 2025 Eng. Reem Algethami | AI & Creativity
144
+ </p>
145
  </div>
146
  """)
147
 
148
  if __name__ == "__main__":
149
+ demo.launch(
150
+ share=False, # اجعلها True إذا أردت مشاركة الرابط
151
+ server_name="127.0.0.1",
152
+ server_port=7860
153
+ )