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()