What is a planner?
So far, we have been performing complex requests by performing the function calls ourselves. This, however, requires you to restrict the kind of requests that your users can make to what you can predict and write ahead of time. It also restricts your users to only generating one output at a time. Sometimes, you may want to give them the ability to do more.
For example, if you have a semantic function that allows users to request jokes (as we built in Chapter 1) and a user requests “tell me a knock-knock joke,” you can simply call the semantic function that tells knock-knock jokes. But if the user requests three knock-knock jokes, the function wouldn’t know how to handle it.
A planner is a built-in function from Semantic Kernel that receives a user request and then goes through the descriptions of all the functions, parameters, and outputs of the functions you loaded in your kernel and decides the best way to combine them, generating a plan...