Tutorial: Building Assistants
These docs are for version 1.x of Rasa Open Source.
User Guide
Installation
Tutorial: Rasa Basics
Tutorial: Building Assistants
Command Line Interface
Architecture
Messaging and Voice Channels
Testing Your Assistant
Setting up CI/CD
Validate Data
Configuring the HTTP API
Deploying Your Rasa Assistant
Cloud Storage
NLU
About
Using NLU Only
Training Data Format
Language Support
Choosing a Pipeline
Components
Entity Extraction
Core
About
Stories
Domains
Responses
Actions
Reminders and External Events
Policies
Slots
Forms
Retrieval Actions
Interactive Learning
Fallback Actions
Knowledge Base Actions
Conversation Design
Dialogue Elements
Small Talk
Completing Tasks
Guiding Users
API Reference
Action Server
HTTP API
Jupyter Notebooks
Agent
Custom NLU Components
Rasa SDK
Events
Tracker
Tracker Stores
Event Brokers
Lock Stores
Training Data Importers
Featurization of Conversations
TensorFlow Configuration
Migration Guide
Rasa Open Source Change Log
Migrate from (beta)
Dialogflow
Wit.ai
LUIS
IBM Watson
Reference
Glossary
Versions
viewing: 1.10.20
Tutorial: Building Assistants
After following the basics of setting up an assistant in the Rasa Tutorial, we’ll now walk through building a basic FAQ chatbot and then build a bot that can handle contextual conversations.
Building a simple FAQ assistant
FAQ assistants are the simplest assistants to build and a good place to get started. These assistants allow the user to ask a simple question and get a response. We’re going to build a basic FAQ assistant using features of Rasa designed specifically for this type of assistant.
In this section we’re going to cover the following topics:
- Responding to simple intents with the MemoizationPolicy
- Handling FAQs using the ResponseSelector
We’re going to use content from Sara, the Rasa assistant that, amongst other things, helps the user get started with the Rasa products. You should first install Rasa using the Step-by-step Installation Guide and then follow the Rasa Tutorial to make sure you know the basics.
To prepare for this tutorial, we’re going to create a new directory and start a new Rasa project.
mkdir rasa-assistant
rasa init
Let’s remove the default content from this bot, so that the nlu.md, stories.md and domain.yml files are empty.
Memoization Policy
The MemoizationPolicy remembers examples from training stories for up to a max_history of turns. The number of “turns” includes messages the user sent, and actions the assistant performed. For the purpose of a simple, context-less FAQ bot, we only need to pay attention to the last message the user sent, and therefore we’ll set that to 1.
You can do this by editing your config.yml file as follows:
policies:
- name: MemoizationPolicy
max_history: 1
- name: MappingPolicy
Now that we’ve defined our policies, we can add some stories for the goodbye, thank and greet intents to the stories.md file:
## greet
* greet
- utter_greet
## thank
* thank
- utter_noworries
## goodbye
* bye
- utter_bye
We’ll also need to add the intents, actions and responses to our domain.yml file in the following sections:
intents:
- greet
- bye
- thank
responses:
utter_noworries:
- text: No worries!
utter_greet:
- text: Hi
utter_bye:
- text: Bye!
Finally, we’ll copy over some NLU data from Sara into our nlu.md file (more can be found here):
## intent:greet
- Hi
- Hey
- Hi bot
- Hey bot
- Hello
- Good morning
- hi again
- hi folks
## intent:bye
- goodbye
- goodnight
- good bye
- good night
- see ya
- toodle-oo
- bye bye
- gotta go
- farewell
## intent:thank
- Thanks
- Thank you
- Thank you so much
- Thanks bot
- Thanks for that
- cheers
You can now train a first model and test the bot, by running the following commands:
rasa train
rasa shell
This bot should now be able to reply to the intents we defined consistently, and in any order.
For example:
While it’s good to test the bot interactively, we should also add end to end test cases that can later be included as part of a CI/CD system. End-to-end test conversations include NLU data, so that both components of Rasa can be tested. The file tests/conversation_tests.md contains example test conversations. Delete all the test conversations and replace them with some test conversations for your assistant so far:
## greet + goodbye
* greet: Hi!
- utter_greet
* bye: Bye
- utter_bye
## greet + thanks
* greet: Hello there
- utter_greet
* thank: thanks a bunch
- utter_noworries
## greet + thanks + goodbye
* greet: Hey
- utter_greet
* thank: thank you
- utter_noworries
* bye: bye bye
- utter_bye
To test our model against the test file, run the command:
rasa test --stories tests/conversation_tests.md
The test command will produce a directory named results. It should contain a file called failed_stories.md, where any test cases that failed will be printed. It will also specify whether it was an NLU or Core prediction that went wrong. As part of a CI/CD pipeline, the test option --fail-on-prediction-errors can be used to throw an exception that stops the pipeline.
Using the features we described in this tutorial, you can easily build a context-less assistant. When you’re ready to enhance your assistant with context, check out Building a contextual assistant.