From 7b6165fdd807311b21ccaed630437c2a6ffbb842 Mon Sep 17 00:00:00 2001 From: Joe Tretter Date: Thu, 23 Nov 2023 14:42:04 -0600 Subject: [PATCH] cleanup and advancements --- simpleOpenAiDirectChatBot/Program.cs | 66 +++++++++++++++++++++++----- 1 file changed, 54 insertions(+), 12 deletions(-) diff --git a/simpleOpenAiDirectChatBot/Program.cs b/simpleOpenAiDirectChatBot/Program.cs index b88f740..0448e8a 100644 --- a/simpleOpenAiDirectChatBot/Program.cs +++ b/simpleOpenAiDirectChatBot/Program.cs @@ -8,33 +8,64 @@ using System.Threading.Tasks; class Program { + static async Task Main() { string apiKey = "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"; - string prompt = "What is the meaning of life?"; - string response = await GetChatGPTResponse(apiKey, prompt); + singleMessage[] allMessages = []; + //allMessages = allMessages.Append(new singleMessage("system", "You are a poetic assistant, skilled in explaining complex programming concepts with creative flair.")).ToArray(); + //allMessages = allMessages.Append(new singleMessage("system", "You are a personal assistant, you give brief but exact answers.")).ToArray(); + allMessages = allMessages.Append(new singleMessage("system", @" + You are a spanish teacher. + You speak simple spanish language. + + When the user makes mistakes + - You point out errors to the user + - English language is used to describe error details. + - Do not correct accents of characters. + - Do not correct upper- lower case errors. + ")).ToArray(); - Console.WriteLine("ChatGPT Response: "); - Console.WriteLine(response); + while (true) + { + Console.ForegroundColor = ConsoleColor.White; + Console.Write(">> "); + var prompt = Console.ReadLine(); + if (prompt?.ToLower() == "bye") + { + break; + } + + allMessages = allMessages.Append(new singleMessage("user", prompt)).ToArray(); + + Console.ForegroundColor = ConsoleColor.Cyan; + Console.WriteLine(); + var currentResponse = String.Empty; + var response = await GetChatGPTResponse(apiKey, allMessages); + + Console.WriteLine(response); + Console.WriteLine(); + + allMessages = allMessages.Append(new singleMessage("assistant", response)).ToArray(); + } } - static async Task GetChatGPTResponse(string apiKey, string prompt) + static async Task GetChatGPTResponse(string apiKey, singleMessage[] allMessages) { using (HttpClient client = new HttpClient()) { string apiUrl = "https://api.openai.com/v1/chat/completions"; // Prepare the request data - var requestData = new + var requestData = new { - messages = new[] { - new { role = "system", content = "You are a poetic assistant, skilled in explaining complex programming concepts with creative flair." }, - new { role = "user", content = "Compose a poem that explains the concept of recursion in programming." } - }, model = "gpt-3.5-turbo", - max_tokens = 100, - temperature = 0.7 + messages = allMessages, + max_tokens = 256, + top_p = 1, + frequency_penalty = 0, + presence_penalty = 0 }; string jsonData = JsonSerializer.Serialize(requestData); @@ -61,3 +92,14 @@ class Program } } } + +class singleMessage +{ + public string role { get; set; } + public string content { get; set; } + public singleMessage(string intitRole, string initContent) + { + role = intitRole; + content = initContent; + } +} \ No newline at end of file