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) device = 'cuda' if torch.cuda.is_available() else 'cpu' model = model.to(device) def generate_summary(text): prompt = f"""أنت مختص في تلخيص النصوص الفلسفية. قم بتلخيص النص التالي: النص: {text} يجب أن يتضمن التلخيص: 1. فقرة موجزة تشرح جوهر الفكرة (3-4 أسطر كحد أقصى) 2. ثلاث نقاط رئيسية مستخلصة من النص 3. ذكر الشخصيات الرئيسية وأدوارهم في النص نسق الإجابة كالتالي: الفكرة الرئيسية: [اكتب هنا الفقرة] النقاط الأساسية: 1. [النقطة الأولى] 2. [النقطة الثانية] 3. [النقطة الثالثة] الشخصيات المحورية: - [اسم الشخصية]: [دورها] """ inputs = tokenizer(prompt, return_tensors="pt").to(device) outputs = model.generate( **inputs, max_length=512, temperature=0.2, # خفض الحرارة للحصول على إجابات أكثر تماسكاً do_sample=False # إيقاف العشوائية للحصول على إجابات محددة ) return tokenizer.decode(outputs[0], skip_special_tokens=True) css = """ .rtl-text { direction: rtl; text-align: right; font-family: Arial, sans-serif; line-height: 1.6; } """ interface = gr.Interface( fn=generate_summary, inputs=gr.Textbox( label="النص المراد تلخيصه", lines=6, elem_classes="rtl-text" ), outputs=gr.Textbox( label="التلخيص", lines=10, elem_classes="rtl-text" ), title="ملخص النصوص الفلسفية", theme=gr.themes.Soft(), css=css ) interface.launch()