# Policies

- [Configuring Policies](https://legacy-docs-v1.rasa.com/1.10.4/core/policies/#configuring-policies)
  - [Max History](https://legacy-docs-v1.rasa.com/1.10.4/core/policies/#max-history)
  - [Data Augmentation](https://legacy-docs-v1.rasa.com/1.10.4/core/policies/#data-augmentation)
- [Action Selection](https://legacy-docs-v1.rasa.com/1.10.4/core/policies/#action-selection)
- [Keras Policy](https://legacy-docs-v1.rasa.com/1.10.4/core/policies/#keras-policy)
- [Embedding Policy](https://legacy-docs-v1.rasa.com/1.10.4/core/policies/#embedding-policy)
- [TED Policy](https://legacy-docs-v1.rasa.com/1.10.4/core/policies/#ted-policy)
- [Mapping Policy](https://legacy-docs-v1.rasa.com/1.10.4/core/policies/#mapping-policy)
- [Memoization Policy](https://legacy-docs-v1.rasa.com/1.10.4/core/policies/#memoization-policy)
- [Augmented Memoization Policy](https://legacy-docs-v1.rasa.com/1.10.4/core/policies/#augmented-memoization-policy)
- [Fallback Policy](https://legacy-docs-v1.rasa.com/1.10.4/core/policies/#fallback-policy)
- [Two-Stage Fallback Policy](https://legacy-docs-v1.rasa.com/1.10.4/core/policies/#two-stage-fallback-policy)
- [Form Policy](https://legacy-docs-v1.rasa.com/1.10.4/core/policies/#form-policy)

## Configuring 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.10.4/api/agent/#rasa.core.agent.Agent).

Note

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

### 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.

You can set the `max_history` by passing it to your policy’s `Featurizer` in the policy configuration yaml file.

Note

Only the `MaxHistoryTrackerFeaturizer` uses a max history, whereas the `FullDialogueTrackerFeaturizer` always looks at the full conversation history. See [Featurization of Conversations](https://legacy-docs-v1.rasa.com/1.10.4/api/core-featurization/#featurization-conversations) for details.

### 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 is because if you have stories like:

```yaml
# thanks
* thankyou
   - utter_youarewelcome

# bye
* goodbye
   - utter_goodbye
```

You actually want to teach your policy to **ignore** the dialogue history when it isn’t relevant and just respond with the same action no matter what happened before.

You can alter this behavior with the `--augmentation` flag.

### 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](http://keras.io/) to select the next action.

### Mapping Policy

The `MappingPolicy` can be used to directly map intents to actions. The mappings are assigned by giving an intent the property `triggers`.

### Memoization Policy

The `MemoizationPolicy` just memorizes the conversations in your training data. It predicts the next action with confidence `1.0` if this exact conversation exists in the training data.

### Fallback Policy

The `FallbackPolicy` invokes a [fallback action](https://legacy-docs-v1.rasa.com/1.10.4/core/fallback-actions/#fallback-actions) if at least one of the following occurs:
1. The intent recognition has a confidence below `nlu_threshold`.
2. The highest ranked intent differs in confidence with the second highest ranked intent by less than `ambiguity_threshold`.
3. None of the dialogue policies predict an action with confidence higher than `core_threshold`.

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