The inconsistant behaviors of Rasa X interactive model

Dear community,

Thanks to lots of posts, my 1st Rasa X is running, but it seems not right. As you can see below, when using the interactive model, the list of next action shows some actions which are not included in my trained model, such as “utter_did_that_help”. Moreover, the actions showed in “Responses” page are not shown in the list, such as “utter_askChange”, “utter_ask_movieName”,… and so on, even the “ticket_form” defined in domain.yml file.

Any idea why is that? Here are some debug informations:

  1. docker-compose ps
root@iZZ:/etc/rasa# sudo docker-compose ps
         Name                       Command               State                      Ports
-------------------------------------------------------------------------------------------------------------
rasa_app_1               ./entrypoint.sh start --ac ...   Up      5055/tcp
rasa_db_1                /entrypoint.sh /run.sh           Up      5432/tcp
rasa_duckling_1          duckling-example-exe --no- ...   Up      8000/tcp
rasa_nginx_1             /opt/bitnami/entrypoint.sh ...   Up      0.0.0.0:80->8080/tcp, 0.0.0.0:443->8443/tcp
rasa_rabbit_1            /entrypoint.sh /run.sh           Up      15672/tcp, 25672/tcp, 4369/tcp, 5672/tcp
rasa_rasa-production_1   rasa x --no-prompt --produ ...   Up      5005/tcp
rasa_rasa-worker_1       rasa x --no-prompt --produ ...   Up      5005/tcp
rasa_rasa-x_1            sh -c user_id=$(id -u) &&  ...   Up      5002/tcp
rasa_redis_1             /entrypoint.sh /run.sh           Up      6379/tcp
  1. Dockerfile of custom service
FROM rasa/rasa-sdk:latest

USER root

# Install all required build libraries
RUN apt-get update -qq \
 && apt-get install -y --no-install-recommends \
    apt-utils \
    ffmpeg \
    libavcodec-extra

# To install packages from PyPI
RUN pip3 install -U pip
RUN pip3 install --no-cache-dir grakn.client
RUN pip3 install --no-cache-dir wxpy
RUN pip3 install --no-cache-dir baidu-aip
RUN pip3 install --no-cache-dir requests

WORKDIR /app

COPY ./actions /app/actions
COPY ./grakn_kg.py /app/grakn_kg.py
COPY ./data/nlu.md app/data/nlu.md
COPY ./data/stories.md app/data/stories.md
COPY ./data/jieba_userdict_zh.txt app/data/jieba_userdict_zh.txt
COPY ./data/total_word_feature_extractor_zh.dat app/data/total_word_feature_extractor_zh.dat
CMD ["start", "--actions", "actions.actions"]
  1. tree of my “ticket” bot
root@iZZ:/etc/rasa# tree ~/ticket/
/root/ticket/
├── actions
│   ├── actions.py
│   └── __init__.py
├── config.yml
├── credentials.yml
├── data
│   ├── jieba_userdict_zh.txt
│   ├── lookup_tables
│   │   └── action.txt
│   ├── nlu.md
│   ├── stories.md
│   └── total_word_feature_extractor_zh.dat
├── Dockerfile
├── domain.yml
├── endpoints.yml
├── grakn
│   ├── data
│   │   ├── movie.csv
│   │   ├── theater.csv
│   │   └── ticket.xlsx
│   ├── delete_keyspace_ticket.py
│   ├── load_data_ticket.py
│   └── schema_ticket.gql
├── grakn_kg.py
├── models
│   └── 20200219-232131.tar.gz
└── README.md
  1. endpoints.yml, I’ve changed localhost to “rasa_app_1”, following lots of suggested solutions in forum posts.
root@iZZ:/etc/rasa# cat ~/ticket/endpoints.yml
action_endpoint:
  url: "http://rasa_app_1:5055/webhook"
  1. docker-compose.override.yml
root@iZZ:/etc/rasa# cat ./docker-compose.override.yml
version: '3.4'
services:
  app:
    image: 'sz/ticket:latest'
  1. Since I used grakn as knowledge database, the grakn server is running on the same instance as Rasa X, but the grakn is not running in docker or in docker-compose network.

What I don’t understand are:

  1. How docker-compose will realize what I changed in endpoints.yml in my app folder?
  2. Why there’re inconsistant behaviors of Rasa X? Shown something is not in my model and also missed something should have.

Any help would be appreciated!

Best,

When docker-compose logs, I found that the inconsistance is probably due to defferent models. One is from integrated git folder, one is from upload.

Actually, I used my own “total_word_feature_extractor_zh.dat” for mitie, since its size is bigger than 100Mb, I couldn’t push it to git. I don’t know how to deal with docker. I tried to put it in /etc/rasa/data, but it doesn’t work.

With rasa command line, everything is organized in app folder, however, it seems different from docker. I copied the “total_word_feature_extractor_zh.dat” file to app docker as showed up. How to do it with docker?

rasa-x_1           | WARNING:rasax.community.api.blueprints.models:Tried to download model file '/app/models/20200219-232131.tar.gz', but file does not exist.
...
rasa-worker_1      | Exception: Unable to load total_word_feature_extractor detector from data/total_word_feature_extractor_zh.dat
...
rasa-production_1  | Exception: Unable to load total_word_feature_extractor detector from data/total_word_feature_extractor_zh.dat

Updates:

1)Build custom rasa docker “sz/rasa”, Dockerfile is modified from here:

...
# Download mitie model
RUN wget -P /app/data/ https://s3-eu-west-1.amazonaws.com/mitie/total_word_feature_extractor.dat
RUN wget -P /app/data/ https://chatbot-mitie.s3.amazonaws.com/total_word_feature_extractor_zh.dat
...
# Install and link spacy models
RUN pip install https://github.com/explosion/spacy-models/releases/download/en_core_web_md-2.1.0/en_core_web_md-2.1.0.tar.gz#egg=en_core_web_md==2.1.0 --no-cache-dir > /dev/null && python -m spacy link en_core_web_md en
...
# Remove & install specific package version
RUN pip3 install -U pip
RUN pip3 uninstall -y gym
RUN pip3 install gym==0.15.4
RUN pip3 uninstall -y sanic-plugins-framework
RUN pip3 install sanic-plugins-framework==0.8.2
...
# Copy over mitie model
COPY --from=builder /app/data/total_word_feature_extractor.dat data/total_word_feature_extractor.dat
COPY --from=builder /app/data/total_word_feature_extractor_zh.dat data/total_word_feature_extractor_zh.dat
  1. Build actions docker “sz/ticket” as below:
FROM rasa/rasa-sdk:latest

USER root

# Install all required build libraries
RUN apt-get update -qq \
 && apt-get install -y --no-install-recommends \
    apt-utils \
    ffmpeg \
    libavcodec-extra

# To install packages from PyPI
RUN pip3 install -U pip
RUN pip3 install --no-cache-dir grakn.client
RUN pip3 install --no-cache-dir wxpy
RUN pip3 install --no-cache-dir baidu-aip
RUN pip3 install --no-cache-dir requests

WORKDIR /app

COPY ./actions /app/actions
COPY ./grakn_kg.py /app/grakn_kg.py

COPY ./data/jieba_userdict_zh.txt app/data/jieba_userdict_zh.txt
COPY ./data/total_word_feature_extractor_zh.dat app/data/total_word_feature_extractor_zh.dat

CMD ["start", "--actions", "actions.actions"]
  1. update the docker-compose.override.yml as:
version: '3.4'

x-rasa-services: &default-rasa-service
  image: "sz/rasa:latest"

services:
  app:
    image: 'sz/ticket:latest'
  1. What I’ve done so far fixed the inconsistance and “data/total_word_feature_extractor_zh.dat” errors mentioned before. However, there’re still some errors left as below:
root@iZZ:/etc/rasa# docker-compose logs|grep -i error
rasa-production_1  | 2020-02-24 15:20:00 ERROR    pika.adapters.utils.io_services_utils  - Socket failed to connect: <socket.socket fd=21, family=AddressFamily.AF_INET, type=2049, proto=6, laddr=('172.26.0.8', 55784)>; error=111 (Connection refused)
rasa-production_1  | 2020-02-24 15:20:00 ERROR    pika.adapters.utils.connection_workflow  - TCP Connection attempt failed: ConnectionRefusedError(111, 'Connection refused'); dest=(<AddressFamily.AF_INET: 2>, <SocketKind.SOCK_STREAM: 1>, 6, '', ('172.26.0.5', 5672))
rasa-production_1  | 2020-02-24 15:20:00 ERROR    pika.adapters.utils.connection_workflow  - AMQPConnector - reporting failure: AMQPConnectorSocketConnectError: ConnectionRefusedError(111, 'Connection refused')
rasa-production_1  | 2020-02-24 15:20:05 ERROR    pika.adapters.utils.io_services_utils  - Socket failed to connect: <socket.socket fd=24, family=AddressFamily.AF_INET, type=2049, proto=6, laddr=('172.26.0.8', 55798)>; error=111 (Connection refused)
rasa-production_1  | 2020-02-24 15:20:05 ERROR    pika.adapters.utils.connection_workflow  - TCP Connection attempt failed: ConnectionRefusedError(111, 'Connection refused'); dest=(<AddressFamily.AF_INET: 2>, <SocketKind.SOCK_STREAM: 1>, 6, '', ('172.26.0.5', 5672))
rasa-production_1  | 2020-02-24 15:20:05 ERROR    pika.adapters.utils.connection_workflow  - AMQPConnector - reporting failure: AMQPConnectorSocketConnectError: ConnectionRefusedError(111, 'Connection refused')
rasa-production_1  | 2020-02-24 15:20:10 ERROR    pika.adapters.utils.io_services_utils  - Socket failed to connect: <socket.socket fd=24, family=AddressFamily.AF_INET, type=2049, proto=6, laddr=('172.26.0.8', 55806)>; error=111 (Connection refused)
rasa-production_1  | 2020-02-24 15:20:10 ERROR    pika.adapters.utils.connection_workflow  - TCP Connection attempt failed: ConnectionRefusedError(111, 'Connection refused'); dest=(<AddressFamily.AF_INET: 2>, <SocketKind.SOCK_STREAM: 1>, 6, '', ('172.26.0.5', 5672))
rasa-production_1  | 2020-02-24 15:20:10 ERROR    pika.adapters.utils.connection_workflow  - AMQPConnector - reporting failure: AMQPConnectorSocketConnectError: ConnectionRefusedError(111, 'Connection refused')
rasa-worker_1      | 2020-02-24 15:20:00 ERROR    pika.adapters.utils.io_services_utils  - Socket failed to connect: <socket.socket fd=21, family=AddressFamily.AF_INET, type=2049, proto=6, laddr=('172.26.0.7', 60464)>; error=111 (Connection refused)
rasa-worker_1      | 2020-02-24 15:20:00 ERROR    pika.adapters.utils.connection_workflow  - TCP Connection attempt failed: ConnectionRefusedError(111, 'Connection refused'); dest=(<AddressFamily.AF_INET: 2>, <SocketKind.SOCK_STREAM: 1>, 6, '', ('172.26.0.5', 5672))
rasa-worker_1      | 2020-02-24 15:20:00 ERROR    pika.adapters.utils.connection_workflow  - AMQPConnector - reporting failure: AMQPConnectorSocketConnectError: ConnectionRefusedError(111, 'Connection refused')
rasa-worker_1      | 2020-02-24 15:20:05 ERROR    pika.adapters.utils.io_services_utils  - Socket failed to connect: <socket.socket fd=24, family=AddressFamily.AF_INET, type=2049, proto=6, laddr=('172.26.0.7', 60488)>; error=111 (Connection refused)
rasa-worker_1      | 2020-02-24 15:20:05 ERROR    pika.adapters.utils.connection_workflow  - TCP Connection attempt failed: ConnectionRefusedError(111, 'Connection refused'); dest=(<AddressFamily.AF_INET: 2>, <SocketKind.SOCK_STREAM: 1>, 6, '', ('172.26.0.5', 5672))
rasa-worker_1      | 2020-02-24 15:20:05 ERROR    pika.adapters.utils.connection_workflow  - AMQPConnector - reporting failure: AMQPConnectorSocketConnectError: ConnectionRefusedError(111, 'Connection refused')
rasa-worker_1      | 2020-02-24 15:20:10 ERROR    pika.adapters.utils.io_services_utils  - Socket failed to connect: <socket.socket fd=24, family=AddressFamily.AF_INET, type=2049, proto=6, laddr=('172.26.0.7', 60494)>; error=111 (Connection refused)
rasa-worker_1      | 2020-02-24 15:20:10 ERROR    pika.adapters.utils.connection_workflow  - TCP Connection attempt failed: ConnectionRefusedError(111, 'Connection refused'); dest=(<AddressFamily.AF_INET: 2>, <SocketKind.SOCK_STREAM: 1>, 6, '', ('172.26.0.5', 5672))
rasa-worker_1      | 2020-02-24 15:20:10 ERROR    pika.adapters.utils.connection_workflow  - AMQPConnector - reporting failure: AMQPConnectorSocketConnectError: ConnectionRefusedError(111, 'Connection refused')
rasa-x_1           | ERROR:pika.adapters.utils.io_services_utils:Socket failed to connect: <socket.socket fd=18, family=AddressFamily.AF_INET, type=2049, proto=6, laddr=('172.26.0.6', 51846)>; error=111 (Connection refused)
rasa-x_1           | ERROR:pika.adapters.utils.connection_workflow:TCP Connection attempt failed: ConnectionRefusedError(111, 'Connection refused'); dest=(<AddressFamily.AF_INET: 2>, <SocketKind.SOCK_STREAM: 1>, 6, '', ('172.26.0.5', 5672))
rasa-x_1           | ERROR:pika.adapters.utils.connection_workflow:AMQPConnector - reporting failure: AMQPConnectorSocketConnectError: ConnectionRefusedError(111, 'Connection refused')
rasa-x_1           | ERROR:pika.adapters.utils.io_services_utils:Socket failed to connect: <socket.socket fd=18, family=AddressFamily.AF_INET, type=2049, proto=6, laddr=('172.26.0.6', 51870)>; error=111 (Connection refused)
rasa-x_1           | ERROR:pika.adapters.utils.connection_workflow:TCP Connection attempt failed: ConnectionRefusedError(111, 'Connection refused'); dest=(<AddressFamily.AF_INET: 2>, <SocketKind.SOCK_STREAM: 1>, 6, '', ('172.26.0.5', 5672))
rasa-x_1           | ERROR:pika.adapters.utils.connection_workflow:AMQPConnector - reporting failure: AMQPConnectorSocketConnectError: ConnectionRefusedError(111, 'Connection refused')
rasa-x_1           | ERROR:pika.adapters.utils.connection_workflow:AMQPConnector - reporting failure: AMQPConnectorAMQPHandshakeError: ConnectionClosedByBroker: (403) 'ACCESS_REFUSED - Login was refused using authentication mechanism PLAIN. For details see the broker logfile.'
rasa-x_1           | ERROR:pika.adapters.utils.io_services_utils:Socket failed to connect: <socket.socket fd=18, family=AddressFamily.AF_INET, type=2049, proto=6, laddr=('172.26.0.6', 51906)>; error=111 (Connection refused)
rasa-x_1           | ERROR:pika.adapters.utils.connection_workflow:TCP Connection attempt failed: ConnectionRefusedError(111, 'Connection refused'); dest=(<AddressFamily.AF_INET: 2>, <SocketKind.SOCK_STREAM: 1>, 6, '', ('172.26.0.5', 5672))
rasa-x_1           | ERROR:pika.adapters.utils.connection_workflow:AMQPConnector - reporting failure: AMQPConnectorSocketConnectError: ConnectionRefusedError(111, 'Connection refused')

Any idea? And, what’s the difference between containers rasa-x_1, rasa-worker_1, and rasa-production_1? Based on docker-compose.yml, work_1 and production_1 are derived from x_1, but how they different when running Rasa X?

Thanks,

Hi @yiouyou, there are a lot of questions at once :slight_smile: I suggest having multiple forum posts so that other community members can easier find them.

As you can see below, when using the interactive model, the list of next action shows some actions which are not included in my trained model, such as “utter_did_that_help”.

These are based on your actions in your domain.yml and not based on the actions in the current model.

Moreover, the actions showed in “Responses” page are not shown in the list, such as “utter_askChange”, “utter_ask_movieName”,… and so on, even the “ticket_form” defined in domain.yml file.

Even if you scroll? :thinking:

@yiouyou and I communicated using other IM, and fixed the issue which is a docker network setting problem, not related with Rasa.

@howlanderson @yiouyou Can you explain what the docker network setting error is? I am getting this with the Docker quick-install procedure to build Rasa-X. What do I need to change to solve the pika errors?

@argideritzalpea Just make sure your docker setting can access other docker instance via IP or hostname.