Conversational Ai Chatbot
Conversational Ai Chatbot
import time
import os
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
checkpoint = "microsoft/DialoGPT-medium"
tokenizer = AutoTokenizer.from_pretrained(checkpoint)
model = AutoModelForCausalLM.from_pretrained(checkpoint)
{"model_id":"1a57186592b5425f8ac1b71a1816d40c","version_major":2,"version_min
or":0}
{"model_id":"f3a07af02cc543b8a202d8a148e9e326","version_major":2,"version_min
or":0}
{"model_id":"324f2626dc0e44988d1bbce09b8d78a9","version_major":2,"version_min
or":0}
{"model_id":"b517ddd83b2c4e2092def32ec5f05594","version_major":2,"version_min
or":0}
{"model_id":"0e4cdb3b7d784b2293d5399227a24338","version_major":2,"version_min
or":0}
class ChatBot():
def __init__(self):
self.chat_history_ids = None
self.bot_input_ids = None
self.end_chat = False
self.welcome()
def welcome(self):
print("Initializing ChatBot ...")
time.sleep(2)
print('Type "bye" or "quit" or "exit" to end chat \n')
time.sleep(3)
greeting = np.random.choice([
"Welcome, I am ChatBot, here for your kind service",
"Hey, Great day! I am your virtual assistant",
"Hello, it's my pleasure meeting you",
"Hi, I am a ChatBot. Let's chat!"
])
print("ChatBot >> " + greeting)
def user_input(self):
self.end_chat=True
self.new_user_input_ids = tokenizer.encode(text +
tokenizer.eos_token, \
return_tensors='pt')
def bot_response(self):
self.bot_input_ids = self.new_user_input_ids
self.chat_history_ids = model.generate(self.bot_input_ids,
max_length=1000, \
pad_token_id=tokenizer.eos_token_id)
response = tokenizer.decode(self.chat_history_ids[:,
self.bot_input_ids.shape[-1]:][0], \
skip_special_tokens=True)
if response == "":
response = self.random_response()
def random_response(self):
i = -1
response = tokenizer.decode(self.chat_history_ids[:,
self.bot_input_ids.shape[i]:][0], \
skip_special_tokens=True)
if response.strip() == '?':
reply = np.random.choice(["I don't know",
"I am not sure"])
else:
reply = np.random.choice(["Great",
"Fine. What's up?",
"Okay"
])
return reply
bot = ChatBot()
while True:
bot.user_input()
if bot.end_chat:
break
bot.bot_response()