RasaX docker container (production mode) is not loading NLU/Stories/Configuration data from files and requires to upload data manually

I’m running RasaX in a docker container and production mode. The RasaX is NOT loading NLU\Stories\Configuration data from my files automatically when the container starts. We are following the default structure (data\nlu.md, data\stories.md and config.yml)

It requires manual intervention to upload data from RasaX UI. I believe uploading data through HTTP API or RasaX UI will be the same and requires manual intervention.

Is there any way to load data from files automatically while starting the docker container for RasaX? Please note we cannot use git repository to load data. Uploading data manually is not an option for real-time production environments.

I hope someone can suggest an alternative approach or advise if there is any existing feature that we can leverage.

Thank you.

I have the same issue. I have connected Rasa X to my git repository, and it loaded the domain and responses just fine, but does not load the nlu, stories or config files. Just like you I have the advised structure, and followed all the steps for installation. If you figure it out, do let me know!

Hi @hari. Integrated Version Control is how you get data in and out of Rasa X automatically. Can you elaborate a bit more about why you can’t use it with a real-time production environment?

Since it sounds like you can’t use it with a real-time production environment, I would recommend only serving your model from that production environment. You can forward conversation events from production to a Rasa X development environment that can be connected Integrated Version Control. This will allow you to follow Conversation-Driven Development and then push your annotations to the remote Git repository, where you can run CI to train / test the model before CD uploads it to the production environment. Would that work?

Hi @jamesthethird. I think your issue is slightly different than what Hari is describing. Can you share the structure of your project layout and what your NLU / stories / config files look like?

Hi @tyd ,

Thank you for your response. The integrated version control requires to configure GIT for tracking changes in source code which is fine in the development environment but ideally, it may not be the best practice to configure in the production environment especially in the client environment. Using a database to store NLU/Stories/Configuration data instead of GIT may be the best way for production.

Since we are using PostgreSQL for tracker store I’m wondering why can’t we use the database to maintain changes to intents , stories etc., It seems the RasaX code is currently updating database tables (nlu_training_data , nlu_training_data_entity ,story, domain_action, domain_intent) when we add new intents and stories from RasaX UI. Is there any way to leverage the database to load NLU/Stories data during the container setup for RasaX?

Regarding the suggested alternate approach, If I understand correctly you are suggesting to use rasacore production node to use as a model service and forward conversation events to rasax. If I follow this model, will it still allow to add new intents and stories and train new ML model from rasax UI without GIT integration?

Thank you Hari

The integrated version control requires to configure GIT for tracking changes in source code which is fine in the development environment but ideally, it may not be the best practice to configure in the production environment especially in the client environment

@hari Almost all enterprises connect it to their production environment, since it does not touch the model, which is what is running in production. Do you have specific company policies to prevent or do you just think it is a best practice?

Since we are using PostgreSQL for tracker store I’m wondering why can’t we use the database to maintain changes to intents , stories etc., It seems the RasaX code is currently updating database tables (nlu_training_data , nlu_training_data_entity ,story, domain_action, domain_intent) when we add new intents and stories from RasaX UI. Is there any way to leverage the database to load NLU/Stories data during the container setup for RasaX?

Using Git allows you to version your training data, enables you to follow branch-based development (where multiple team members can be working on the assistant at the same time in and out of Rasa X), promotes the use of tests and model evaluations in a CI pipeline, and encourages reviews before triggering a CD pipeline.

Regarding the suggested alternate approach, If I understand correctly you are suggesting to use rasacore production node to use as a model service and forward conversation events to rasax. If I follow this model, will it still allow to add new intents and stories and train new ML model from rasax UI without GIT integration?

Yes, that is correct. Why don’t you want to use Integrated Version Control in this development environment?

@tyd It’s not usual practice to have connection from production environment to source code repository so it will be difficult to convince someone on this approach.