Hi @dakshvar22,
good questions - thanks for that. I try to explain my thoughts by giving a concrete example.
My config-setup would be:
- name: "ResponseSelector"
retrieval_intent: allowed_faq
Imagine this form, that is one of the main tasks of my bot:
## service_ticket_form
* open_service_ticket
- service_ticket_form
- form{"name": "service_ticket_form"}
* allowed_faq
- respond_allowed_faq
- form{"name": "service_ticket_form"}
- form{"name": null}
- action_restart
Further this is a snippet from my responses.md:
## ask_topic
* allowed_faq/ask_topic
- The possible topics are industry, chemistry and flowers
## ask_responsible_department
* allowed_faq/ask_responsible_department
- The responsible department varies depending on the topic
Now imagine there are up to 20 different responses that I want the bot to be able to give to certain questions from the user during processing the form. I think that the ResponseSelector is perfectly suited for this case if I want to avoid writing tons of storylines.
Now what if one ore more responses results in not only one response-utterance rather than a specific follow up action that should be injected in the story like this:
## ask_responsible_department
* allowed_faq/ask_responsible_department
- The responsible department varies depending on the topic
- action_retrieve_responsible_department_based_on_slot
One could argue that via the traditional way, we would embedd the variable value like this:
- The responsible department varies depending on the topic: {topic}
but as you already stated out, the utterance is part of the training data hence embedding variables might cause issues and aswell point three of the following could be the case.
Three things are interesting here:
- This implementation would give the possibility (unlike your suggestion) to execute response-specific follow up actions without the necessity to extend the stories (which keeps them clean imho)
- We could reuse your logic to use the “action_” affix to separate training material from story material inside the responses.
- Sometimes variables depend on computations / calculations that happen outside of the form such that we couldnt buffer/cache their values unless there is the necessity to fetch them. This necessity could be bound on the response-intent.
What do you think? Is this nonsense?
Kind regards
Julian