The source code in this repository shows a simple Rasa chatbot fallback mechanism, which gets relevant information from ZIR Semantic Search.
Table of contents
Rasa Bot & Zir
Rasa is the leading conversational AI platform, for personalized conversations at scale. Developers provide the questions they expect the end customer to ask and the Rasa bot, using AI, predicts and matches what the customer intended to ask. With this information at hand, developers can easily match what the bot should respond to.
This is all well unless when the customer asks a valid question the developer did not expect, for such a scenario Rasa provides a fallback mechanism.
Although Rasa will generalize to unseen messages, some messages might receive a low classification confidence. Using Fallbacks will help ensure that these low confidence messages are handled gracefully, giving your assistant the option to either respond with a default message or attempt to disambiguate the user input.
Using the mechanism the bot can ask a fallback action and search through the reviews uploaded in Zir-AI with the help of custom actions. The relevant information is shown if available otherwise if the confidence of the question to reviews available is low, we fallback to a generic statement.
The results sum up to be this:
Setup & Play
Clone this repository and afterwards install Rasa using following instructions.
You might want to create a virtual environment to isolate the dependencies rasa requires.
Set-up Rasa
Follow the rasa installation instructions or copy-paste the following commands in terminal
pip3 install -U pip
pip3 install rasa
rasa --version
This should print the rasa version similar to follow
Rasa Version : 2.7.0
Minimum Compatible Version: 2.6.0
Rasa SDK Version : 2.7.0
Rasa X Version : None
Python Version : 3.8.5
Operating System : Linux
Python Path : /bin/python3
Windows & WSL (Windows Subsystem for Linux) works too
Set-up repo
You should be in the cloned repository folder before running following commands. The bot uses spacy in its pipeline & requires you to have it installed. Run the following commands in shell
pip install -r requirements.txt
python3 -m spacy download en_core_web_md
This will install the spacy model en_core_web_md
the bot is configured with.
Now you'll need to train the rasa bot
rasa train
Running the demo
While running the model, you are required to run the rasa action server along with the rasa bot. So in one terminal run
rasa run actions
In another terminal, you can either play with the bot in your shell
or on the
browser.
To talk to the bot in shell run
rasa shell
Or to talk to the bot in the browser run
rasa run --credentials ./credentials.yml --enable-api --auth-token XYZ123 --model ./models --endpoints ./endpoints.yml --cors "*"
Now, open the index.html
in your browser to talk to the bot.
Customizing the bot
Use the following information to customize the bot and the source of data.
Data
Data for the bot is sourced from OpinRank
and reviews for Hotel Jumeirah are specifically used for this bot. Reviews are
parsed from https://github.com/amin3141/zir-souffle. Use hotels.py
to generate
the output json
and the reviews.db
. Copy the generated reviews.db
file to
this repository.
Create a corpus on Zir AI and upload all the JSON files. Create an API key for access and note down the following information
- API key
- corpus id
- customer id
Rasa Custom Action
Use the above-collected information and replace the information in
actions/actions.py
and you're good to go.
customer_id = "1835841754"
corpus_id = 1
header = {
"customer-id": customer_id,
"x-api-key": "zqt_WvU_2atFHgqYxxT2sQswwIUgogI8K3QeWs0oqA"
}