Rasa Open Source story scaling

I have been hitting a road block in trying to create a chatbot with Rasa that scales and generalizes well.

I have two functionalities and a few extra intents (bot challenge, abilities, unsupported etc).

I started creating the bot without forms and FormActions. I ended up with 35 stories, but it got confused between the two core functions. I rewrote many of the stories to add form actions, but it didn’t really solve my problem. After a few rounds of interactive learning I am at 54 stories and there are still problems in some cases with following the right path. Moreover, I have to test many examples each time since after adding new stories to fix some problems, previously functioning examples stop working.

I need to find a more successful way of creating story data that generalizes well if I want to move from 2 functionalities to tens of functions.

Can anyone help please?

could you share what are the functionalists of your bot?

I would start planing in terms of

  • what are the happy paths. Can they be defined as rules?
  • are there any slots that should be filled? Can they be defined through forms?
  • why other examples stop working, do you introduce contradicting behavior?

Thank you @Ghostvv for replying.

The functionalities are in principle.

• Give a product number and time frame and a prediction of sales for that period is made through an API call.

• Give a product number and a description of the product is returned.

## happy path prediction
* greet
  - utter_greet
  - utter_how_can_I_help
* prediction{"product":"1691","time":"this month"}
  - slot{"currentQuery":"prediction"}
  - action_retrieve_prediction
  - slot{"prediction_amount":100}
  - slot{"previous":1000}
* thanks
  - utter_goodbye 
## unhappy prediction
* greet
  - utter_greet
  - utter_how_can_I_help
* prediction
  - slot{"currentQuery": "prediction"}
  - prediction_form 
  - form{"name":"prediction_form"}
  - form{"name":null}
  - action_retrieve_prediction
  - slot{"prediction_amount": 100}
  - slot{"previous":1000}
* thanks
  - utter_goodbye 
## happy path description

      * greet
         - utter_greet
         - utter_how_can_I_help
      * description{"product":"1691"}
         - slot{"currentQuery" : "description"}
         - action_retrieve_description
         - slot{"found_description":true}
      * thanks
         - utter_glad_to_help 
 ## unhappy description
    * greet
      - utter_greet
      - utter_how_can_I_help
    * description
      - slot{"currentQuery" : "description"}
      - utter_ask_product
    * inform{"product":"1691"}
      - action_retrieve_description
      - slot{"found_description":true}
    * thanks
      - utter_glad_to_help 
  • I’m currently using Rasa OSS 1.10 and since adding forms didn’t help and I had a very unpleasant experience with 2.0 when trying it, I’m hesitant to use doing all the migration to 2.0 and using rules.

  • One problem comes in when interrupting the form of the prediction.

In action_retrieve_prediction and action_retrieve_description the product number is checked against a list of correct values. In case it is not valid, a list of options is given to the user. Following this route lead to many of the confusion between the actions afterwards. Would you advise against such a feature?

Following this route lead to many of the confusion between the actions afterwards.

What do you mean by it?

Thank you again @Ghostvv for answering, and sorry for taking so long to respond. What I meant is that if the bot gives the menu after the the user asks for it or it is determined that it is not a valid product number, the bot sometimes continues with the wrong action.

the bot sometimes continues with the wrong action.

does you training stories contain these cases?