pppposnmd / app.py
renpley2's picture
Update app.py
cae40f9 verified
Raw
History Blame Contribute Delete
1.75 kB
# نصب کتابخانه‌ها (در HuggingFace Space خودکار نصب می‌شود)
# !pip install transformers accelerate gradio
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
import gradio as gr
MODEL_NAME = "openai/gpt-oss-120b"
# لود tokenizer و مدل با کمترین مصرف حافظه
tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME)
model = AutoModelForCausalLM.from_pretrained(
MODEL_NAME,
device_map="auto", # توزیع خودکار بین CPU/GPU
torch_dtype=torch.float16,
offload_folder="offload", # ذخیره موقت روی دیسک
)
def chat_with_bot(user_input, history=[]):
# اضافه کردن تاریخچه
history_text = ""
for user_msg, bot_msg in history:
history_text += f"User: {user_msg}\nBot: {bot_msg}\n"
prompt = history_text + f"User: {user_input}\nBot:"
inputs = tokenizer(prompt, return_tensors="pt").to("cuda")
outputs = model.generate(
**inputs,
max_new_tokens=300,
temperature=0.7,
top_p=0.9
)
bot_reply = tokenizer.decode(outputs[0], skip_special_tokens=True)
bot_reply = bot_reply.split("Bot:")[-1].strip()
history.append((user_input, bot_reply))
return bot_reply, history
# رابط گرافیکی با Gradio
with gr.Blocks() as demo:
chatbot = gr.Chatbot()
msg = gr.Textbox(placeholder="پیام خودت رو وارد کن...")
clear = gr.Button("پاک کردن تاریخچه")
def respond(message, chat_history):
reply, history = chat_with_bot(message, chat_history)
return history, history
msg.submit(respond, [msg, chatbot], [chatbot])
clear.click(lambda: [], None, chatbot)
demo.launch()