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; }