persian-article / app.py
mohammadshahabiy's picture
Update app.py
020ae74 verified
raw
history blame
1.97 kB
import gradio as gr
from transformers import AutoTokenizer, AutoModelForCausalLM, pipeline
# بارگذاری مدل GPT-2-Persian
model_name = "bolbolzaban/gpt2-persian"
# بارگذاری توکن‌ایزر و مدل
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)
# ایجاد pipeline برای متن‌سازی
pipe = pipeline("text-generation", model=model, tokenizer=tokenizer)
def respond(
message,
history: list[tuple[str, str]],
system_message,
max_tokens,
temperature,
top_p,
):
# ساخت پیام‌ها برای مدل
prompt = system_message + "\n\n" # اضافه کردن پیام سیستم
for val in history:
if val[0]:
prompt += f"کاربر: {val[0]}\n"
if val[1]:
prompt += f"دستیار: {val[1]}\n"
prompt += f"کاربر: {message}\nدستیار:"
# تولید پاسخ با استفاده از مدل
response = pipe(
prompt,
max_new_tokens=max_tokens,
temperature=temperature,
top_p=top_p,
do_sample=True,
)[0]["generated_text"]
# حذف prompt از پاسخ
response = response[len(prompt):].strip()
yield response
# ایجاد رابط کاربری با Gradio
demo = gr.ChatInterface(
respond,
additional_inputs=[
gr.Textbox(value="شما یک ربات دوست‌داشتنی هستید.", label="پیام سیستم"),
gr.Slider(minimum=1, maximum=1024, value=256, step=1, label="حداکثر توکن‌های جدید"),
gr.Slider(minimum=0.1, maximum=2.0, value=0.7, step=0.1, label="دما (Temperature)"),
gr.Slider(
minimum=0.1,
maximum=1.0,
value=0.9,
step=0.05,
label="Top-p (نمونه‌گیری هسته‌ای)",
),
],
)
# اجرای برنامه
if __name__ == "__main__":
demo.launch()