Rasa - Framework d’IA conversationnelle
Rasa est un framework open-source pour la construction d’assistants conversationnels contextuels. Contrairement aux chatbots basés uniquement sur les prompts, Rasa vous donne un contrôle explicite sur le dialogue : vous définissez les intentions, les entités, et les flux, et l’assistant suit la logique métier que vous spécifiez plutôt que ce que le modèle improvise. Tout s’exécute sur votre propre infrastructure, ce qui est important pour les domaines réglementés. La Rasa moderne (CALM) mélange la compréhension basée sur les LLM avec l’exécution de flux déterministes — le modèle interprète, vos flux décident.
Installation
| Méthode | Commande |
|---|
| pip | pip install rasa |
| Nouveau projet | rasa init |
| Prérequis | Python 3.9–3.11 (vérifier le support actuel) |
| Vérifier | rasa --version |
Structure du projet
| Chemin | Contient |
|---|
domain.yml | Intentions, entités, slots, réponses, actions |
data/nlu.yml | Exemples d’entraînement par intention |
data/stories.yml | Chemins de conversation d’exemple |
data/rules.yml | Règles déterministes |
data/flows.yml | Flux de logique métier CALM |
config.yml | Pipeline NLU/policy |
actions/actions.py | Actions Python personnalisées |
CLI principal
| Commande | Description |
|---|
rasa init | Organiser un nouvel assistant |
rasa train | Entraîner le modèle |
rasa shell | Discuter avec lui dans le terminal |
rasa run | Démarrer le serveur |
rasa run actions | Démarrer le serveur d’action personnalisée |
rasa test | Exécuter les tests contre les histoires de test |
rasa interactive | Entraînement/correction interactifs |
rasa data validate | Vérifier la cohérence des données |
Définir les intentions et réponses
# domain.yml
intents:
- greet
- check_balance
responses:
utter_greet:
- text: "Hi! How can I help?"
slots:
account_id:
type: text
mappings:
- type: from_entity
entity: account_id
actions:
- action_fetch_balance
# data/nlu.yml
nlu:
- intent: check_balance
examples: |
- what's my balance
- how much money do I have
- show account [12345](account_id)
Flux (CALM)
# data/flows.yml
flows:
check_balance:
description: Look up the user's account balance
steps:
- collect: account_id
- action: action_fetch_balance
- action: utter_balance
| Type d’étape | Fait |
|---|
collect | Demander et remplir un slot |
action | Exécuter une action personnalisée ou utter |
link | Sauter à un autre flux |
set_slots | Assigner les valeurs de slots |
next avec if | Branchement conditionnel |
Les flux sont déterministes : le LLM décide quel flux l’utilisateur veut, mais le flux lui-même s’exécute exactement comme écrit.
Actions personnalisées
from rasa_sdk import Action, Tracker
from rasa_sdk.executor import CollectingDispatcher
class ActionFetchBalance(Action):
def name(self) -> str:
return "action_fetch_balance"
def run(self, dispatcher: CollectingDispatcher, tracker: Tracker, domain):
account = tracker.get_slot("account_id")
balance = lookup_balance(account)
dispatcher.utter_message(text=f"Your balance is ${balance}")
return []
Exécutez avec rasa run actions (port par défaut 5055).
Test
rasa test # tests end-to-end
rasa test nlu --cross-validation
rasa data validate # détecter les décalages domaine/données
| Type de test | Vérifie |
|---|
| Tests NLU | Précision de l’intention/entité |
| Tests d’histoire | Chemins de conversation complets |
| Validation croisée | Généralisation du NLU |
Canaux et déploiement
| Canal | Note |
|---|
| REST | Endpoint HTTP par défaut |
| Widget Web | Chat intégrable |
| Slack / Teams / Telegram | Connecteurs intégrés |
| Voix | Via intégrations de téléphonie |
| Déploiement | Docker, Kubernetes/Helm, auto-hébergé |
Rasa vs chatbots basés sur LLM uniquement
| Aspect | Rasa | Bot LLM basé sur prompt uniquement |
|---|
| Contrôle | Flux/logique métier explicites | Émergent, difficile à contraindre |
| Prévisibilité | Élevée | Variable |
| Conformité | Chemins vérifiables | Difficile |
| Hébergement | Entièrement auto-hébergé | Généralement dépendant d’API |
| Meilleur pour | Assistants régulés, orientés vers les tâches | Conversation ouverte |
Pour les agents ouverts, voir LangGraph ou Mastra ; la force de Rasa est les flux de tâches déterministes et vérifiables.
Ressources