import gradio as gr from transformers import AutoModelForSeq2SeqLM, AutoTokenizer # تحميل النموذج والتوكنايزر model_id = "methodya/arabic-summarizer-philosophy" model = AutoModelForSeq2SeqLM.from_pretrained(model_id) tokenizer = AutoTokenizer.from_pretrained(model_id) # دالة التلخيص مع المعاملات الجديدة def summarize(text, max_length=150, num_beams=7, length_penalty=0.8): # تحويل القيم إلى النوع المناسب max_length = int(max_length) num_beams = int(num_beams) length_penalty = float(length_penalty) # تجهيز البيانات للنموذج inputs = tokenizer(text, return_tensors="pt", max_length=2048, truncation=True) outputs = model.generate( **inputs, max_length=max_length, num_beams=num_beams, length_penalty=length_penalty, early_stopping=True ) return tokenizer.decode(outputs[0], skip_special_tokens=True) # إعداد واجهة Gradio مع ربط الستايل الخارجي interface = gr.Interface( fn=summarize, inputs=[ gr.Textbox(lines=8, label="النص"), # النص الأصلي gr.Slider(50, 250, value=150, label="طول الملخص"), # max_length gr.Slider(1, 10, value=7, step=1, label="دقة التلخيص (num_beams)"), # num_beams gr.Slider(0.1, 2.0, value=0.8, step=0.1, label="معامل الطول (length_penalty)") # length_penalty ], outputs=gr.Textbox(label="الملخص"), # النص الملخص title="ملخص النصوص الفلسفية", css=".gradio-container {background: #f9fafb !important} " + open("style.css").read(), submit_btn="تلخيص", # تغيير زر Submit clear_btn="مسح" # تغيير زر Clear ) # تشغيل التطبيق interface.launch()