gemmaphilo / app.py
methodya's picture
Create app.py
d4cb9a4 verified
raw
history blame
2.06 kB
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 summarize(text, max_length=150, num_beams=7, length_penalty=0.8):
prompt = f"""لخص النص التالي مع التركيز على المفاهيم الفلسفية الأساسية:
النص:
{text}
قدم التلخيص بالشكل التالي:
1- الفكرة المحورية (باختصار)
2- المفاهيم الرئيسية
3- العلاقات بين الشخصيات والأفكار
"""
inputs = tokenizer(
prompt,
return_tensors="pt",
max_length=2048,
truncation=True
).to(device)
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)
# CSS لتحسين المظهر
css = """
.gradio-container {background: #f9fafb !important}
.rtl-text {
direction: rtl;
text-align: right;
font-family: Arial, sans-serif;
line-height: 1.6;
}
"""
interface = gr.Interface(
fn=summarize,
inputs=[
gr.Textbox(lines=8, label="النص", elem_classes="rtl-text"),
gr.Slider(50, 250, value=150, label="طول الملخص"),
gr.Slider(1, 10, value=7, step=1, label="دقة التلخيص (num_beams)"),
gr.Slider(0.1, 2.0, value=0.8, step=0.1, label="معامل الطول")
],
outputs=gr.Textbox(label="الملخص", elem_classes="rtl-text"),
title="ملخص النصوص الفلسفية",
theme=gr.themes.Soft(),
css=css
)
interface.launch()