import gradio as gr from transformers import AutoTokenizer, AutoModelForCausalLM import torch import os from huggingface_hub import login # تسجيل الدخول باستخدام التوكن login(token=os.environ.get('HUGGING_FACE_HUB_TOKEN')) # تهيئة النموذج والتوكينايزر model_name = "google/gemma-2b-it" tokenizer = AutoTokenizer.from_pretrained(model_name) model = AutoModelForCausalLM.from_pretrained(model_name) # نقل النموذج إلى GPU إذا كان متاحاً device = 'cuda' if torch.cuda.is_available() else 'cpu' model = model.to(device) def generate_summary(text): # إعداد البرومبت prompt = f"""قم بتلخيص النص التالي بطريقتين: 1. ملخص مترابط: اكتب فقرة واحدة مترابطة باستخدام كلمات الربط المناسبة مثل (كما، علاوة على ذلك، إضافة إلى ذلك، ولقد، وعليه، ومن ثم...) 2. نقاط رئيسية: اكتب النقاط الرئيسية مسبوقة بـ "**ــ**" قواعد التلخيص: - تقليل 8 كلمات من كل فقرة - الحفاظ على المعنى الأساسي والسياق - الحفاظ على المصطلحات الفلسفية المهمة - التلخيص بأسلوب علمي وواضح النص الأصلي: {text} """ # تحويل النص إلى توكنز inputs = tokenizer(prompt, return_tensors="pt").to(device) # توليد النص outputs = model.generate( **inputs, max_length=1024, temperature=0.7, top_k=50, top_p=0.95, num_return_sequences=1, pad_token_id=tokenizer.eos_token_id ) # تحويل التوكنز إلى نص summary = tokenizer.decode(outputs[0], skip_special_tokens=True) return summary # إنشاء واجهة gradio css = """ .rtl-text { direction: rtl; text-align: right; } """ interface = gr.Interface( fn=generate_summary, inputs=gr.Textbox( label="أدخل النص المراد تلخيصه", lines=10, placeholder="ضع النص هنا...", elem_classes="rtl-text" ), outputs=gr.Textbox( label="الملخص", lines=10, elem_classes="rtl-text" ), title="خدمة تلخيص النصوص العربية باستخدام Gemma-2B", description=""" هذه الخدمة تقوم بتلخيص النصوص العربية مع: - الحفاظ على المعنى الأساسي - استخدام كلمات ربط مناسبة - تقديم نقاط رئيسية """, examples=[ ["يعتبر الذكاء الاصطناعي من أهم التقنيات الحديثة التي غيرت وجه العالم. فهو يستخدم في مجالات عديدة مثل الطب والتعليم والصناعة. كما أنه يساعد في حل المشكلات المعقدة وتحسين جودة الحياة."] ], theme=gr.themes.Soft(), css=css ) # تشغيل الواجهة interface.launch()