I got this comment from a reader:
Can you sketch a use case where template mode works better than example mode? I have not been able to figure out what it is intended for.
Dialogflow has evolved quite a bit since I wrote my article too, and it is a good time to revisit my views from that post.
A small note: I suppose you can convert almost every template mode userSays phrase into the appropriate example mode userSays phrase by selecting the appropriate text and marking with the entity name. That is not just an extra step, but in some cases it is also quite unintuitive. In those cases, I would prefer using template mode because it helps you understand what you are doing when you come back to your agent after a while.
Use cases for template mode
This is the easiest one. You don’t have any sensible way of marking up @sys.any and I don’t think it is a good idea to try to force it either.
Catching swear words (and other keywords)
I wrote an article about this recently and you will notice that combining the wildcard with the swear phrase is much easier to write out if you used the template mode.
If you are not familiar with composite entities, you can read more about them here. While you could modify your userSays in example mode to accommodate composite entities, once again this is a case where the template mode is the more intuitive approach.
Use cases for Example Mode
Having said that, it is possible to go to the extremes in the other direction. I used to do this too (that is, using template mode everywhere), and now I am trying to strike a balance.
An important reason is that the behavior of the template mode has changed over the past year, and I have noticed a couple of scenarios where Dialogflow’s template mode pattern matching became poorer over time.
Some system entities work better in example mode
The last name system entity works quite poorly in template mode. By changing it to example mode (and supplying more examples), you will get much better entity extraction.
Another example where the example mode performs much better is with location entities such as city name, zip code etc Here again, you are better off using example mode if you want to get better entity recognition.
When there is potential for conflict amongst system entities, example mode is a better option.
When I try to reason about why entities such as last name and location related entities perform much better with example mode, I think it is because you have higher chance of conflicts with those entities. For example the last name could very well conflict with first names in many cases, and similarly zip codes can be mistaken for a string of digits.
Single word user input
Specifying multiple user says phrases reinforces the key term we are interested in. You can see how this works in my “Conversation Design” course. As an example: for capturing last names, if we have an intent where we use many many examples of last names, it reinforces (for Dialogflow) that we are interested in the last name entity for that particular intent.
So when you expect a lot of single word user input at a specific point in your conversation, it seems to be a good idea to opt for example mode.