Building first chatbot: RASA Core question

Hey there,

This is my first post on the RASA community forums and frankly the first time I’ve been using the RASA framework at all. I’ve been doing a lot of reading on how the framework is built up and what should be used where, however I couldn’t really find clear answers to a few questions. Because someone told me the RASA community is pretty helpful and active, here I am!

So in context of my bachelorthesis I’m supposed to create a chatbot. This chatbot should be able to understand what someone says (duh) and then depending on what is asked be able to interact with an API I yet have to make. Depending on the responses it gets from here it’ll formulate an answer to the user. I’m not concerned about any GUI stuff yet.

I’m now almost finished with the whole NLU part of the bot. I’ve created an optimized a training set and trained the model with it. Only thing I yet have to do is making it able to recognize names. I’ve already found “look-up tables” as a solution to that so that’s not an issue anymore. My real concern now is my decision if I should use RASA core or not.

One of the professors I’m working with advised against using RASA core as it restricts your freedom. It’ll be more difficult to make it work with the API, he says. Now is this true? Is it difficult to make RASA core work with your own additional layers/API?

I know RASA core will help you with the NLG part as well as it will be easier to train the model in regards to context/conversation making. Because that is the thing I’m scared for, does not using RASA core imply you’ll have to hard-code how a conversation flow works? It would be really handy if someone could shine some light on how essential RASA core is and what the implications are of (not) using it.

Thanks in advance!

Perhaps this might help

There are several components to Rasa core. It is perfectly okay to not use rasa core if your case is simple but as your usecase extends adding more and more conversations which overlaps with other conversations, it becomes almost impossible to manage, Rasa core determines based on examples what to do next , the next part could be a text or an API call you would like to make, you could even add a preprocessor(language detection) before calling the right agent, this comes in really handy.

I wrote a deep dive on how rasa core works sometime ago :slight_smile:Rasa Core Deep dive

3 Likes

I wholeheartedly agree with Souvik. You could use any core model that you’d like. However, Rasa can be fully adapted to your own needs. It’s kind of difficult to figure out though, so if you’re not a programmer, you’d best keep your time limits into consideration for your bachelorthesis. If your thesis spans 6 months and you have to spend 4 of those figuring out how Rasa is supposed to work, it might not be worth it.

1 Like

Thanks a lot for your reply! I’ve read both parts of your guide and it illustrates pretty nicely how RASA Core works. How hard is it to start developing such a chatbot from the ground up? Knowing I’ve never worked with RASA before, already have a NLU and have 2 years of computersciences experince. Mostly how much time would have to go into it you think?

Do I read it correctly that it shouldn’t be difficult to connect an API call or database query to the RASA Core? In the sense that it detects the user want to for example make a reservation, will check availability, perform the reservation in the underlying system and give back an acknowledgement to the use.

Thanks a lot for your insights!

I have around 3 months left to have it completely finished, so I’ll have to have this part finished in like 1 month or so. I have some programming experience though as I’ve been through 2 years of computer scienses already. Do you think it’s realistic?

It’ll take some hours out of your week to figure everything out, but it’s possible. As a reference, a colleague of mine (experienced programmer) and I (no experience as a programmer) could build a simple bot from absolute scratch in a week. However, building a complex bot is a lot harder, and we’ve still not accomplished that fully.

Short answer: depends on how complex you want your bot to be.

Alright, I guess It’ll be a challenge I’ll have to take. But I did understand you correctly when you said I could use any core I want, but I’ll have to use a core. Like, not using one and just all programming it myself would be mission impossible?

Do you have experience with the question I asked souvikg10?

Do I read it correctly that it shouldn’t be difficult to connect an API call or database query to the RASA Core? In the sense that it detects the user want to for example make a reservation, will check availability, perform the reservation in the underlying system and give back an acknowledgement to the use.

Within a month? Yes. Definitely. You’d have to program, test and fill it up with content within 3/4 weeks. No can do IMO.

@souvikg10

tagging you formally for Arno’s last question.

How complicated is your use case?

It is FAQ, Actionable, Task driven or multi context?

I have built bots that took me 2 months when i started rasa core for 4 questions cross context though i am a mediocre programmer. understanding rasa core took me more than 6 months/code contributions and countless hours in the forum :smiley: but worth it

randomly - are you from Belgium?

So the use case is as follows:

I have to create a chatbot that will be able to function as a helpdesk for a university. It won’t be so much about answering FAQ’s but it’ll be more about a user (student) being able to ask the chatbot to enroll himself, get a list of available courses of which he can choose which ones he want and then let the chatbot register him for these courses, ask for the e-mail adress of a professor, etc.

So what we have at the moment are some XML data files containing the information we need about courses, professors, students, etc. We know have to build a chatbot and any other layer of code to allow a student to do what is described above. We can ignore any kind of GUI or security aspects for now. It won’t actually be deployed, it’s more like a prototype so it can still have some flaws.

Yes I’m from Belgium! How did you know :stuck_out_tongue:

I am currently living in Belgium so i have heard the surname quite a many times :smiley:

you could take a look at some example bots made with rasa by the rasa developers (Weather bot, Medicare bot) they are all available

if you already have a good NLU, use interactive learning in rasa core to generate stories faster so you can already build up a good conversational model. Then the action API to connect your backend and use it to reply to users

Alright thanks a lot for your help, pretty cool you’re in Belgium at the moment as wel!

I’ve started with the RASA Core now and I figured the best place to start was to write all the data files, such as stories. It’s all a bit confusing tho. Imagine I want to have a story where the user can ask for the status of his enrollment, the bot will have an action that checks this status and returns it. In case the user was enrolled it’ll simply just be this status the bot should return. In case the user is not enrolled the bot should ask if he wants to be enrolled and if so do it. How do I handle such type of scenario in my stories or other files? It’s probably an easy question for you but one I have trouble wrapping my head around as a RASA newbie at the moment :stuck_out_tongue:

Thanks a lot for your help so far!

what you are looking at is a diversion of your conversation, because the slot set here is set by the system, perhaps it is best to just use a custom action, set the slot and depending on the status,

use the dispatcher to utter a template - whether show status or template to ask a question

you should have two stories

- intent_ask_status
- action_check_status
- action_show_enrollment_status (this is triggered by the previous action)
- intent_ask_status
- action_check_status(set slot enrolled to False/No ,, the slot here is a text slot)
- action_ask_enroll
- inform_info{enroll:"no"}
- action_enroll