Description
Rasa is an open-source framework for building conversational AI systems, including chatbots, virtual assistants, and voice-enabled agents. It provides powerful tools for Natural Language Understanding (NLU), dialogue management, and custom integration, offering developers full control over the machine learning models, training data, and backend logic.
Rasa stands out for enabling on-premise deployment, customizability, and data privacy, making it a preferred choice for enterprises and developers seeking production-grade AI assistants without relying on third-party APIs like Dialogflow or Lex.
Core Components
Rasa has two major modules:
1. Rasa NLU
Handles natural language understanding, including:
- Intent classification
- Entity extraction
- Text preprocessing and featurization
2. Rasa Core
Manages dialogue flow and conversation policy using:
- Dialogue state tracking
- Machine learning-based response selection
- Custom actions
These two components work together to interpret user input and generate context-aware responses.
How It Works
The typical Rasa-based assistant workflow looks like this:
[User Input]
↓
[Rasa NLU]
↓
Intent + Entities → [Rasa Core]
↓
[Dialogue Policy] → [Action Server / Custom Action]
↓
[Bot Response]
Key Features
| Feature | Description |
|---|---|
| Open-Source | Fully free and modifiable |
| On-Premise Deployment | Ideal for privacy and sensitive data compliance |
| Custom Pipelines | Define NLU steps (e.g., tokenizers, embeddings) |
| Forms and Slots | Collect multi-step user input |
| Stories and Rules | Scripted or rule-based conversation paths |
| Custom Actions | Execute Python logic (API calls, DB writes, etc.) |
| Interactive Training | Fine-tune behavior based on real conversations |
| Multilingual Support | Compatible with many languages and tokenizers |
Main Files and Structure
| File / Folder | Purpose |
|---|---|
domain.yml | Defines intents, entities, slots, actions, responses |
data/nlu.yml | NLU training examples |
data/stories.yml | Sample dialogue flows |
data/rules.yml | Rule-based dialogue patterns |
actions.py | Python file with custom backend logic |
config.yml | NLU pipeline and policy configuration |
endpoints.yml | Defines action server and tracker store |
Example: NLU Entry (YAML)
nlu:
- intent: greet
examples: |
- hello
- hi there
- hey!
Example: Custom Action (Python)
from rasa_sdk import Action
class ActionGreetUser(Action):
def name(self):
return "action_greet_user"
def run(self, dispatcher, tracker, domain):
dispatcher.utter_message(text="Hello! How can I assist you today?")
return []
Policies
Rasa uses policies to decide what action to take next in a conversation. Common policies include:
- MemoizationPolicy – Remembers exact conversation paths (stories)
- RulePolicy – Executes strict rules (e.g., “if X, always do Y”)
- TEDPolicy (Transformer Embedding Dialogue) – ML-based policy that learns patterns from training data
Training Process
To train a Rasa assistant:
rasa train
This compiles NLU and Core training data into a model saved in /models.
To run the bot:
rasa shell
To run custom action server:
rasa run actions
Advanced Features
1. Forms
- Multi-step interaction to gather required slots (e.g., booking form)
- Automatically asks for missing information
2. Tracker Store
- Stores conversation history
- Can be configured to use Redis, MongoDB, or SQL databases
3. Custom Channels
- Supports Telegram, Facebook Messenger, Twilio, Slack, and custom UIs
4. Rasa X (Optional Tool)
- Web UI for testing, annotating, improving the assistant
- Can review real conversations and fine-tune bot behavior
Strengths
- Full control over ML pipeline
- Enterprise-grade customization and extensibility
- Runs offline and locally
- Developer-friendly Python-based ecosystem
- Excellent community and documentation
Limitations
| Limitation | Explanation |
|---|---|
| Steep Learning Curve | Requires Python and ML knowledge |
| Deployment Complexity | May require Docker, Kubernetes, CI/CD setup |
| Manual Data Labeling | No auto-labelling for NLU examples |
| Limited UI | Rasa X is optional and less polished than cloud platforms |
Use Cases
- Internal enterprise assistants
- Multi-lingual customer support chatbots
- Voice-command-based smart devices
- Lead qualification and appointment scheduling bots
- Data privacy–sensitive government or healthcare bots
Key Formulas Summary
While Rasa doesn’t expose direct mathematical formulas, it internally uses:
- Embeddings:
x = Embedding(word) - Intent Classifier (Softmax over intent logits):
P(intentᵢ | x) = exp(zᵢ) / ∑ exp(zⱼ) - Loss Function (Cross-Entropy for classification):
L = -∑ yᵢ log(pᵢ) - TEDPolicy uses attention mechanisms and embedding similarity to predict actions.
Related Keywords
- Action Server
- Dialogue Management
- Entity Extraction
- Intent Classification
- Memoization Policy
- NLU Pipeline
- Rasa Core
- Rasa SDK
- Slot Filling
- TED Policy









