Ir al contenido

Rasa - Marco de IA Conversacional Hoja de Trucos

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étodoComando
pippip install rasa
Nuevo proyectorasa init
RequerimientosPython 3.9–3.11 (revisa soporte actual)
Verificarrasa --version

Estructura del Proyecto

RutaContiene
domain.ymlIntenciones, entidades, slots, respuestas, acciones
data/nlu.ymlEjemplos de entrenamiento por intención
data/stories.ymlRutas de conversación de ejemplo
data/rules.ymlReglas deterministas
data/flows.ymlFlujos de lógica empresarial CALM
config.ymlPipeline NLU/política
actions/actions.pyAcciones personalizadas Python

CLI Principal

ComandoDescripción
rasa initAndamiar un nuevo asistente
rasa trainEntrenar el modelo
rasa shellCharlar con él en la terminal
rasa runIniciar el servidor
rasa run actionsIniciar el servidor de acciones personalizadas
rasa testEjecutar pruebas contra historias de prueba
rasa interactiveEntrenamiento/corrección interactiva
rasa data validateVerificar 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 pasoHace
collectPedir y llenar un slot
actionEjecutar una acción personalizada o utter
linkSaltar a otro flujo
set_slotsAsignar valores de slot
next con ifRamificació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 pruebaVerifica
Pruebas NLUPrecisión intención/entidad
Pruebas de historiaRutas de conversación completa
Validación cruzadaGeneralización de NLU

Canales y Despliegue

CanalNota
RESTEndpoint HTTP predeterminado
Widget webChat integrable
Slack / Teams / TelegramConectores integrados
VozA través de integraciones de telefonía
DespliegueDocker, Kubernetes/Helm, autohospedado

Rasa vs Chatbots Solo LLM

AspectoRasaBot LLM solo de prompts
ControlFlujos/lógica empresarial explícitosEmergente, difícil de restringir
PredictibilidadAltaVariable
CumplimientoRutas auditableDifícil
HostingCompletamente autohospedadoGeneralmente dependiente de API
Mejor paraAsistentes regulados, orientados a tareasConversación abierta

Para agentes abiertos ver LangGraph o Mastra; la fortaleza de Rasa es flujos de tareas deterministas y auditable.

Recursos