AttributeError: 'SingleStateFeaturizer' object has no attribute '_use_regex_interpreter' when running in Docker

I’m currently developing a chatbot and everything - at least it seems - is working fine when running directly on my machine. Today, I tried to run the same chatbot in Docker and I get a strange error.

Here’s my docker-compose.yml

services:
  rasa-api:
    build: ./rasa-test
    ports:
      - "5005:5005"
    command: rasa run --enable-api
  rasa-actions:
    build: ./rasa-test
    ports:
      - "5055:5055"
    command: rasa run actions

And the dockerfile

FROM python:3.6

WORKDIR /app

COPY . /app

RUN pip install -r requirements.txt

The error appears when I try to POST on http://localhost:5005/webhooks/rest/webhook with the following content

{
    "sender": "99",
    "message": "hi"
}

When running directly on my machine, I get the expected response. However, with Docker, I’m receiving an empty array as a response and the following error appears:

PS C:\xxx\code> docker-compose up
Starting code_rasa-actions_1 ... done                                                                                                                                                         Starting code_rasa-api_1     ... done                                                                                                                                                         Attaching to code_rasa-api_1, code_rasa-actions_1
rasa-actions_1  | 2020-12-10 10:23:26 INFO     rasa_sdk.endpoint  - Starting action endpoint server...
rasa-actions_1  | 2020-12-10 10:23:26 INFO     rasa_sdk.executor  - Registered function for 'validate_info_form'.
rasa-actions_1  | 2020-12-10 10:23:26 INFO     rasa_sdk.executor  - Registered function for 'action_check_barcode'.
rasa-actions_1  | 2020-12-10 10:23:26 INFO     rasa_sdk.executor  - Registered function for 'action_check_rating'.
rasa-actions_1  | 2020-12-10 10:23:26 INFO     rasa_sdk.endpoint  - Action endpoint is up and running on http://localhost:5055
rasa-api_1      | 2020-12-10 10:23:27 INFO     root  - Starting Rasa server on http://localhost:5005
rasa-api_1      | 2020-12-10 10:23:27 INFO     rasa.model  - Loading model models/20201207-152250.tar.gz...
rasa-api_1      | 2020-12-10 10:23:50 INFO     root  - Rasa server is up and running.
rasa-api_1      | 2020-12-10 10:23:57 ERROR    rasa.core.channels.rest  - An exception occured while handling user message 'hi'.
rasa-api_1      | Traceback (most recent call last):
rasa-api_1      |   File "/usr/local/lib/python3.6/site-packages/rasa/core/channels/rest.py", line 126, in receive
rasa-api_1      |     metadata=metadata,
rasa-api_1      |   File "/usr/local/lib/python3.6/site-packages/rasa/core/channels/channel.py", line 85, in handler
rasa-api_1      |     await app.agent.handle_message(*args, **kwargs)
rasa-api_1      |   File "/usr/local/lib/python3.6/site-packages/rasa/core/agent.py", line 521, in handle_message
rasa-api_1      |     return await processor.handle_message(message)
rasa-api_1      |   File "/usr/local/lib/python3.6/site-packages/rasa/core/processor.py", line 98, in handle_message
rasa-api_1      |     await self._predict_and_execute_next_action(message.output_channel, tracker)
rasa-api_1      |   File "/usr/local/lib/python3.6/site-packages/rasa/core/processor.py", line 628, in _predict_and_execute_next_action
rasa-api_1      |     action, prediction = self.predict_next_action(tracker)
rasa-api_1      |   File "/usr/local/lib/python3.6/site-packages/rasa/core/processor.py", line 355, in predict_next_action
rasa-api_1      |     prediction = self._get_next_action_probabilities(tracker)
rasa-api_1      |   File "/usr/local/lib/python3.6/site-packages/rasa/core/processor.py", line 898, in _get_next_action_probabilities
rasa-api_1      |     tracker, self.domain, self.interpreter
rasa-api_1      |   File "/usr/local/lib/python3.6/site-packages/rasa/core/policies/ensemble.py", line 721, in probabilities_using_best_policy
rasa-api_1      |     winning_prediction = self._best_policy_prediction(tracker, domain, interpreter)
rasa-api_1      |   File "/usr/local/lib/python3.6/site-packages/rasa/core/policies/ensemble.py", line 601, in _best_policy_prediction
rasa-api_1      |     for i, p in enumerate(self.policies)
rasa-api_1      |   File "/usr/local/lib/python3.6/site-packages/rasa/core/policies/ensemble.py", line 601, in <dictcomp>
rasa-api_1      |     for i, p in enumerate(self.policies)
rasa-api_1      |   File "/usr/local/lib/python3.6/site-packages/rasa/core/policies/ensemble.py", line 633, in _get_prediction
rasa-api_1      |     tracker, domain, interpreter
rasa-api_1      |   File "/usr/local/lib/python3.6/site-packages/rasa/core/policies/ted_policy.py", line 385, in predict_action_probabilities
rasa-api_1      |     [tracker], domain, interpreter
rasa-api_1      |   File "/usr/local/lib/python3.6/site-packages/rasa/core/featurizers/tracker_featurizers.py", line 181, in create_state_features
rasa-api_1      |     return self._featurize_states(trackers_as_states, interpreter)
rasa-api_1      |   File "/usr/local/lib/python3.6/site-packages/rasa/core/featurizers/tracker_featurizers.py", line 74, in _featurize_states
rasa-api_1      |     for tracker_states in trackers_as_states
rasa-api_1      |   File "/usr/local/lib/python3.6/site-packages/rasa/core/featurizers/tracker_featurizers.py", line 74, in <listcomp>
rasa-api_1      |     for tracker_states in trackers_as_states
rasa-api_1      |   File "/usr/local/lib/python3.6/site-packages/rasa/core/featurizers/tracker_featurizers.py", line 72, in <listcomp>
rasa-api_1      |     for state in tracker_states
rasa-api_1      |   File "/usr/local/lib/python3.6/site-packages/rasa/core/featurizers/single_state_featurizer.py", line 227, in encode_state
rasa-api_1      |     self._extract_state_features(sub_state, interpreter, sparse=True)
rasa-api_1      |   File "/usr/local/lib/python3.6/site-packages/rasa/core/featurizers/single_state_featurizer.py", line 178, in _extract_state_features
rasa-api_1      |     if self._use_regex_interpreter and not isinstance(
rasa-api_1      | AttributeError: 'SingleStateFeaturizer' object has no attribute '_use_regex_interpreter'

I don’t think the problem is related to my chatbot configuration since everything works on my machine. Therefore, I didn’t find it necessary to include it.

Thank’s in advance

I think the version of rasa that you used for training is different from the version, you use for testing

It does seem to have solved the problem. Thank you !

1 Like