I have some existing Rasa chatbots that have been running since Rasa 0.11 that I have recently upgraded to Rasa 1.0. While there is a migration guide, at the time of this writing I found it to be far from complete. There is also a github rasa-demo that seems to be regularly updated by the folks at Rasa and I found this to be helpful.
Some notes about my Rasa Bots:
I gave up trying to run a separate NLU as I have done from the beginning. The Rasa documentation states that you can continue to run a separate NLU but there is very little documentation on this that I could find. I found one mention that you need to specify the
--enable-api option to run the NLU but, as this github issue reports, Rasa still reports that it is running Core.
The Rasa team recommends running a single container now instead of separate NLU and Core containers so I gave up trying to get seperate containers to work. Maybe you’ll find documetation on this by the time you read this.
Combining my NLU & Core containers reqiured me to change the following files:
endpoints.yml- no longer refers to the separate NLU endpoint
docker-compose.yml- dropped the NLU container, modified command to run new Rasa command line (see below)
Prior to Rasa 1.0 there were separate NLU & Core configuration files. I called my
config.yml. This setup is referenced in the 0.11.x to 0.12.0 migration guide states that the configuration is split.
With Rasa 1.0 the NLU & Core configuration should be stored in a single yml file. The rasa-demo project has an example file.
While not required, it’s recommended that your project filenames and directory structure follow the convention created by the
rasa init command (see Create a new Project). Following this convention will make for easier use of Rasa X.
├── __init__.py ├── actions.py ├── config.yml ├── credentials.yml ├── data │ ├── nlu.md │ └── stories.md ├── domain.yml ├── endpoints.yml └── models └── <timestamp>.tar.gz
The Rasa command line and options have changed and this is fairly well documented (unless you want to run a separate NLU). Here’s the command line I’m now using to start a combined container:
run --enable-api --model /app/models --endpoints /app/endpoints_local.yml --credentials /app/credentials.yml --port 5005 --log-file /app/data/logs/rasa_core.log --debug
Prior to Rasa 1.0, users of the chatroom React Component had to setup a separate channel for the chatroom component. With Rasa 1.0, there is now a generic REST API that can be used by chatroom and other users.
This is a nice improvement so we can now get rid of the chatroom input channel code and the
credentials.yml file is simplified to a single line:
Rasa 1.0 appears to have improved, stricter YAML syntax checking. I did not find any mention of this in the docs but I ran into syntax errors in my
domain.yml that worked fine in prior releases but my training process failed on these errors under Rasa 1.0
The Rasa python package names have changed. This required changes to my action agent code and my customer tracker store code.
|Old Name||Rasa 1.0|
There’s a reference to the
rasa_core change in the changelog but I found no references to the
The action agent must use the
rasa_sdk package or the
rasa/rasa_sdk docker image. Past versions used the
The model format has changed and the idea of NLU projects is removed. With the combined NLU & Core containers, the training is also combined.
docker run -v $(pwd)/data:/app/data rasa/rasa:latest-full train core --config /app/data/config.yml --out /app/data/models --domain /app/data/domain.yml --stories /app/data/stories
These are a couple of the endpoint changes that I use: