import gradio as gr from transformers import AutoTokenizer, AutoModelForCausalLM import torch # تحميل النموذج والمحلل اللغوي model_id = "silma-ai/SILMA-9B-Instruct-v1.0" tokenizer = AutoTokenizer.from_pretrained(model_id) model = AutoModelForCausalLM.from_pretrained(model_id, device_map="cpu") # استخدم المعالج بدلاً من CUDA # دالة التلخيص def summarize(text): try: prompt = f"[INST] قم بتلخيص النص التالي بطريقتين:\n\n" prompt += "1. ملخص مترابط: اكتب فقرة واحدة مترابطة باستخدام كلمات الربط المناسبة مثل (كما، علاوة على ذلك، إضافة إلى ذلك، ولقد، وعليه، ومن ثم...)\n" prompt += "2. نقاط رئيسية: اكتب النقاط الرئيسية مسبوقة بـ '**ــ**'\n\n" prompt += "قواعد التلخيص:\n" prompt += "- تقليل 8 كلمات من كل فقرة\n" prompt += "- الحفاظ على المعنى الأساسي والسياق\n" prompt += "- الحفاظ على المصطلحات الفلسفية المهمة\n" prompt += "- التلخيص بأسلوب علمي وواضح\n\n" prompt += f"النص الأصلي:\n{text} [/INST]" # تحليل النص بدون .to("cuda") inputs = tokenizer(prompt, return_tensors="pt") # توليد النص outputs = model.generate( inputs.input_ids, max_length=300, num_return_sequences=1, temperature=0.7, top_p=0.95, top_k=50, no_repeat_ngram_size=2, ) # فك ترميز الإخراج summarized_text = tokenizer.decode(outputs[0], skip_special_tokens=True) return summarized_text except Exception as e: return f"❌ خطأ: {str(e)}" # بناء واجهة Gradio interface = gr.Interface( fn=summarize, inputs=gr.Textbox(label="النص"), outputs=gr.Textbox(label="الملخص"), title="SILMA AI Summarizer", description="أدخل نصًا وسيقوم النموذج بتلخيصه باستخدام تقنيتين مختلفتين.", ) # تشغيل التطبيق interface.launch()