Skip to content

Commit

Permalink
update assistant api
Browse files Browse the repository at this point in the history
  • Loading branch information
hoseinzadehashraf committed Feb 26, 2024
1 parent 75c75f5 commit f1b8a56
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 6 deletions.
11 changes: 8 additions & 3 deletions Olive.Gpt/AssistantApi.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,24 @@
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using Olive.Gpt.ApiDto;
using Olive.Gpt.AssistantDto;

namespace Olive.Gpt
{
public class AssistantApi
{
readonly JsonSerializerSettings _settings = new() { NullValueHandling = NullValueHandling.Ignore };
readonly JsonSerializerSettings _settings = new() { NullValueHandling = NullValueHandling.Ignore};
readonly HttpClient _client = new(CreateForgivingHandler()) { Timeout = 60.Seconds() };

public AssistantApi(string apiKey)
{
_client.DefaultRequestHeaders.Authorization = new("Bearer", apiKey);
_client.DefaultRequestHeaders.Add("User-Agent", "olive/dotnet_openai_api");
_client.DefaultRequestHeaders.Add("OpenAI-Beta", "assistants=v1");

_settings.Converters.Add(new StringEnumConverter());
}

static HttpClientHandler CreateForgivingHandler() => new()
Expand All @@ -28,7 +31,8 @@ public AssistantApi(string apiKey)

public async Task<string> CreateNewAssistant(OpenAiCreateAssistantDto assistantDto)
{
var payload = new StringContent(JsonConvert.SerializeObject(assistantDto), Encoding.UTF8, "application/json");
var data = JsonConvert.SerializeObject(assistantDto, _settings);
var payload = new StringContent(data, Encoding.UTF8, "application/json");

var httpRequest = new HttpRequestMessage(HttpMethod.Post, "https://api.openai.com/v1/assistants") { Content = payload };
var response = await _client.SendAsync(httpRequest, HttpCompletionOption.ResponseHeadersRead);
Expand All @@ -46,7 +50,8 @@ public async Task<string> CreateNewAssistant(OpenAiCreateAssistantDto assistantD

public async Task<string> EditAssistant(string assistantId,OpenAiCreateAssistantDto assistantDto)
{
var payload = new StringContent(JsonConvert.SerializeObject(assistantDto), Encoding.UTF8, "application/json");
var data = JsonConvert.SerializeObject(assistantDto, _settings);
var payload = new StringContent(data, Encoding.UTF8, "application/json");

var httpRequest = new HttpRequestMessage(HttpMethod.Post, $"https://api.openai.com/v1/assistants/{assistantId}") { Content = payload };
var response = await _client.SendAsync(httpRequest, HttpCompletionOption.ResponseHeadersRead);
Expand Down
2 changes: 2 additions & 0 deletions Olive.Gpt/AssistantDto/OpenAiAssistantTools.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ public enum OpenAiAssistantTools
{
[EnumMember(Value = "code_interpreter")]
CodeInterpreter,
[EnumMember(Value = "retrieval")]
Retrieval,
[EnumMember(Value = "function")]
Function
}
16 changes: 14 additions & 2 deletions Olive.Gpt/AssistantDto/OpenAiCreateAssistantDto.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,22 @@ namespace Olive.Gpt.AssistantDto;

public class OpenAiCreateAssistantDto
{
[JsonProperty("model")]
public string Model { get; set; }
[JsonProperty("name")]
public string Name { get; set; }
[JsonProperty("description")]
public string Description { get; set; }
[JsonProperty("instructions")]
public string Instructions { get; set; }
public OpenAiAssistantTools[] Tools{ get; set; }
[JsonProperty("tools")]
public OpenAiAssistantToolsDto[] Tools{ get; set; }
[JsonProperty("metadata")]
public Dictionary<string,string> Metadata { get; set; }
}
}

public class OpenAiAssistantToolsDto
{
[JsonProperty("type")]
public OpenAiAssistantTools Type{ get; set; }
}
2 changes: 1 addition & 1 deletion Olive.Gpt/Olive.Gpt.csproj
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<Version>1.0.126</Version>
<Version>1.0.127</Version>
</PropertyGroup>

<ItemGroup>
Expand Down

0 comments on commit f1b8a56

Please sign in to comment.