gemmaphilo / app.V5py
methodya's picture
Rename app.py to app.V5py
e557495 verified
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()