private static async Task<Response<ChatCompletions>> CallChatGPT(string userQuestion, string modelDeploymentName, OpenAIClient openAIClient, IList<ChatMessage> functionMessages = null)
{
    var chatCompletionOptions = new ChatCompletionsOptions();
    
    chatCompletionOptions.Messages.Add(new ChatMessage(ChatRole.System, "You are a helpful assistant. Only use the functions and parameters you have been provided with."));

    chatCompletionOptions.Messages.Add(new ChatMessage(ChatRole.User, userQuestion));

    if (functionMessages != null)
    {
        foreach (var functionMessage in functionMessages)
        {
            chatCompletionOptions.Messages.Add(functionMessage);
        }
    }
    
    chatCompletionOptions.Functions.Add(new FunctionDefinition()
    {
        Name = "msgraph_search_users",
        Description = "Call the Microsoft Graph API to search users based on user attributes",
        Parameters = BinaryData.FromString("{\"type\":\"object\",\"required\":[\"officeLocation\",\"department\",\"jobTitle\"],\"properties\":{\"officeLocation\":{\"type\":\"string\",\"enum\":[\"London\",\"Mumbai\",\"New York\"],\"description\":\"The user's location\"},\"department\":{\"type\":\"string\",\"enum\":[\"Engineering\",\"Product Management\",\"Executive\"],\"description\":\"The user's department\"},\"jobTitle\":{\"type\":\"string\",\"description\":\"The user's job title\"}}}")
    });

    chatCompletionOptions.Temperature = 0;
    var result = await openAIClient.GetChatCompletionsAsync(modelDeploymentName, chatCompletionOptions);
    return result;
}