From dd066def731558d7e4185be40501ed2b9162893b Mon Sep 17 00:00:00 2001 From: Amin Shokrzade Date: Tue, 19 Nov 2024 00:25:08 +0000 Subject: [PATCH] Add Context message when creating assistant thread --- Olive.Gpt/ApiDto/ChatRequestThread.cs | 12 ++---------- Olive.Gpt/AssistantApi.cs | 20 +++++++++++++++++++- Olive.Gpt/Olive.Gpt.csproj | 2 +- 3 files changed, 22 insertions(+), 12 deletions(-) diff --git a/Olive.Gpt/ApiDto/ChatRequestThread.cs b/Olive.Gpt/ApiDto/ChatRequestThread.cs index 2adaf0b0..5feb486a 100644 --- a/Olive.Gpt/ApiDto/ChatRequestThread.cs +++ b/Olive.Gpt/ApiDto/ChatRequestThread.cs @@ -7,17 +7,9 @@ namespace Olive.Gpt.ApiDto { class ChatRequestThread { - public ChatRequestThread(ChatMessage[] messages) - { - Messages = new Dictionary(); - - foreach (var item in messages) - { - Messages.Add(item.Role, item.Content); - } - } + public ChatRequestThread(ChatMessage[] messages) => Messages = messages; [JsonProperty("messages")] - public Dictionary Messages { get; set; } + public ChatMessage[] Messages { get; set; } } } diff --git a/Olive.Gpt/AssistantApi.cs b/Olive.Gpt/AssistantApi.cs index cc647fa1..39befff6 100644 --- a/Olive.Gpt/AssistantApi.cs +++ b/Olive.Gpt/AssistantApi.cs @@ -105,11 +105,29 @@ public async Task DeleteAssistant(string assistantId) return jObject.Id; } - public async Task CreateNewThread() + public async Task CreateNewThread(List messages=null) { var payload = new StringContent("", Encoding.UTF8, "application/json"); + if (messages != null && messages.HasAny()) + { + for (int i = 0; i < messages.Count; ++i) + { + if (messages[i].Role.IsEmpty()) + { + messages[i].Role = "user"; + } + } + + ChatRequestThread chatRequestThread = new ChatRequestThread(messages.ToArray()); + + var jsonContent = JsonConvert.SerializeObject(chatRequestThread, _settings); + + payload = new StringContent(jsonContent, Encoding.UTF8, "application/json"); + } + var httpRequest = new HttpRequestMessage(HttpMethod.Post, "https://api.openai.com/v1/threads") { Content = payload }; + var response = await _client.SendAsync(httpRequest, HttpCompletionOption.ResponseHeadersRead); if (!response.IsSuccessStatusCode) diff --git a/Olive.Gpt/Olive.Gpt.csproj b/Olive.Gpt/Olive.Gpt.csproj index 1e32c136..9aa3c99a 100644 --- a/Olive.Gpt/Olive.Gpt.csproj +++ b/Olive.Gpt/Olive.Gpt.csproj @@ -1,7 +1,7 @@  netstandard2.0 - 1.1.5 + 1.1.6 True