# Command Line Interface

The command line interface (CLI) gives you easy-to-remember commands for common tasks.

| Command                         | Effect                                                                                  |
|---------------------------------|-----------------------------------------------------------------------------------------|
| `rasa init`                     | Creates a new project with example training data, actions, and config files.          |
| `rasa train`                    | Trains a model using your NLU data and stories, saves trained model in `./models`.   |
| `rasa interactive`              | Starts an interactive learning session to create new training data by chatting.       |
| `rasa shell`                    | Loads your trained model and lets you talk to your assistant on the command line.      |
| `rasa run`                      | Starts a Rasa server with your trained model. See the [Configuring the HTTP API](https://legacy-docs-v1.rasa.com/1.10.11/user-guide/configuring-http-api/#configuring-http-api) docs for details. |
| `rasa run actions`              | Starts an action server using the Rasa SDK.                                           |
| `rasa visualize`                | Visualizes stories.                                                                    |
| `rasa test`                     | Tests a trained Rasa model using your test NLU data and stories.                     |
| `rasa data split nlu`          | Performs a split of your NLU data according to the specified percentages.             |
| `rasa data convert nlu`        | Converts NLU training data between different formats.                                  |
| `rasa export`                   | Export conversations from a tracker store to an event broker.                         |
| `rasa x`                        | Launch Rasa X locally.                                                                |
| `rasa -h`                       | Shows all available commands.                                                          |

## Create a new project

A single command sets up a complete project for you with some example training data.

```
rasa init
```

This creates the following files:

```
.
├── __init__.py
├── actions.py
├── config.yml
├── credentials.yml
├── data
│   ├── nlu.md
│   └── stories.md
├── domain.yml
├── endpoints.yml
└── models
    └── <timestamp>.tar.gz
```

The `rasa init` command will ask you if you want to train an initial model using this data.  
If you answer no, the `models` directory will be empty.

With this project setup, common commands are very easy to remember.  
To train a model, type `rasa train`, to talk to your model on the command line, `rasa shell`,  
to test your model type `rasa test`.

## Train a Model

The main command is:

```
rasa train
```

This command trains a Rasa model that combines a Rasa NLU and a Rasa Core model.  
If you only want to train an NLU or a Core model, you can run `rasa train nlu` or `rasa train core`.  
However, Rasa will automatically skip training Core or NLU if the training data and config haven’t changed.

`rasa train` will store the trained model in the directory defined by `--out`.  
The name of the model is per default `<timestamp>.tar.gz`.  
If you want to name your model differently, you can specify the name using `--fixed-model-name`.

The following arguments can be used to configure the training process:

```
usage: rasa train [-h] [-v] [-vv] [--quiet] [--data DATA [DATA ...]]
                  [-c CONFIG] [-d DOMAIN] [--out OUT]
                  [--augmentation AUGMENTATION] [--debug-plots]
                  [--fixed-model-name FIXED_MODEL_NAME] [--persist-nlu-data]
                  [--force]
                  {core,nlu} ...
```

### Command Arguments

#### Positional arguments:
- `{core,nlu}`
  - `core`: Trains a Rasa Core model using your stories.
  - `nlu`: Trains a Rasa NLU model using your NLU data.

#### Optional arguments:
- `-h, --help`: show this help message and exit
- `--data DATA [DATA ...]`: Paths to the Core and NLU data files. (default: ['data'])
- `-c CONFIG, --config CONFIG`: The policy and NLU pipeline configuration of your bot. (default: config.yml)
- `-d DOMAIN, --domain DOMAIN`: Domain specification (yml file). (default: domain.yml)
- `--out OUT`: Directory where your models should be stored. (default: models)
- `--augmentation AUGMENTATION`
- `--debug-plots`: If enabled, will create plots showing checkpoints and their connections between story blocks in a file called `story_blocks_connections.html`. (default: False)
- `--fixed-model-name FIXED_MODEL_NAME`: If set, the name of the model file/directory will be set to the given name. (default: None)
- `--persist-nlu-data`: Persist the nlu training data in the saved model. (default: False)
- `--force`: Force a model training even if the data has not changed. (default: False)

### Python Logging Options

- `-v, --verbose`: Be verbose. Sets logging level to INFO. (default: None)
- `-vv, --debug`: Print lots of debugging statements. Sets logging level to DEBUG. (default: None)
- `--quiet`: Be quiet! Sets logging level to WARNING. (default: None)

... and so on for the other commands.
