Building a multi-channel chatbot with Rasa

(Souvik Ghosh) #1

Hello, I have added a new write up and some code on the latest rasa core 0.11 version. I tried to comb through the changes and see the difference from previous versions

(Ellery Leung) #2

Hi @souvikg10, I have read your article and first of all thanks for your input.

Just want to ask several questions:

  • Is setting up 2 servers (one for EN and one for FR) the only way to handle multiple languages? Have you tried using only a server but two different projects, which loads different model accordingly?
  • According to Rasa doc, the memory usage is high if setting up more than 1 server. In your case how is the memory usage going?

Thank you very much for your help.

(Souvik Ghosh) #3

I hope you can take advantage of the code in someway.

For the first point; at my current company, our deployment is completely orchestrated using Kubernetes. Now it is true that you can manage to load/unload models on the fly but keep in mind some models can be really heavy. You can gain a lot of performance by deploying the chatbots separately in two servers. Imagine vectors of size from FastText, if you have to load/unload everytime it would be expensive. Servers are cheaper trust me

for the second point, we notice with our custom vectors of 1gb , server requirements would be Rasa NLU - minimum 4gb(to be safe) - Memory Rasa Core - min 500mb - Memory

We spin this up twice. But it is all due to Kubernetes that deployment is really simple.

(Ellery Leung) #4

Kubernetes… I see.

At present, what I am trying to do is: to have 2 models: One for English and another for Chinese.

Since I am quite new to Rasa and Kubernetes, and additionally since I need to create a website that website visitors who are interested in our business chatbot service can register and create their own business chatbot on the fly (hope that doesn’t conflict with your company business, I am on the other side of the planet :smiley: ).

My ideas is this:

Website visitor <—> Channel (FB, Website) <—> Botpress <—> Rasa (Core + NLU (Spacy or Stanford NLP))

So, if you don’t mind:

  • What do you think about this architecture? Is it how I should use Rasa?
  • When you say using Kubernetes, are you using KB to host BOTH Botpress and RASA? Or others?
  • If the above architecture is reasonable, what do you think that is the biggest bottleneck/challenge regarding this architectures?
  • Do you have any online resources (books, video etc) that I can refer to so that I can build something like above, using Kubernetes, Rasa and Botpress?

Thank you very much in advance for your explanation.

(Souvik Ghosh) #5

Let’s see if i can break it down well enough.

First of all, you would be surprised to know where i actually work :smiley: . i am not in the bot business, i just love the conversational AI as a concept and how it enables better services for us in the future. I will suggest you (not advertising) to take a look at the articles i wrote on medium and my github(souvikg10) repos for code references. the one above has kubernetes deployment files in them. Go through them and i hope it will be useful. You can always create issues as for now

I will now actively support two of the Rasa stack repositories i created - one more technical (GitHub - souvikg10/rasa-latest: Simple demo to demonstrate the rasa core's latest version)

and one more rasa core driven( GitHub - souvikg10/rasa-core-experiment: An Overview of the different policies for training a dialogue manager ) .

I hope it helps developers/data scientists to get started with Rasa quick enough but also enable them a sandbox to really deep dive into some of the policies. I already saw plenty of tutorials on Rasa NLU so i don’t think it will be useful to make another one again.

I am not completely sure about Botpress, it looks a lot like Chatfuel, maybe this might help you

Given Botpress is open-source, you can definitely host it on Kubernetes and if your idea is to use botpress for multi-bot orchestration, a simple API gateway might suffice

coming to the approach of enabling businesses to build their chatbots on the fly, take a look at

articulate or rasa-ui on github - they also have the same idea.

Personally, if you are hosting chatbots for your clients, Kubernetes is the right direction to go( you are cloud agnostic and you can enable your clients to even self-host your product - a big competitive advantage).

For using Kubernetes, i would tell you to get started with Docker and Docker-compose as well.

Also with multilingual bots - hint, keep an eye on the tracker object as well

(Ellery Leung) #6

Hi @souvikg10

Thank you for your kind response. It is indeed helpful.

Actually I read the chatfuel and Rasa article, and he uses 2 servers (2 localhost with two different ports) . So I guess if I need to go for multilingual, it would be my primary option.

i will also look into your repo and see how it works.

Thank you again for your help. It is very useful.

Once I got something ready I will write my result here.

Thank you again.

(Souvik Ghosh) #7

Indeed, it is easier to start with two servers or two containers(let’s speak kubernetes). You can replace chatfuel with any other functional app that drives the logic of selecting language( user profile/cookies). I am not a big fan of language detection since it doesn’t work between many languages (though for you it could work between english and mandarin),

I know many chatfuel users, there was already a huge demand for dialogflow chatfuel connection. I just tried the same with Rasa.