Rasa - Marco de IA Conversacional Hoja de Trucos
Rasa es un marco de código abierto para construir asistentes conversacionales contextuales. A diferencia de chatbots solo de prompts, Rasa te da control explícito sobre el diálogo: defines intenciones, entidades y flujos, y el asistente sigue la lógica empresarial que especificas en lugar de lo que el modelo improvisa. Todo se ejecuta en tu propia infraestructura, que importa para dominios regulados. Rasa moderno (CALM) mezcla comprensión basada en LLM con ejecución de flujo determinista — el modelo interpreta, tus flujos deciden.
Instalación
| Método | Comando |
|---|
| pip | pip install rasa |
| Nuevo proyecto | rasa init |
| Requerimientos | Python 3.9–3.11 (revisa soporte actual) |
| Verificar | rasa --version |
Estructura del Proyecto
| Ruta | Contiene |
|---|
domain.yml | Intenciones, entidades, slots, respuestas, acciones |
data/nlu.yml | Ejemplos de entrenamiento por intención |
data/stories.yml | Rutas de conversación de ejemplo |
data/rules.yml | Reglas deterministas |
data/flows.yml | Flujos de lógica empresarial CALM |
config.yml | Pipeline NLU/política |
actions/actions.py | Acciones personalizadas Python |
CLI Principal
| Comando | Descripción |
|---|
rasa init | Andamiar un nuevo asistente |
rasa train | Entrenar el modelo |
rasa shell | Charlar con él en la terminal |
rasa run | Iniciar el servidor |
rasa run actions | Iniciar el servidor de acciones personalizadas |
rasa test | Ejecutar pruebas contra historias de prueba |
rasa interactive | Entrenamiento/corrección interactiva |
rasa data validate | Verificar consistencia de datos |
Definiendo Intenciones y Respuestas
# 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)
Flujos (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
| Tipo de paso | Hace |
|---|
collect | Pedir y llenar un slot |
action | Ejecutar una acción personalizada o utter |
link | Saltar a otro flujo |
set_slots | Asignar valores de slot |
next con if | Ramificación condicional |
Los flujos son deterministas: el LLM decide qué flujo quiere el usuario, pero el flujo en sí se ejecuta exactamente como está escrito.
Acciones Personalizadas
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 []
Ejecutar con rasa run actions (puerto 5055 por defecto).
Pruebas
rasa test # pruebas de extremo a extremo
rasa test nlu --cross-validation
rasa data validate # detectar desajustes dominio/datos
| Tipo de prueba | Verifica |
|---|
| Pruebas NLU | Precisión intención/entidad |
| Pruebas de historia | Rutas de conversación completa |
| Validación cruzada | Generalización de NLU |
Canales y Despliegue
| Canal | Nota |
|---|
| REST | Endpoint HTTP predeterminado |
| Widget web | Chat integrable |
| Slack / Teams / Telegram | Conectores integrados |
| Voz | A través de integraciones de telefonía |
| Despliegue | Docker, Kubernetes/Helm, autohospedado |
Rasa vs Chatbots Solo LLM
| Aspecto | Rasa | Bot LLM solo de prompts |
|---|
| Control | Flujos/lógica empresarial explícitos | Emergente, difícil de restringir |
| Predictibilidad | Alta | Variable |
| Cumplimiento | Rutas auditable | Difícil |
| Hosting | Completamente autohospedado | Generalmente dependiente de API |
| Mejor para | Asistentes regulados, orientados a tareas | Conversación abierta |
Para agentes abiertos ver LangGraph o Mastra; la fortaleza de Rasa es flujos de tareas deterministas y auditable.
Recursos