Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 4

import numpy as np

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):

text = input("User >> ")

if text.lower().strip() in ['bye', 'quit', 'exit']:

self.end_chat=True

print('ChatBot >> See you soon! Bye!')


time.sleep(1)
print('\nQuitting ChatBot ...')
else:

self.new_user_input_ids = tokenizer.encode(text +
tokenizer.eos_token, \
return_tensors='pt')

def bot_response(self):

if self.chat_history_ids is not None:


self.bot_input_ids = torch.cat([self.chat_history_ids,
self.new_user_input_ids], dim=-1)
else:

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()

print('ChatBot >> '+ 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)

while response == '':


i = 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()

Initializing ChatBot ...


Type "bye" or "quit" or "exit" to end chat

ChatBot >> Hey, Great day! I am your virtual assistant

User >> How are you?

ChatBot >> I'm good, how are you?

User >> I am fine. My name is Hanzla.

ChatBot >> Nice to meet you Hanzla.

User >> Nice to meet you too. I study in Delhi India

ChatBot >> Nice to meet you too.

User >> what is your favourite book?

ChatBot >> I don't read books.


User >> It was nice to meet you. Bye!

ChatBot >> Bye!

User >> exit

ChatBot >> See you soon! Bye!

Quitting ChatBot ...

You might also like