HomerChatbot / app.py
hasorez's picture
first commit
35c40be
Raw
History Blame Contribute Delete
1.37 kB
import gradio as gr
from transformers import AutoModelWithLMHead, AutoTokenizer
import torch
def flatten(l):
return [item for sublist in l for item in sublist]
tokenizer = AutoTokenizer.from_pretrained("model")
model = AutoModelWithLMHead.from_pretrained("model")
with gr.Blocks() as demo:
chatbot = gr.Chatbot()
msg = gr.Textbox()
clear = gr.ClearButton([msg, chatbot])
def respond(message, chat_history):
input_ids = tokenizer.encode(message + tokenizer.eos_token, return_tensors='pt')
if len(chat_history):
tokenized_chat_history = [tokenizer.encode(x + tokenizer.eos_token, return_tensors='pt')[0] for x in flatten(chat_history)]
tokenized_chat_history = torch.cat(tokenized_chat_history).unsqueeze(0)
bot_input_ids = torch.cat([tokenized_chat_history, input_ids], dim=-1) if len(chat_history) else input_ids
output = model.generate(
bot_input_ids,
max_new_tokens=50,
pad_token_id=tokenizer.eos_token_id,
do_sample=True,
top_k=50,
top_p=0.95,
)
bot_message = str(tokenizer.decode(output[:, bot_input_ids.shape[-1]:][0], skip_special_tokens=True))
chat_history.append((message, bot_message))
return "", chat_history
msg.submit(respond, [msg, chatbot], [msg, chatbot])
demo.launch()