# Policies

The `rasa.core.policies.Policy` class decides which action to take at every step in the conversation.

There are different policies to choose from, and you can include multiple policies in a single [`rasa.core.agent.Agent`](https://legacy-docs-v1.rasa.com/1.5.3/api/agent/#rasa.core.agent.Agent).

Note: By default a maximum of 10 next actions can be predicted by the agent after every user message. To update this value you can set the environment variable `MAX_NUMBER_OF_PREDICTIONS` to the desired number of maximum predictions.

Your project’s `config.yml` file takes a `policies` key which you can use to customize the policies your assistant uses.

### Example configuration:
```yaml
policies:
  - name: "KerasPolicy"
    featurizer:
    - name: MaxHistoryTrackerFeaturizer
      max_history: 5
      state_featurizer:
        - name: BinarySingleStateFeaturizer
  - name: "MemoizationPolicy"
    max_history: 5
  - name: "FallbackPolicy"
    nlu_threshold: 0.4
    core_threshold: 0.3
    fallback_action_name: "my_fallback_action"
  - name: "path.to.your.policy.class"
    arg1: "..."
```

## Configuring Policies

### Max History

One important hyperparameter for Rasa Core policies is the `max_history` which controls how much dialogue history the model looks at to decide which action to take next.

### Data Augmentation

When you train a model, by default Rasa Core will create longer stories by randomly gluing together the ones in your stories files. This can be adjusted with the `--augmentation` flag and its associated parameters.

### Action Selection

At every turn, each policy defined in your configuration will predict a next action with a certain confidence level—which determines which action is ultimately taken by the bot.

### Keras Policy

The `KerasPolicy` uses a neural network to select the next action, where you can override its default architecture.
```python
def model_architecture(self, input_shape: Tuple[int, int], output_shape: Tuple[int, Optional[int]]) -> tf.keras.models.Sequential:
    # Build Model
```

### Mapping Policy

The `MappingPolicy` directly maps intents to actions, allowing for streamlined and controlled action selection based on user intents.

### Memoization Policy

This policy memorizes conversations from your training data, detecting exact matches and predicting actions accordingly.

### Fallback Policy

The `FallbackPolicy` invokes a fallback action based on confidence thresholds for intent recognition and action prediction, which can be customized in the configuration.

### Form Policy

The `FormPolicy` manages completing forms by predicting `FormAction` until all required slots are filled.
