Tutorial: Rasa Basics
Tutorial: Rasa Basics
This page explains the basics of building an assistant with Rasa and shows the structure of a Rasa project. You can test it out right here without installing anything. You can also install Rasa and follow along in your command line.
The glossary contains an overview of the most common terms you’ll see in the Rasa documentation.
Steps
- 1. Create a New Project
- 2. View Your NLU Training Data
- 3. Define Your Model Configuration
- 4. Write Your First Stories
- 5. Define a Domain
- 6. Train a Model
- 7. Test Your Assistant
- 8. Talk to Your Assistant
In this tutorial, you will build a simple, friendly assistant which will ask how you’re doing and send you a fun picture to cheer you up if you are sad.
1. Create a New Project
The first step is to create a new Rasa project. To do this, run:
rasa init --no-prompt
The rasa init command creates all the files that a Rasa project needs and trains a simple bot on some sample data.
This creates the following files:
__init__.py |
an empty file that helps python find your actions |
actions.py |
code for your custom actions |
config.yml ‘*’ |
configuration of your NLU and Core models |
credentials.yml |
details for connecting to other services |
data/nlu.md ‘*’ |
your NLU training data |
data/stories.md ‘*’ |
your stories |
domain.yml ‘*’ |
your assistant’s domain |
endpoints.yml |
details for connecting to channels like fb messenger |
models/<timestamp>.tar.gz |
your initial model |
The most important files are marked with a ‘*’. You will learn about all of these in this tutorial.
2. View Your NLU Training Data
The first piece of a Rasa assistant is an NLU model. NLU stands for Natural Language Understanding, meaning turning user messages into structured data. To do this with Rasa, you provide training examples that show how Rasa should understand user messages and then train a model by showing it those examples.
Run the code cell below to see the NLU training data created by the rasa init command:
cat data/nlu.md
Lines starting with ## define the names of your intents, which are groups of messages with the same meaning.
3. Define Your Model Configuration
The configuration file defines the NLU and Core components that your model will use. In this example, your NLU model will use the supervised_embeddings pipeline. You can learn about the different NLU pipelines here.
Let’s take a look at your model configuration file:
cat config.yml
The language and pipeline keys specify how the NLU model should be built. The policies key defines the policies that the Core model will use.
4. Write Your First Stories
At this stage, you will teach your assistant how to respond to your messages. This is called dialogue management and is handled by your Core model.
Below is an example of a simple conversation:
## story1
* greet
- utter_greet
Lines that start with - are actions taken by the assistant. Run the command below to view the example stories inside the file data/stories.md:
cat data/stories.md
5. Define a Domain
The domain defines the universe your assistant lives in: what user inputs it should expect, what actions it should be able to predict, how to respond, and what information to store. The domain for our assistant is saved in a file called domain.yml:
cat domain.yml
The parts of the domain include:
intents |
things you expect users to say |
actions |
things your assistant can do and say |
responses |
response strings for the things your assistant can say |
6. Train a Model
Anytime we add new NLU or Core data, we need to re-train a model. To do this, run the command below:
rasa train
The rasa train command will look for both NLU and Core data and will train a combined model.
7. Test Your Assistant
After training a model, you want to check your assistant's behavior:
rasa test
See Testing Your Assistant for more on evaluating your model.
8. Talk to Your Assistant
Congratulations! 🚀 You just built an assistant powered entirely by machine learning. Start talking to your assistant by running:
rasa shell
Next Steps
Now that you’ve built your first Rasa bot, it’s time to explore more advanced Rasa features:
- Learn how to implement business logic using forms
- Learn how to integrate other APIs using custom actions
- Learn how to connect your bot to different messaging apps
- Learn about customizing the components in your NLU pipeline
- Read about custom and built-in entities
You can also use Rasa X to collect more conversations and improve your assistant:
👋 I can help you get started with Rasa and answer your technical questions.