Volver a la página principal
sábado 21 septiembre 2024
124

Cómo construir un chatbot utilizando Rasa y Python

Los chatbots se han convertido en herramientas esenciales para la interacción entre las empresas y los usuarios, mejorando la experiencia del cliente y reduciendo la carga del servicio al cliente. Entre las diversas plataformas disponibles para construir chatbots, Rasa ha ganado popularidad debido a su flexibilidad y capacidad de integrar procesamiento de lenguaje natural (NLP) utilizando Python. Este artículo te guiará a través de los pasos necesarios para construir un chatbot con Rasa y Python, abarcando desde la instalación hasta la implementación de características avanzadas.

¿Qué es Rasa?

Rasa es una plataforma de código abierto para crear chatbots personalizados y asistentes virtuales que comprenden el lenguaje natural. Ofrece dos componentes principales:

1. Rasa NLU (Natural Language Understanding): Maneja la clasificación de intenciones y la extracción de entidades. En otras palabras, permite al chatbot comprender lo que el usuario está diciendo.

2. Rasa Core: Se encarga de la gestión del diálogo y toma decisiones sobre qué responder en función del contexto de la conversación.

Rasa destaca por su flexibilidad, ya que te permite entrenar modelos personalizados y conectarlos a cualquier servicio. A diferencia de otras plataformas como Dialogflow o Alexa, no depende de servicios en la nube, lo que lo hace ideal para organizaciones que necesitan una solución local o más control sobre sus datos.

Requisitos previos

Para seguir este tutorial, asegúrate de tener lo siguiente instalado:

1. Python 3.7 o superior: Puedes descargar Python desde su sitio oficial.

2. Rasa: Se instala fácilmente usando pip.

3. Pip: El gestor de paquetes de Python, que viene preinstalado con las versiones modernas de Python.

Paso 1: Instalación de Rasa

Crear un entorno virtual

Antes de instalar Rasa, es recomendable crear un entorno virtual para evitar conflictos con otras bibliotecas de Python en tu sistema. Para crear un entorno virtual, ejecuta los siguientes comandos:

python3 -m venv rasa-env
source rasa-env/bin/activate  # En Windows: rasa-env\Scripts\activate

Instalar Rasa

Con el entorno activado, instala Rasa utilizando pip:

pip install rasa

Para verificar que la instalación fue exitosa, puedes ejecutar el siguiente comando para comprobar la versión de Rasa:

rasa --version

Paso 2: Crear un nuevo proyecto de Rasa

Una vez que Rasa está instalado, el siguiente paso es crear un nuevo proyecto. Rasa proporciona una estructura de proyecto inicial que incluye los archivos básicos necesarios para entrenar y ejecutar un chatbot.

rasa init

Este comando crea un proyecto en el directorio actual con la siguiente estructura:

|-- actions/
|-- data/
|-- models/
|-- config.yml
|-- credentials.yml
|-- domain.yml
|-- endpoints.yml

Al final del proceso de inicialización, Rasa te preguntará si deseas entrenar un modelo inicial y ejecutar el chatbot. Elige "Sí" para entrenar el modelo y probarlo con algunos ejemplos predefinidos.

Paso 3: Comprender la estructura del proyecto

1. domain.yml

Este archivo define la interfaz de usuario del chatbot. Aquí especificas las intenciones, respuestas, entidades y acciones personalizadas.

Un ejemplo simple de un archivo domain.yml podría ser:

intents:
  - greet
  - goodbye
  - ask_weather

responses:
  utter_greet:
    - text: "¡Hola! ¿En qué puedo ayudarte?"
  utter_goodbye:
    - text: "¡Adiós! Que tengas un buen día."
  utter_ask_weather:
    - text: "Parece que hoy estará soleado."

actions:
  - action_ask_weather

2. data/nlu.yml

Este archivo contiene ejemplos de las intenciones del usuario, es decir, lo que el usuario podría decir y que tu chatbot necesita comprender. Se agrupan bajo las intenciones definidas en domain.yml.

Un ejemplo de nlu.yml podría ser:

nlu:
- intent: greet
  examples: |
    - Hola
    - ¡Hola!
    - Buenos días
    - ¿Qué tal?
    
- intent: ask_weather
  examples: |
    - ¿Cómo está el clima hoy?
    - ¿Va a llover mañana?
    - ¿Qué tiempo hará?

3. data/stories.yml

Este archivo define cómo debería responder el chatbot a las entradas del usuario en forma de historias. Una historia es una secuencia de interacciones entre el usuario y el chatbot.

Un ejemplo de stories.yml podría ser:

stories:
- story: saludo y preguntar clima
  steps:
  - intent: greet
  - action: utter_greet
  - intent: ask_weather
  - action: action_ask_weather

4. actions.py

En este archivo, puedes definir acciones personalizadas que el chatbot puede ejecutar. Estas acciones pueden ir más allá de las respuestas predefinidas, como conectarse a APIs externas.

Un ejemplo de una acción personalizada para obtener el clima sería:

from rasa_sdk import Action
from rasa_sdk.executor import CollectingDispatcher

class ActionAskWeather(Action):

    def name(self) -> str:
        return "action_ask_weather"

    def run(self, dispatcher: CollectingDispatcher,
            tracker, domain) -> list:
        weather = "soleado con una temperatura de 22°C"  # Aquí iría la llamada a una API real
        dispatcher.utter_message(text=f"El clima es {weather}")
        return []

Paso 4: Entrenar el modelo

Una vez que hayas definido tus intenciones, historias y acciones, el siguiente paso es entrenar tu modelo:

rasa train

Este comando utilizará los datos en los archivos nlu.yml y stories.yml para entrenar el chatbot.

Paso 5: Ejecutar el chatbot

Después de entrenar el modelo, puedes ejecutar el servidor de Rasa para interactuar con el chatbot:

rasa shell

Este comando te permitirá hablar con el chatbot directamente en la terminal.

También puedes ejecutar el servidor de acciones si has definido acciones personalizadas en actions.py:

rasa run actions

Paso 6: Integrar el chatbot con una interfaz de usuario

Una vez que tu chatbot está funcionando correctamente, puedes integrarlo en una página web o una aplicación móvil utilizando Rasa y conectores como socket.io o Facebook Messenger. Para habilitar esta funcionalidad, es necesario configurar el archivo credentials.yml.

Por ejemplo, para conectar el chatbot a una página web a través de socket.io, añade lo siguiente en credentials.yml:

socketio:
  user_message_evt: user_uttered
  bot_message_evt: bot_uttered
  session_persistence: true

Paso 7: Implementar el chatbot en un servidor

Para hacer que tu chatbot esté disponible en un entorno de producción, puedes desplegarlo en un servidor como Heroku, AWS o Google Cloud. También puedes utilizar contenedores Docker para gestionar fácilmente las dependencias y la infraestructura.

Conclusión

Construir un chatbot con Rasa y Python te brinda la flexibilidad para crear asistentes virtuales personalizados que comprendan el lenguaje natural y respondan de manera inteligente. En este tutorial, has aprendido los fundamentos de la instalación, configuración y entrenamiento de un chatbot con Rasa, así como su implementación básica. A partir de aquí, puedes agregar más complejidad y funcionalidades para adaptarlo a tus necesidades específicas.

Este enfoque es ideal para desarrolladores que buscan una solución robusta, flexible y de código abierto para crear chatbots avanzados. ¡Ahora es tu turno de empezar a crear tu propio chatbot! 😎😎

Compartir:
Creado por:
Author photo

Jorge García

Fullstack developer