Doubts about Rasa X

Helllo!

We are trying to use Rasa X in our production environment. However, we have many doubts about he deployment, based on the orientations contained on the “Deploy to a server documentation”. The example docker compose file (docker-compose.ce.yml) has three main services - rasa-x, rasa-production and rasa-worker. What is the role/responsabilities of each of these services? Rasa-production is the chatbot in production and instead of being a “rasa run”, it is a rasa X server? And is the rasa-x service responsible for managing the models and rasa-production is going to access models via url? And what is the function of the event brokers in these scenario? What is the role of rasa-worker service?

We already have in production environment a container for Rasa Core and another one for Rasa Actions.

Thanks in advance for your help. We appreciate it. :slight_smile:

Hi @alessandrarequena! Here’s a quick lowdown on the services

rasa-x: handles the Rasa X UI

rasa-production: the bot in production – the command that’s running is a rasa x command and not a rasa run – but it is still essentially a run command that will launch all of the connectors in your credentials.yml

rasa-worker: a clone of rasa-produciton for long-running processes like training. this ensures that while you are training a model, your production model is still available to answer users.

And is the rasa-x service responsible for managing the models and rasa-production is going to access models via url?

Yep that’s correct! rasa-x will manage the models and keep them stored locally on the rasa x container (a volume mounted from the local machine). it will call rasa-worker to train new models, which are stored back on rasa-x, and then rasa-production will query rasa-x to see if any new model has been tagged as the production model.

And what is the function of the event brokers in these scenario?

the event broker is the connection between rasa and rasa x – essentially all conversation events are published to a queue that rasa x reads from. this is how information from the tracker store gets written into the rasa x database so that the information shows up on the conversations screen.

Hope that is helpful :slight_smile:

Great explanation!

I have one last doubt. Why the service app depends on rasa-production? As I understood, app is our custom action server. And rasa-production is going to call the app service (custom actions). So, I thought that rasa-production should depends on app service.

@alessandrarequena good question, it’s not a strict dependency for startup of the app container. However rasa-production does not depend on app, as everything can run fine without an app container. Rasa also has mechanisms to ensure that if the app container crashes, rasa itself and the bot does not crash. However in order for any custom actions to work you will obviously need a running app server, otherwise you will probably get some really wonky mis-predicted conversations :smiley: