These docs are for version 1.x of Rasa Open Source.

- [Docs for the new version 2.0 can be found here.](/content/docs/rasa/index.html)

## User Guide

- [Installation](https://legacy-docs-v1.rasa.com/1.10.3/user-guide/installation/)
- [Tutorial: Rasa Basics](https://legacy-docs-v1.rasa.com/1.10.3/user-guide/rasa-tutorial/)
- [Tutorial: Building Assistants](https://legacy-docs-v1.rasa.com/1.10.3/user-guide/building-assistants/)
- [Command Line Interface](https://legacy-docs-v1.rasa.com/1.10.3/user-guide/command-line-interface/)
- [Architecture](https://legacy-docs-v1.rasa.com/1.10.3/user-guide/architecture/)
- [Messaging and Voice Channels](https://legacy-docs-v1.rasa.com/1.10.3/user-guide/messaging-and-voice-channels/)
- [Testing Your Assistant](https://legacy-docs-v1.rasa.com/1.10.3/user-guide/testing-your-assistant/)
- [Setting up CI/CD](https://legacy-docs-v1.rasa.com/1.10.3/user-guide/setting-up-ci-cd/)
- [Validate Data](https://legacy-docs-v1.rasa.com/1.10.3/user-guide/validate-files/)
- [Configuring the HTTP API](https://legacy-docs-v1.rasa.com/1.10.3/user-guide/configuring-http-api/)
- [Deploying Your Rasa Assistant](https://legacy-docs-v1.rasa.com/1.10.3/user-guide/how-to-deploy/)
- [Cloud Storage](https://legacy-docs-v1.rasa.com/1.10.3/user-guide/cloud-storage/)

## NLU

- [About](https://legacy-docs-v1.rasa.com/1.10.3/nlu/about/)
- [Using NLU Only](https://legacy-docs-v1.rasa.com/1.10.3/nlu/using-nlu-only/)
- [Training Data Format](https://legacy-docs-v1.rasa.com/1.10.3/nlu/training-data-format/)
- [Language Support](https://legacy-docs-v1.rasa.com/1.10.3/nlu/language-support/)
- [Choosing a Pipeline](https://legacy-docs-v1.rasa.com/1.10.3/nlu/choosing-a-pipeline/)
- [Components](https://legacy-docs-v1.rasa.com/1.10.3/nlu/components/)
- [Entity Extraction](https://legacy-docs-v1.rasa.com/1.10.3/nlu/entity-extraction/)

## Core

- [About](https://legacy-docs-v1.rasa.com/1.10.3/core/about/)
- [Stories](https://legacy-docs-v1.rasa.com/1.10.3/core/stories/)
- [Domains](https://legacy-docs-v1.rasa.com/1.10.3/core/domains/)
- [Responses](https://legacy-docs-v1.rasa.com/1.10.3/core/responses/)
- [Actions](https://legacy-docs-v1.rasa.com/1.10.3/core/actions/)
- [Reminders and External Events](https://legacy-docs-v1.rasa.com/1.10.3/core/reminders-and-external-events/)
- [Policies](https://legacy-docs-v1.rasa.com/1.10.3/core/policies/)
- [Slots](https://legacy-docs-v1.rasa.com/1.10.3/core/slots/)
- [Forms](https://legacy-docs-v1.rasa.com/1.10.3/core/forms/)
- [Retrieval Actions](https://legacy-docs-v1.rasa.com/1.10.3/core/retrieval-actions/)
- [Interactive Learning](https://legacy-docs-v1.rasa.com/1.10.3/core/interactive-learning/)
- [Fallback Actions](https://legacy-docs-v1.rasa.com/1.10.3/core/fallback-actions/)
- [Knowledge Base Actions](https://legacy-docs-v1.rasa.com/1.10.3/core/knowledge-bases/)

## Conversation Design

- [Dialogue Elements](https://legacy-docs-v1.rasa.com/1.10.3/dialogue-elements/dialogue-elements/)
- [Small Talk](https://legacy-docs-v1.rasa.com/1.10.3/dialogue-elements/small-talk/)
- [Completing Tasks](https://legacy-docs-v1.rasa.com/1.10.3/dialogue-elements/completing-tasks/)
- [Guiding Users](https://legacy-docs-v1.rasa.com/1.10.3/dialogue-elements/guiding-users/)

## API Reference

- [Action Server](https://legacy-docs-v1.rasa.com/1.10.3/api/action-server/)
- [HTTP API](https://legacy-docs-v1.rasa.com/1.10.3/api/http-api/)
- [Jupyter Notebooks](https://legacy-docs-v1.rasa.com/1.10.3/api/jupyter-notebooks/#)
- [Agent](https://legacy-docs-v1.rasa.com/1.10.3/api/agent/)
- [Custom NLU Components](https://legacy-docs-v1.rasa.com/1.10.3/api/custom-nlu-components/)
- [Rasa SDK](https://legacy-docs-v1.rasa.com/1.10.3/api/rasa-sdk/)
- [Events](https://legacy-docs-v1.rasa.com/1.10.3/api/events/)
- [Tracker](https://legacy-docs-v1.rasa.com/1.10.3/api/tracker/)
- [Tracker Stores](https://legacy-docs-v1.rasa.com/1.10.3/api/tracker-stores/)
- [Event Brokers](https://legacy-docs-v1.rasa.com/1.10.3/api/event-brokers/)
- [Lock Stores](https://legacy-docs-v1.rasa.com/1.10.3/api/lock-stores/)
- [Training Data Importers](https://legacy-docs-v1.rasa.com/1.10.3/api/training-data-importers/)
- [Featurization of Conversations](https://legacy-docs-v1.rasa.com/1.10.3/api/core-featurization/)
- [TensorFlow Configuration](https://legacy-docs-v1.rasa.com/1.10.3/api/tensorflow_usage/)
- [Migration Guide](https://legacy-docs-v1.rasa.com/1.10.3/migration-guide/)
- [Rasa Open Source Change Log](https://legacy-docs-v1.rasa.com/1.10.3/changelog/)

## Migrate from (beta)

- [Dialogflow](https://legacy-docs-v1.rasa.com/1.10.3/migrate-from/google-dialogflow-to-rasa/)
- [Wit.ai](https://legacy-docs-v1.rasa.com/1.10.3/migrate-from/facebook-wit-ai-to-rasa/)
- [LUIS](https://legacy-docs-v1.rasa.com/1.10.3/migrate-from/microsoft-luis-to-rasa/)
- [IBM Watson](https://legacy-docs-v1.rasa.com/1.10.3/migrate-from/ibm-watson-to-rasa/)

## Reference

- [Glossary](https://legacy-docs-v1.rasa.com/1.10.3/glossary/)

## Versions

viewing: 1.10.3

**Warning:** This document is for an old version of Rasa. The latest version is 1.10.26.

# Jupyter Notebooks

This page contains the most important methods for using Rasa in a Jupyter notebook.

Running asynchronous Rasa code in Jupyter Notebooks requires an extra requirement, since Jupyter Notebooks already run on event loops. Install this requirement in the command line before launching jupyter:

```
pip install nest_asyncio
```

Then in the first cell of your notebook, include:

```
import nest_asyncio
nest_asyncio.apply()
print("Event loop ready.")
```

## Create a project

First, you need to create a project if you don’t already have one. To do this, run this cell, which will create the `test-project` directory and make it your working directory:

```
from rasa.cli.scaffold import create_initial_project
import os
project = "test-project"
create_initial_project(project)
os.chdir(project)
print(os.listdir("."))
```

## Train a Model

To train a model, you will have to tell the `train` function where to find the relevant files. To define variables that contain these paths, run:

```
config = "config.yml"
training_files = "data/"
domain = "domain.yml"
output = "models/"
print(config, training_files, domain, output)
```

Now we can train a model by passing in the paths to the `rasa.train` function. Note that the training files are passed as a list. When training has finished, `rasa.train` returns the path where the trained model has been saved.

```
import rasa
model_path = rasa.train(domain, config, [training_files], output)
print(model_path)
```

## Chat with your assistant

To start chatting to an assistant, call the `chat` function, passing in the path to your saved model:

```
from rasa.jupyter import chat
chat(model_path)
```

## Evaluate your model against test data

Rasa has a convenience function for getting your training data. Rasa’s `get_core_nlu_directories` is a function which recursively finds all the stories and NLU data files in a directory and copies them into two temporary directories. The return values are the paths to these newly created directories.

```
import rasa.data as data
stories_directory, nlu_data_directory = data.get_core_nlu_directories(training_files)
print(stories_directory, nlu_data_directory)
```

To test your model, call the `test` function, passing in the path to your saved model and directories containing the stories and nlu data to evaluate on.

```
rasa.test(model_path, stories_directory, nlu_data_directory)
print("Done testing.")
```

The results of the core evaluation will be written to a file called `results`. NLU errors will be reported to `errors.json`. Together, they contain information about the accuracy of your model’s predictions and other metrics.

```
if os.path.isfile("errors.json"):
    print("NLU Errors:")
    print(open("errors.json").read())
else:
    print("No NLU errors.")

if os.path.isdir("results"):
    print("\n")
    print("Core Errors:")
    print(open("results/failed_stories.md").read())
```
