`OpenAIFunctionsAgent` is an agent uses OpenAI function calling introduced after 0613. It uses a
new type of message called `FunctionMessage` to specify the function outputs and specify
available tools when calling generation.