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, torch_dtype=torch.float16, # استخدام الدقة النصفية لتسريع الأداء low_cpu_mem_usage=True # تحسين استخدام الذاكرة ) device = 'cuda' if torch.cuda.is_available() else 'cpu' model = model.to(device) def generate_summary(text): prompt = f"""لخص النص التالي في فقرة مع استخدام كلمات الربط المناسبة، ثم اكتب النقاط المهمة: النص: {text} التلخيص:""" inputs = tokenizer( prompt, return_tensors="pt", padding=True, truncation=True, max_length=512 # تحديد طول المدخلات ).to(device) # تحسين إعدادات التوليد outputs = model.generate( **inputs, max_length=512, # تقليل الطول الأقصى temperature=0.5, # تقليل العشوائية top_k=20, # تقليل نطاق الاختيارات top_p=0.9, num_return_sequences=1, pad_token_id=tokenizer.eos_token_id, do_sample=True, no_repeat_ngram_size=2 # منع التكرار ) return tokenizer.decode(outputs[0], skip_special_tokens=True) css = """ .rtl-text { direction: rtl; text-align: right; } .container { max-width: 800px; margin: auto; } """ # واجهة مبسطة وسريعة interface = gr.Interface( fn=generate_summary, inputs=gr.Textbox( label="النص المراد تلخيصه", lines=8, placeholder="أدخل النص هنا...", elem_classes="rtl-text" ), outputs=gr.Textbox( label="الملخص", lines=8, elem_classes="rtl-text" ), title="ملخص النصوص العربية", theme=gr.themes.Soft(), css=css, examples=[["الذكاء الاصطناعي تقنية ثورية تغير العالم وتستخدم في مجالات متعددة كالطب والتعليم والصناعة، مما يسهم في تحسين حياة البشر وحل المشكلات المعقدة."]] ) interface.launch()