Spaces:
Sleeping
Sleeping
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() |