## Supported Python Versions

Rasa Pro supports the following Python versions:

| Python Version | Support Status | Notes |
| --- | --- | --- |
| 3.10 | ✅ Supported | Full support |
| 3.11 | ✅ Supported | Full support |
| 3.12 | ✅ Supported | Limited support (see TensorFlow limitations below) |
| 3.13 | ✅ Supported | Limited support (see TensorFlow limitations below) |

### TensorFlow Limitations

TensorFlow and related dependencies are only supported for Python < 3.12. This means that components requiring TensorFlow are not available for Python >= 3.12:

- `DIETClassifier`
- `TEDPolicy`
- `UnexpecTEDIntentPolicy`
- `ResponseSelector`
- `ConveRTFeaturizer`
- `LanguageModelFeaturizer`

If you need these components, use Python 3.10 or 3.11.

## Dependency Groups

Rasa Pro uses optional dependency groups to allow you to install only the dependencies you need for your specific use case. This helps reduce installation time and keeps your environment lean.

### Available Dependency Groups

| Dependency Group | Description | Installation Command |
| --- | --- | --- |
| `nlu` | Dependencies for NLU components | `pip install 'rasa-pro[nlu]'` |
| `channels` | Dependencies for channel connectors | `pip install 'rasa-pro[channels]'` |

### NLU Dependency Group

The `nlu` dependency group includes dependencies required for NLU components.

These include:

- `spacy` (`^3.5.4`)
- `skops` (`~0.13.0`)
- `mitie` (`^0.7.36`)
- `jieba` (`>=0.42.1, <0.43`)
- `sklearn-crfsuite` (`~0.5.0`)
- `transformers` (`~4.38.2`)

Plus the following dependencies, which are only available for Python < 3.12:

- `tensorflow` (`^2.19.0`)
- `tensorflow-text` (`^2.19.0`)
- `tensorflow-hub` (`^0.13.0`)
- `tensorflow-metal` (`^1.2.0`)
- `tf-keras` (`^2.15.0`)
- `sentencepiece` (`~0.1.99`)
- `tensorflow-io-gcs-filesystem` (`0.31` for sys_platform == 'win32', `0.34` for sys_platform == 'linux', `0.34` for sys_platform == 'darwin' and platform_machine != 'arm64')

### Channels Dependency Group

The `channels` dependency group includes dependencies required for channel connectors:

- `fbmessenger` (`~6.0.0`)
- `twilio` (`~9.7.2`)
- `webexteamssdk` (`>=1.6.1,<1.7.0`)
- `mattermostwrapper` (`~2.2`)
- `rocketchat_API` (`>=1.32.0,<1.33.0`)
- `aiogram` (`~3.22.0`)
- `slack-sdk` (`~3.36.0`)
- `cvg-python-sdk` (`^0.5.1`)

Channel Dependencies Not Included

The following channels do not require additional dependencies and are included in the main installation:

- `browser_audio`
- `studio_chat`
- `socketIO`
- `rest`

## Installation Examples

### Basic Installation

```bash
# Install Rasa Pro with default dependencies
pip install rasa-pro
```

### With NLU Components

```bash
# Install Rasa Pro with NLU dependencies
pip install 'rasa-pro[nlu]'
```

### With Channel Connectors

```bash
# Install Rasa Pro with channel dependencies
pip install 'rasa-pro[channels]'
```

### With Both NLU and Channels

```bash
# Install Rasa Pro with both NLU and channel dependencies
pip install 'rasa-pro[nlu,channels]'
```

### Using uv

```bash
# Using uv package manager (recommended for faster installation)
uv pip install 'rasa-pro[nlu,channels]'
```

## When to Use Which Dependency Group

**Use the `nlu` group when:**

- You are using NLU components in your pipeline (see [NLU Components](/content/docs/reference/config/components/nlu-components/index.html) for a full list of all NLU components)
- You need intent classification or entity extraction capabilities
- You're using components like `DIETClassifier`, `TEDPolicy`, or `ResponseSelector`
- You're building assistants that require traditional NLU capabilities
- You need to process user input for intent recognition and entity extraction

**Use the `channels` group when:**

- You're connecting to external messaging platforms (Slack, Telegram, Facebook Messenger, etc.)
- You need voice channel connectors (Jambonz, Audiocodes, Twilio Voice, etc.)
- You're deploying to platforms like Microsoft Bot Framework, Cisco Webex Teams, or RocketChat
- You're building voice assistants that require real-time audio processing
- You need to integrate with customer support platforms or communication systems

### Use both groups when:

- You're building a comprehensive assistant that uses both NLU components and external channel integrations
- You need the full feature set of Rasa Pro with traditional NLU capabilities and multi-platform deployment
