Aller au contenu

Rasa - Framework d'IA conversationnelle

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éthodeCommande
pippip install rasa
Nouveau projetrasa init
PrérequisPython 3.9–3.11 (vérifier le support actuel)
Vérifierrasa --version

Structure du projet

CheminContient
domain.ymlIntentions, entités, slots, réponses, actions
data/nlu.ymlExemples d’entraînement par intention
data/stories.ymlChemins de conversation d’exemple
data/rules.ymlRègles déterministes
data/flows.ymlFlux de logique métier CALM
config.ymlPipeline NLU/policy
actions/actions.pyActions Python personnalisées

CLI principal

CommandeDescription
rasa initOrganiser un nouvel assistant
rasa trainEntraîner le modèle
rasa shellDiscuter avec lui dans le terminal
rasa runDémarrer le serveur
rasa run actionsDémarrer le serveur d’action personnalisée
rasa testExécuter les tests contre les histoires de test
rasa interactiveEntraînement/correction interactifs
rasa data validateVé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’étapeFait
collectDemander et remplir un slot
actionExécuter une action personnalisée ou utter
linkSauter à un autre flux
set_slotsAssigner les valeurs de slots
next avec ifBranchement 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 testVérifie
Tests NLUPrécision de l’intention/entité
Tests d’histoireChemins de conversation complets
Validation croiséeGénéralisation du NLU

Canaux et déploiement

CanalNote
RESTEndpoint HTTP par défaut
Widget WebChat intégrable
Slack / Teams / TelegramConnecteurs intégrés
VoixVia intégrations de téléphonie
DéploiementDocker, Kubernetes/Helm, auto-hébergé

Rasa vs chatbots basés sur LLM uniquement

AspectRasaBot LLM basé sur prompt uniquement
ContrôleFlux/logique métier explicitesÉmergent, difficile à contraindre
PrévisibilitéÉlevéeVariable
ConformitéChemins vérifiablesDifficile
HébergementEntièrement auto-hébergéGénéralement dépendant d’API
Meilleur pourAssistants régulés, orientés vers les tâchesConversation 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