# Policies

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

## Policies Overview

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

### Configuring Policies

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

```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: "..."
```

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

### Data Augmentation
When you train a model, Rasa Core will create longer stories by randomly gluing together the ones in your stories files.

### Action Selection
At every turn, each policy defined in your configuration will predict a next action with a certain confidence level. The bot’s next action is then decided by the policy that predicts with the highest confidence.

### Keras Policy
The `KerasPolicy` uses a neural network implemented in Keras to select the next action.

```python
def model_architecture(self, input_shape: Tuple[int, int], output_shape: Tuple[int, Optional[int]]) -> tf.keras.models.Sequential:
    ...
```

### Fallback Policy
The `FallbackPolicy` invokes a fallback action if intent recognition has low confidence.

#### Configuration:
```yaml
policies:
  - name: "FallbackPolicy"
    nlu_threshold: 0.3
    ambiguity_threshold: 0.1
    core_threshold: 0.3
    fallback_action_name: 'action_default_fallback'
```

#### Note
You can include either the `FallbackPolicy` or the `TwoStageFallbackPolicy` in your configuration but not both.

### Form Policy
The `FormPolicy` is an extension of the `MemoizationPolicy` which handles the filling of forms. Once a `FormAction` is called, the `FormPolicy` will continue until all required slots in the form are filled.

👋 I can help you get started with Rasa and answer your technical questions.
