Persona_Bot / app.py
YUGISUNG's picture
Update app.py
179e55e verified
import gradio as gr
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
# Load DialoGPT-medium (fast and lightweight)
model_name = "microsoft/DialoGPT-medium"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)
# Simple persona presets
persona_prompts = {
"Friendly": "You are a kind and friendly chatbot who always tries to brighten someone's day.",
"Professional": "You are a professional assistant who responds with clarity and precision.",
"Sarcastic": "You are a sarcastic chatbot who always has a witty, dry reply.",
"Motivational Coach": "You are a motivational coach who always uplifts and encourages the user."
}
# Chat function
def chatbot(persona, input_text):
prompt = persona_prompts.get(persona, "") + " " + input_text
input_ids = tokenizer.encode(prompt + tokenizer.eos_token, return_tensors="pt")
output_ids = model.generate(
input_ids,
max_length=100,
pad_token_id=tokenizer.eos_token_id,
do_sample=True,
top_k=50,
top_p=0.95,
temperature=0.7
)
response = tokenizer.decode(output_ids[:, input_ids.shape[-1]:][0], skip_special_tokens=True)
return response.strip()
# Gradio UI
iface = gr.Interface(
fn=chatbot,
inputs=[
gr.Dropdown(label="Choose a Persona", choices=list(persona_prompts.keys())),
gr.Textbox(label="input_text", placeholder="Ask something...")
],
outputs="text",
title="Persona Bot (DialoGPT)",
description="Choose a simple chatbot persona: Friendly, Professional, Sarcastic, or Motivational Coach."
)
iface.launch()