ScottBot / app.py
scott12355's picture
Update app.py
ca03f91 verified
import gradio as gr
import time
from transformers import pipeline, TFAutoModelForSeq2SeqLM, AutoTokenizer
import torch, os
if torch.backends.mps.is_available():
device = torch.device("mps")
elif torch.cuda.is_available():
device = torch.device("cuda")
else:
device = torch.device("cpu")
print(device)
modelName = "Qwen/Qwen2.5-1.5B-Instruct" #Qwen/Qwen2.5-1.5B-Instruct
chatbot_model = pipeline("text-generation", model=modelName, device=device, batch_size=16)
sentiment_model = pipeline("sentiment-analysis", device=device)
def echo(message, history, system_prompt, tokens):
conversation_history = []
for item in history:
conversation_history.append(
{"role": "user", "content": item[0]},
)
conversation_history.append(
{"role": "assistant", "content": item[1]},
)
sentiment = sentiment_model(message)[0]
if sentiment['label'] == 'NEGATIVE':
prompt = f"The user is upset, respond with empathy and support: {message}"
else:
prompt = f"Respond to the following query: {message}"
conversation_history.append(
{"role": "user", "content": prompt},
)
print(conversation_history)
result = chatbot_model(conversation_history, num_return_sequences=1, max_new_tokens=tokens)
return result[0]['generated_text'][-1]['content']
demo = gr.ChatInterface(
echo,
additional_inputs=[
gr.Textbox(value="You are a friendly Chatbot.", label="System prompt"),
gr.Slider(minimum=1, maximum=500, value=225, step=1, label="Max new tokens"),
],
title="Scotts Chatbot",
description="A friendly, AI-powered chatbot designed to respond to user queries based on the Qwen model.",
# css="footer {visibility: hidden}"
)
if __name__ == "__main__":
demo.launch()