Migration to New Rasa Forms

Hi, I am going to migrate my old Rasa forms(1.x) to new Rasa forms(2.x), but as e2e has been introduced in 2.2. My question is how Rasa Team will adjust Forms with e2e learning? And secondly what benefits we can get migrating our old forms to new forms? Thanks.

The main thing that’s different if you’re moving from 1.x to 2.x isn’t e2e (which is still slightly experimental) but it is the new RulePolicy. This new policy offers a new mechanism to declare forms as described here. Just to check, was this the information you were looking for?

Thanks @koaning for the reply. So if we have to customize the new forms for validation, required slots, requesting next slot and for submit then what’s the point converting Forms from 1.x to 2.x or Implementing forms through FormValidationAction instead of FormAction class? Secondly it means Forms will remain the part of Rasa even if e2e becomes the regular feature of Rasa? Thanks

I cannot predict the future, but I might argue why e2e won’t cover forms any time soon. The e2e pipeline is based on machine learning because intents aren’t always the right mental construct for a conversation.

On the other hand, everything that happens within a form is pretty well defined if you think about it. A form needs to follow a specific path because you want to guarantee data quality. With this in mind, I wouldn’t worry about e2e when it comes to forms. Practically, I can’t imagine a scenario where I would want to define a form without rules.

You’re correct that you still need to construct classes for form validation. You can see an example of this in our docs. Note though that you also need to define your form in the domain file as described here. You can also specify some required properties of the slots as described here but you can always customise it with python code using form validation.

Thanks @koaning for the reply. I can understand what you are trying to say about e2e. Forms seems to be the best thing to fulfill Business use cases. Secondly, my forms are attached with the UI, so i have to create them at the run time, so this way i cannot add a hard coded validators in the code for the slots, I need to make them generic, so for that and by looking at the current implementation of the FormValidationAction I think, I will probably be overriding these functions:

  • extract_custom_slots
  • validate
  • next_requested_slot