diff --git a/OpenAI.Playground/TestHelpers/ChatCompletionTestHelper.cs b/OpenAI.Playground/TestHelpers/ChatCompletionTestHelper.cs index 085d3a65..04924cf3 100644 --- a/OpenAI.Playground/TestHelpers/ChatCompletionTestHelper.cs +++ b/OpenAI.Playground/TestHelpers/ChatCompletionTestHelper.cs @@ -30,7 +30,7 @@ public static async Task RunSimpleChatCompletionTest(IOpenAIService sdk) if (completionResult.Successful) { - Console.WriteLine(completionResult.Choices.First().Message.Content); + Console.WriteLine(completionResult.Choices.First().Message?.Content); } else { @@ -72,7 +72,7 @@ public static async Task RunSimpleCompletionStreamTest(IOpenAIService sdk) { if (completion.Successful) { - Console.Write(completion.Choices.First().Message.Content); + Console.Write(completion.Choices.First().Message?.Content); } else { @@ -278,4 +278,4 @@ public static async Task RunChatFunctionCallTestAsStream(IOpenAIService sdk) throw; } } -} \ No newline at end of file +} diff --git a/OpenAI.Playground/TestHelpers/FileTestHelper.cs b/OpenAI.Playground/TestHelpers/FileTestHelper.cs index 62759630..1a97c452 100644 --- a/OpenAI.Playground/TestHelpers/FileTestHelper.cs +++ b/OpenAI.Playground/TestHelpers/FileTestHelper.cs @@ -36,67 +36,70 @@ public static async Task RunSimpleFileTest(IOpenAIService sdk) await Task.Delay(10_000); foreach (var uploadedFile in uploadedFiles.Data) { - ConsoleExtensions.WriteLine($"Retrieving {uploadedFile.FileName}", ConsoleColor.DarkCyan); - var retrieveFileResponse = await sdk.Files.RetrieveFile(uploadedFile.Id); - if (retrieveFileResponse.Successful) + if (uploadedFile != null) { - ConsoleExtensions.WriteLine($"{retrieveFileResponse.FileName} retrieved", ConsoleColor.DarkGreen); - } - else - { - ConsoleExtensions.WriteLine($"Retrieve {retrieveFileResponse.FileName} failed", ConsoleColor.Red); - } + ConsoleExtensions.WriteLine($"Retrieving {uploadedFile.FileName}", ConsoleColor.DarkCyan); + var retrieveFileResponse = await sdk.Files.RetrieveFile(uploadedFile.Id); + if (retrieveFileResponse.Successful) + { + ConsoleExtensions.WriteLine($"{retrieveFileResponse.FileName} retrieved", ConsoleColor.DarkGreen); + } + else + { + ConsoleExtensions.WriteLine($"Retrieve {retrieveFileResponse.FileName} failed", ConsoleColor.Red); + } - var retrieveFileContentResponse = await sdk.Files.RetrieveFileContent(uploadedFile.Id); - if (retrieveFileContentResponse.Successful && retrieveFileContentResponse.Content?.Equals(sampleFileAsString) == true) - { - ConsoleExtensions.WriteLine($"retrieved content as string:{Environment.NewLine}{retrieveFileContentResponse.Content} ", ConsoleColor.DarkGreen); - } - else - { - ConsoleExtensions.WriteLine($"Retrieve {retrieveFileResponse.FileName} failed", ConsoleColor.Red); - } + var retrieveFileContentResponse = await sdk.Files.RetrieveFileContent(uploadedFile.Id); + if (retrieveFileContentResponse.Successful && retrieveFileContentResponse.Content?.Equals(sampleFileAsString) == true) + { + ConsoleExtensions.WriteLine($"retrieved content as string:{Environment.NewLine}{retrieveFileContentResponse.Content} ", ConsoleColor.DarkGreen); + } + else + { + ConsoleExtensions.WriteLine($"Retrieve {retrieveFileResponse.FileName} failed", ConsoleColor.Red); + } - var retrieveFileContentResponseAsByteArray = await sdk.Files.RetrieveFileContent(uploadedFile.Id); - if (retrieveFileContentResponseAsByteArray.Content != null && sampleFileAsString == Encoding.UTF8.GetString(retrieveFileContentResponseAsByteArray.Content)) - { - ConsoleExtensions.WriteLine($"retrieved content as byteArray:{Environment.NewLine}{Encoding.UTF8.GetString(retrieveFileContentResponseAsByteArray.Content)} ", ConsoleColor.DarkGreen); - } - else - { - ConsoleExtensions.WriteLine($"Retrieve {retrieveFileResponse.FileName} failed", ConsoleColor.Red); - } + var retrieveFileContentResponseAsByteArray = await sdk.Files.RetrieveFileContent(uploadedFile.Id); + if (retrieveFileContentResponseAsByteArray.Content != null && sampleFileAsString == Encoding.UTF8.GetString(retrieveFileContentResponseAsByteArray.Content)) + { + ConsoleExtensions.WriteLine($"retrieved content as byteArray:{Environment.NewLine}{Encoding.UTF8.GetString(retrieveFileContentResponseAsByteArray.Content)} ", ConsoleColor.DarkGreen); + } + else + { + ConsoleExtensions.WriteLine($"Retrieve {retrieveFileResponse.FileName} failed", ConsoleColor.Red); + } - var retrieveFileContentResponseAsStream = await sdk.Files.RetrieveFileContent(uploadedFile.Id); + var retrieveFileContentResponseAsStream = await sdk.Files.RetrieveFileContent(uploadedFile.Id); - if (retrieveFileContentResponseAsStream.Content != null) - { - var reader = new StreamReader(retrieveFileContentResponseAsStream.Content!); - var content = await reader.ReadToEndAsync(); - if (content.Equals(sampleFileAsString)) + if (retrieveFileContentResponseAsStream.Content != null) { - ConsoleExtensions.WriteLine($"retrieved content as Stream:{Environment.NewLine}{content} ", ConsoleColor.DarkGreen); + var reader = new StreamReader(retrieveFileContentResponseAsStream.Content!); + var content = await reader.ReadToEndAsync(); + if (content.Equals(sampleFileAsString)) + { + ConsoleExtensions.WriteLine($"retrieved content as Stream:{Environment.NewLine}{content} ", ConsoleColor.DarkGreen); + } + else + { + ConsoleExtensions.WriteLine($"Retrieve {retrieveFileResponse.FileName} failed", ConsoleColor.Red); + } } else { ConsoleExtensions.WriteLine($"Retrieve {retrieveFileResponse.FileName} failed", ConsoleColor.Red); } - } - else - { - ConsoleExtensions.WriteLine($"Retrieve {retrieveFileResponse.FileName} failed", ConsoleColor.Red); - } - // var fileContent = sdk.Files.RetrieveFileContent(file.Id); - ConsoleExtensions.WriteLine($"Deleting file {uploadedFile.FileName}", ConsoleColor.DarkCyan); - var deleteResponse = await sdk.Files.DeleteFile(uploadedFile.Id); - if (deleteResponse.Successful) - { - ConsoleExtensions.WriteLine($"{retrieveFileResponse.FileName} deleted", ConsoleColor.DarkGreen); - } - else - { - ConsoleExtensions.WriteLine($"Delete {retrieveFileResponse.FileName} failed", ConsoleColor.Red); + // var fileContent = sdk.Files.RetrieveFileContent(file.Id); + ConsoleExtensions.WriteLine($"Deleting file {uploadedFile.FileName}", ConsoleColor.DarkCyan); + var deleteResponse = await sdk.Files.DeleteFile(uploadedFile.Id); + if (deleteResponse.Successful) + { + ConsoleExtensions.WriteLine($"{retrieveFileResponse.FileName} deleted", ConsoleColor.DarkGreen); + } + else + { + ConsoleExtensions.WriteLine($"Delete {retrieveFileResponse.FileName} failed", ConsoleColor.Red); + } } } } @@ -125,4 +128,4 @@ public static async Task CleanAllFiles(IOpenAIService sdk) Console.WriteLine(e); } } -} \ No newline at end of file +} diff --git a/OpenAI.Playground/TestHelpers/FineTuningTestHelper.cs b/OpenAI.Playground/TestHelpers/FineTuningTestHelper.cs index 4e1fcd40..441d19c1 100644 --- a/OpenAI.Playground/TestHelpers/FineTuningTestHelper.cs +++ b/OpenAI.Playground/TestHelpers/FineTuningTestHelper.cs @@ -84,7 +84,8 @@ public static async Task CleanUpAllFineTunings(IOpenAIService sdk) var fineTunes = await sdk.FineTunes.ListFineTunes(); foreach (var datum in fineTunes.Data) { + if (datum.FineTunedModel == null) continue; await sdk.FineTunes.DeleteFineTune(datum.FineTunedModel); } } -} \ No newline at end of file +} diff --git a/OpenAI.SDK/Managers/OpenAIAudioService.cs b/OpenAI.SDK/Managers/OpenAIAudioService.cs index 447e46cd..948a9282 100644 --- a/OpenAI.SDK/Managers/OpenAIAudioService.cs +++ b/OpenAI.SDK/Managers/OpenAIAudioService.cs @@ -24,32 +24,11 @@ public async Task CreateTranslation(AudioCreat private async Task Create(AudioCreateTranscriptionRequest audioCreateTranscriptionRequest, string uri, CancellationToken cancellationToken = default) { - var multipartContent = new MultipartFormDataContent(); - - if (audioCreateTranscriptionRequest is {File: not null, FileStream: not null}) - { - throw new ArgumentException("Either File or FileStream must be set, but not both."); - } - - if (audioCreateTranscriptionRequest.File != null) - { - multipartContent.Add( - new ByteArrayContent(audioCreateTranscriptionRequest.File), - "file", - audioCreateTranscriptionRequest.FileName - ); - } - else if (audioCreateTranscriptionRequest.FileStream != null) + var multipartContent = new MultipartFormDataContent { - multipartContent.Add( - new StreamContent(audioCreateTranscriptionRequest.FileStream), - "file", - audioCreateTranscriptionRequest.FileName - ); - } - - multipartContent.Add(new StringContent(audioCreateTranscriptionRequest.Model), "model"); - + {new ByteArrayContent(audioCreateTranscriptionRequest.File), "file", audioCreateTranscriptionRequest.FileName ?? string.Empty}, + {new StringContent(audioCreateTranscriptionRequest.Model ?? string.Empty), "model"} + }; if (audioCreateTranscriptionRequest.Language != null) { multipartContent.Add(new StringContent(audioCreateTranscriptionRequest.Language), "language"); @@ -71,8 +50,7 @@ private async Task Create(AudioCreateTranscrip } - if (null == audioCreateTranscriptionRequest.ResponseFormat || - StaticValues.AudioStatics.ResponseFormat.Json == audioCreateTranscriptionRequest.ResponseFormat || + if (StaticValues.AudioStatics.ResponseFormat.Json == audioCreateTranscriptionRequest.ResponseFormat || StaticValues.AudioStatics.ResponseFormat.VerboseJson == audioCreateTranscriptionRequest.ResponseFormat) { return await _httpClient.PostFileAndReadAsAsync(uri, multipartContent, cancellationToken); @@ -83,4 +61,4 @@ private async Task Create(AudioCreateTranscrip Text = await _httpClient.PostFileAndReadAsStringAsync(uri, multipartContent, cancellationToken) }; } -} \ No newline at end of file +} diff --git a/OpenAI.SDK/Managers/OpenAIImage.cs b/OpenAI.SDK/Managers/OpenAIImage.cs index 4b303789..fc29412a 100644 --- a/OpenAI.SDK/Managers/OpenAIImage.cs +++ b/OpenAI.SDK/Managers/OpenAIImage.cs @@ -11,6 +11,7 @@ public partial class OpenAIService : IImageService /// Creates an image given a prompt. /// /// + /// /// public async Task CreateImage(ImageCreateRequest imageCreateModel, CancellationToken cancellationToken = default) { @@ -21,6 +22,7 @@ public async Task CreateImage(ImageCreateRequest imageCreat /// Creates an edited or extended image given an original image and a prompt. /// /// + /// /// public async Task CreateImageEdit(ImageEditCreateRequest imageEditCreateRequest, CancellationToken cancellationToken = default) { @@ -45,13 +47,17 @@ public async Task CreateImageEdit(ImageEditCreateRequest im multipartContent.Add(new StringContent(imageEditCreateRequest.N.ToString()!), "n"); } - if (imageEditCreateRequest.Mask != null) + if (imageEditCreateRequest.Mask != null && imageEditCreateRequest.MaskName != null) { multipartContent.Add(new ByteArrayContent(imageEditCreateRequest.Mask), "mask", imageEditCreateRequest.MaskName); } multipartContent.Add(new StringContent(imageEditCreateRequest.Prompt), "prompt"); - multipartContent.Add(new ByteArrayContent(imageEditCreateRequest.Image), "image", imageEditCreateRequest.ImageName); + + if (imageEditCreateRequest.Image != null && imageEditCreateRequest.ImageName != null) + { + multipartContent.Add(new ByteArrayContent(imageEditCreateRequest.Image), "image", imageEditCreateRequest.ImageName); + } return await _httpClient.PostFileAndReadAsAsync(_endpointProvider.ImageEditCreate(), multipartContent, cancellationToken); } @@ -60,6 +66,7 @@ public async Task CreateImageEdit(ImageEditCreateRequest im /// Creates a variation of a given image. /// /// + /// /// public async Task CreateImageVariation(ImageVariationCreateRequest imageEditCreateRequest, CancellationToken cancellationToken = default) { @@ -84,8 +91,11 @@ public async Task CreateImageVariation(ImageVariationCreate multipartContent.Add(new StringContent(imageEditCreateRequest.N.ToString()!), "n"); } - multipartContent.Add(new ByteArrayContent(imageEditCreateRequest.Image), "image", imageEditCreateRequest.ImageName); + if (imageEditCreateRequest.Image != null && imageEditCreateRequest.ImageName != null) + { + multipartContent.Add(new ByteArrayContent(imageEditCreateRequest.Image), "image", imageEditCreateRequest.ImageName); + } return await _httpClient.PostFileAndReadAsAsync(_endpointProvider.ImageVariationCreate(), multipartContent, cancellationToken); } -} \ No newline at end of file +} diff --git a/OpenAI.SDK/ObjectModels/RequestModels/AudioCreateTranscriptionRequest.cs b/OpenAI.SDK/ObjectModels/RequestModels/AudioCreateTranscriptionRequest.cs index 494fb2f5..e00e41c1 100644 --- a/OpenAI.SDK/ObjectModels/RequestModels/AudioCreateTranscriptionRequest.cs +++ b/OpenAI.SDK/ObjectModels/RequestModels/AudioCreateTranscriptionRequest.cs @@ -25,22 +25,17 @@ public record AudioCreateTranscriptionRequest : IOpenAiModels.IModel, IOpenAiMod /// /// The audio file to transcribe, in one of these formats: mp3, mp4, mpeg, mpga, m4a, wav, or webm. /// - public byte[]? File { get; set; } - - /// - /// The stream of the audio file to transcribe, in one of these formats: mp3, mp4, mpeg, mpga, m4a, wav, or webm. - /// - public Stream? FileStream { get; set; } + public byte[] File { get; set; } = Array.Empty(); /// /// FileName /// - public string FileName { get; set; } + public string? FileName { get; set; } = string.Empty; /// /// ID of the model to use. Only whisper-1 is currently available. /// - public string Model { get; set; } + public string? Model { get; set; } /// /// The sampling temperature, between 0 and 1. Higher values like 0.8 will make the output more random, while lower @@ -48,4 +43,4 @@ public record AudioCreateTranscriptionRequest : IOpenAiModels.IModel, IOpenAiMod /// automatically increase the temperature until certain thresholds are hit. /// public float? Temperature { get; set; } -} \ No newline at end of file +} diff --git a/OpenAI.SDK/ObjectModels/RequestModels/ChatCompletionCreateRequest.cs b/OpenAI.SDK/ObjectModels/RequestModels/ChatCompletionCreateRequest.cs index f8580f75..accc8a39 100644 --- a/OpenAI.SDK/ObjectModels/RequestModels/ChatCompletionCreateRequest.cs +++ b/OpenAI.SDK/ObjectModels/RequestModels/ChatCompletionCreateRequest.cs @@ -14,7 +14,7 @@ public class ChatCompletionCreateRequest : IModelValidate, IOpenAiModels.ITemper /// short as 1 message or fill many pages. /// [JsonPropertyName("messages")] - public IList Messages { get; set; } + public IList? Messages { get; set; } /// /// A list of functions the model may generate JSON inputs for. @@ -86,7 +86,7 @@ public IList? StopCalculated if (Stop != null) { - return new List {Stop}; + return new List { Stop }; } return StopAsList; diff --git a/OpenAI.SDK/ObjectModels/RequestModels/CompletionCreateRequest.cs b/OpenAI.SDK/ObjectModels/RequestModels/CompletionCreateRequest.cs index e33b3258..ae3cad94 100644 --- a/OpenAI.SDK/ObjectModels/RequestModels/CompletionCreateRequest.cs +++ b/OpenAI.SDK/ObjectModels/RequestModels/CompletionCreateRequest.cs @@ -41,7 +41,7 @@ public IList? PromptCalculated if (Prompt != null) { - return new List {Prompt}; + return new List { Prompt }; } @@ -125,7 +125,7 @@ public IList? StopCalculated if (Stop != null) { - return new List {Stop}; + return new List { Stop }; } return StopAsList; diff --git a/OpenAI.SDK/ObjectModels/RequestModels/EditCreateRequest.cs b/OpenAI.SDK/ObjectModels/RequestModels/EditCreateRequest.cs index c6371e87..8651a34e 100644 --- a/OpenAI.SDK/ObjectModels/RequestModels/EditCreateRequest.cs +++ b/OpenAI.SDK/ObjectModels/RequestModels/EditCreateRequest.cs @@ -22,7 +22,7 @@ public record EditCreateRequest : IModelValidate, IOpenAiModels.ITemperature, IO /// The instruction that tells the model how to edit the prompt. /// [JsonPropertyName("instruction")] - public string Instruction { get; set; } + public string? Instruction { get; set; } /// /// Defaults to 1 diff --git a/OpenAI.SDK/ObjectModels/RequestModels/EmbeddingCreateRequest.cs b/OpenAI.SDK/ObjectModels/RequestModels/EmbeddingCreateRequest.cs index 07e39444..a7069e44 100644 --- a/OpenAI.SDK/ObjectModels/RequestModels/EmbeddingCreateRequest.cs +++ b/OpenAI.SDK/ObjectModels/RequestModels/EmbeddingCreateRequest.cs @@ -44,7 +44,7 @@ public IList? InputCalculated if (Input != null) { - return new List {Input}; + return new List { Input }; } return InputAsList; diff --git a/OpenAI.SDK/ObjectModels/RequestModels/FineTuneCancelRequest.cs b/OpenAI.SDK/ObjectModels/RequestModels/FineTuneCancelRequest.cs index a1c96604..68fe689a 100644 --- a/OpenAI.SDK/ObjectModels/RequestModels/FineTuneCancelRequest.cs +++ b/OpenAI.SDK/ObjectModels/RequestModels/FineTuneCancelRequest.cs @@ -4,5 +4,5 @@ namespace OpenAI.ObjectModels.RequestModels; public record FineTuneCancelRequest { - [JsonPropertyName("fine_tune_id")] public string FineTuneId { get; set; } -} \ No newline at end of file + [JsonPropertyName("fine_tune_id")] public string? FineTuneId { get; set; } +} diff --git a/OpenAI.SDK/ObjectModels/RequestModels/FineTuneCreateRequest.cs b/OpenAI.SDK/ObjectModels/RequestModels/FineTuneCreateRequest.cs index c9f0ee89..92b77bf4 100644 --- a/OpenAI.SDK/ObjectModels/RequestModels/FineTuneCreateRequest.cs +++ b/OpenAI.SDK/ObjectModels/RequestModels/FineTuneCreateRequest.cs @@ -15,7 +15,7 @@ public record FineTuneCreateRequest : IOpenAiModels.IModel /// more details. /// [JsonPropertyName("training_file")] - public string TrainingFile { get; set; } + public string? TrainingFile { get; set; } /// /// The ID of an uploaded file that contains validation data. @@ -119,4 +119,4 @@ public record FineTuneCreateRequest : IOpenAiModels.IModel /// [JsonPropertyName("model")] public string? Model { get; set; } -} \ No newline at end of file +} diff --git a/OpenAI.SDK/ObjectModels/RequestModels/ImageCreateRequest.cs b/OpenAI.SDK/ObjectModels/RequestModels/ImageCreateRequest.cs index 8b5c7581..1a046af0 100644 --- a/OpenAI.SDK/ObjectModels/RequestModels/ImageCreateRequest.cs +++ b/OpenAI.SDK/ObjectModels/RequestModels/ImageCreateRequest.cs @@ -21,5 +21,5 @@ public ImageCreateRequest(string prompt) /// A text description of the desired image(s). The maximum length is 1000 characters. /// [JsonPropertyName("prompt")] - public string Prompt { get; set; } -} \ No newline at end of file + public string Prompt { get; set; } = string.Empty; +} diff --git a/OpenAI.SDK/ObjectModels/RequestModels/ImageEditCreateRequest.cs b/OpenAI.SDK/ObjectModels/RequestModels/ImageEditCreateRequest.cs index 1562c079..5404357b 100644 --- a/OpenAI.SDK/ObjectModels/RequestModels/ImageEditCreateRequest.cs +++ b/OpenAI.SDK/ObjectModels/RequestModels/ImageEditCreateRequest.cs @@ -5,12 +5,12 @@ public record ImageEditCreateRequest : ImageCreateRequest /// /// The image to edit. Must be a valid PNG file, less than 4MB, and square. /// - public byte[] Image { get; set; } + public byte[]? Image { get; set; } /// /// Image file name /// - public string ImageName { get; set; } + public string? ImageName { get; set; } /// /// An additional image whose fully transparent areas (e.g. where alpha is zero) indicate where image should be edited. @@ -22,4 +22,4 @@ public record ImageEditCreateRequest : ImageCreateRequest /// Mask file name /// public string? MaskName { get; set; } -} \ No newline at end of file +} diff --git a/OpenAI.SDK/ObjectModels/RequestModels/ImageVariationCreateRequest.cs b/OpenAI.SDK/ObjectModels/RequestModels/ImageVariationCreateRequest.cs index 7fec69ef..0f9888d5 100644 --- a/OpenAI.SDK/ObjectModels/RequestModels/ImageVariationCreateRequest.cs +++ b/OpenAI.SDK/ObjectModels/RequestModels/ImageVariationCreateRequest.cs @@ -7,10 +7,10 @@ public record ImageVariationCreateRequest : SharedImageRequestBaseModel /// /// The image to edit. Must be a valid PNG file, less than 4MB, and square. /// - public byte[] Image { get; set; } + public byte[]? Image { get; set; } /// /// Image file name /// - public string ImageName { get; set; } -} \ No newline at end of file + public string? ImageName { get; set; } +} diff --git a/OpenAI.SDK/ObjectModels/ResponseModels/AudioCreateTranscriptionResponse.cs b/OpenAI.SDK/ObjectModels/ResponseModels/AudioCreateTranscriptionResponse.cs index bf3f5cdf..c6598de7 100644 --- a/OpenAI.SDK/ObjectModels/ResponseModels/AudioCreateTranscriptionResponse.cs +++ b/OpenAI.SDK/ObjectModels/ResponseModels/AudioCreateTranscriptionResponse.cs @@ -4,15 +4,15 @@ namespace OpenAI.ObjectModels.ResponseModels; public record AudioCreateTranscriptionResponse : BaseResponse { - [JsonPropertyName("text")] public string Text { get; set; } + [JsonPropertyName("text")] public string? Text { get; set; } - [JsonPropertyName("task")] public string Task { get; set; } + [JsonPropertyName("task")] public string? Task { get; set; } - [JsonPropertyName("language")] public string Language { get; set; } + [JsonPropertyName("language")] public string? Language { get; set; } [JsonPropertyName("duration")] public float Duration { get; set; } - [JsonPropertyName("segments")] public List Segments { get; set; } + [JsonPropertyName("segments")] public List? Segments { get; set; } public class Segment { @@ -24,9 +24,9 @@ public class Segment [JsonPropertyName("end")] public float End { get; set; } - [JsonPropertyName("text")] public string Text { get; set; } + [JsonPropertyName("text")] public string? Text { get; set; } - [JsonPropertyName("tokens")] public List Tokens { get; set; } + [JsonPropertyName("tokens")] public List? Tokens { get; set; } [JsonPropertyName("temperature")] public float Temperature { get; set; } @@ -39,4 +39,4 @@ public class Segment [JsonPropertyName("transient")] public bool Transient { get; set; } } -} \ No newline at end of file +} diff --git a/OpenAI.SDK/ObjectModels/ResponseModels/ChatCompletionCreateResponse.cs b/OpenAI.SDK/ObjectModels/ResponseModels/ChatCompletionCreateResponse.cs index 0615826a..d8346336 100644 --- a/OpenAI.SDK/ObjectModels/ResponseModels/ChatCompletionCreateResponse.cs +++ b/OpenAI.SDK/ObjectModels/ResponseModels/ChatCompletionCreateResponse.cs @@ -5,13 +5,13 @@ namespace OpenAI.ObjectModels.ResponseModels; public record ChatCompletionCreateResponse : BaseResponse, IOpenAiModels.IId, IOpenAiModels.ICreatedAt { - [JsonPropertyName("model")] public string Model { get; set; } + [JsonPropertyName("model")] public string? Model { get; set; } - [JsonPropertyName("choices")] public List Choices { get; set; } + [JsonPropertyName("choices")] public List Choices { get; set; } = new(); - [JsonPropertyName("usage")] public UsageResponse Usage { get; set; } + [JsonPropertyName("usage")] public UsageResponse Usage { get; set; } = new(); [JsonPropertyName("created")] public int CreatedAt { get; set; } - [JsonPropertyName("id")] public string Id { get; set; } -} \ No newline at end of file + [JsonPropertyName("id")] public string Id { get; set; } = string.Empty; +} diff --git a/OpenAI.SDK/ObjectModels/ResponseModels/CompletionCreateResponse.cs b/OpenAI.SDK/ObjectModels/ResponseModels/CompletionCreateResponse.cs index fc7f3ad5..822bb746 100644 --- a/OpenAI.SDK/ObjectModels/ResponseModels/CompletionCreateResponse.cs +++ b/OpenAI.SDK/ObjectModels/ResponseModels/CompletionCreateResponse.cs @@ -5,13 +5,13 @@ namespace OpenAI.ObjectModels.ResponseModels; public record CompletionCreateResponse : BaseResponse, IOpenAiModels.IId, IOpenAiModels.ICreatedAt { - [JsonPropertyName("model")] public string Model { get; set; } + [JsonPropertyName("model")] public string? Model { get; set; } - [JsonPropertyName("choices")] public List Choices { get; set; } + [JsonPropertyName("choices")] public List Choices { get; set; } = new(); - [JsonPropertyName("usage")] public UsageResponse Usage { get; set; } + [JsonPropertyName("usage")] public UsageResponse? Usage { get; set; } [JsonPropertyName("created")] public int CreatedAt { get; set; } - [JsonPropertyName("id")] public string Id { get; set; } -} \ No newline at end of file + [JsonPropertyName("id")] public string Id { get; set; } = string.Empty; +} diff --git a/OpenAI.SDK/ObjectModels/ResponseModels/CreateModerationResponse.cs b/OpenAI.SDK/ObjectModels/ResponseModels/CreateModerationResponse.cs index 3cbbd975..5c6af974 100644 --- a/OpenAI.SDK/ObjectModels/ResponseModels/CreateModerationResponse.cs +++ b/OpenAI.SDK/ObjectModels/ResponseModels/CreateModerationResponse.cs @@ -5,18 +5,18 @@ namespace OpenAI.ObjectModels.ResponseModels; public record CreateModerationResponse : BaseResponse, IOpenAiModels.IModel, IOpenAiModels.IId { - [JsonPropertyName("results")] public List Results { get; set; } + [JsonPropertyName("results")] public List Results { get; set; } = new(); - [JsonPropertyName("id")] public string Id { get; set; } + [JsonPropertyName("id")] public string Id { get; set; } = string.Empty; - [JsonPropertyName("model")] public string Model { get; set; } + [JsonPropertyName("model")] public string? Model { get; set; } } public record Result { - [JsonPropertyName("categories")] public Categories Categories { get; set; } + [JsonPropertyName("categories")] public Categories Categories { get; set; } = new(); - [JsonPropertyName("category_scores")] public CategoryScores CategoryScores { get; set; } + [JsonPropertyName("category_scores")] public CategoryScores CategoryScores { get; set; } = new(); [JsonPropertyName("flagged")] public bool Flagged { get; set; } } @@ -25,32 +25,32 @@ public record Categories { [JsonPropertyName("hate")] public bool Hate { get; set; } - [JsonPropertyName("hate/threatening")] public bool HateThreatening { get; set; } + [JsonPropertyName("hatethreatening")] public bool HateThreatening { get; set; } - [JsonPropertyName("self-harm")] public bool SelfHarm { get; set; } + [JsonPropertyName("selfharm")] public bool Selfharm { get; set; } [JsonPropertyName("sexual")] public bool Sexual { get; set; } - [JsonPropertyName("sexual/minors")] public bool SexualMinors { get; set; } + [JsonPropertyName("sexualminors")] public bool SexualMinors { get; set; } [JsonPropertyName("violence")] public bool Violence { get; set; } - [JsonPropertyName("violence/graphic")] public bool ViolenceGraphic { get; set; } + [JsonPropertyName("violencegraphic")] public bool Violencegraphic { get; set; } } public record CategoryScores { [JsonPropertyName("hate")] public float Hate { get; set; } - [JsonPropertyName("hate/threatening")] public float HateThreatening { get; set; } + [JsonPropertyName("hatethreatening")] public float HateThreatening { get; set; } - [JsonPropertyName("self-harm")] public float SelfHarm { get; set; } + [JsonPropertyName("selfharm")] public float Selfharm { get; set; } [JsonPropertyName("sexual")] public float Sexual { get; set; } - [JsonPropertyName("sexual/minors")] public float SexualMinors { get; set; } + [JsonPropertyName("sexualminors")] public float SexualMinors { get; set; } [JsonPropertyName("violence")] public float Violence { get; set; } - [JsonPropertyName("violence/graphic")] public float ViolenceGraphic { get; set; } -} \ No newline at end of file + [JsonPropertyName("violencegraphic")] public float Violencegraphic { get; set; } +} diff --git a/OpenAI.SDK/ObjectModels/ResponseModels/EditCreateResponse.cs b/OpenAI.SDK/ObjectModels/ResponseModels/EditCreateResponse.cs index ae203906..0a41f26a 100644 --- a/OpenAI.SDK/ObjectModels/ResponseModels/EditCreateResponse.cs +++ b/OpenAI.SDK/ObjectModels/ResponseModels/EditCreateResponse.cs @@ -5,11 +5,11 @@ namespace OpenAI.ObjectModels.ResponseModels; public record EditCreateResponse : BaseResponse, IOpenAiModels.ICreatedAt { - [JsonPropertyName("model")] public string Model { get; set; } + [JsonPropertyName("model")] public string? Model { get; set; } - [JsonPropertyName("choices")] public List Choices { get; set; } + [JsonPropertyName("choices")] public List Choices { get; set; } = new(); - [JsonPropertyName("usage")] public UsageResponse Usage { get; set; } + [JsonPropertyName("usage")] public UsageResponse? Usage { get; set; } [JsonPropertyName("created")] public int CreatedAt { get; set; } -} \ No newline at end of file +} diff --git a/OpenAI.SDK/ObjectModels/ResponseModels/EmbeddingCreateResponse.cs b/OpenAI.SDK/ObjectModels/ResponseModels/EmbeddingCreateResponse.cs index 4e8b0c30..e9d9aa47 100644 --- a/OpenAI.SDK/ObjectModels/ResponseModels/EmbeddingCreateResponse.cs +++ b/OpenAI.SDK/ObjectModels/ResponseModels/EmbeddingCreateResponse.cs @@ -4,16 +4,16 @@ namespace OpenAI.ObjectModels.ResponseModels; public record EmbeddingCreateResponse : BaseResponse { - [JsonPropertyName("model")] public string Model { get; set; } + [JsonPropertyName("model")] public string? Model { get; set; } - [JsonPropertyName("data")] public List Data { get; set; } + [JsonPropertyName("data")] public List Data { get; set; } = new(); - [JsonPropertyName("usage")] public UsageResponse Usage { get; set; } + [JsonPropertyName("usage")] public UsageResponse? Usage { get; set; } } public record EmbeddingResponse { [JsonPropertyName("index")] public int? Index { get; set; } - [JsonPropertyName("embedding")] public List Embedding { get; set; } -} \ No newline at end of file + [JsonPropertyName("embedding")] public List? Embedding { get; set; } +} diff --git a/OpenAI.SDK/ObjectModels/ResponseModels/FileResponseModels/FileDeleteResponse.cs b/OpenAI.SDK/ObjectModels/ResponseModels/FileResponseModels/FileDeleteResponse.cs index 6f167448..570e1f8f 100644 --- a/OpenAI.SDK/ObjectModels/ResponseModels/FileResponseModels/FileDeleteResponse.cs +++ b/OpenAI.SDK/ObjectModels/ResponseModels/FileResponseModels/FileDeleteResponse.cs @@ -6,5 +6,5 @@ namespace OpenAI.ObjectModels.ResponseModels.FileResponseModels; public record FileDeleteResponse : BaseResponse, IOpenAiModels.IId { [JsonPropertyName("deleted")] public bool Deleted { get; set; } - [JsonPropertyName("id")] public string Id { get; set; } -} \ No newline at end of file + [JsonPropertyName("id")] public string Id { get; set; } = string.Empty; +} diff --git a/OpenAI.SDK/ObjectModels/ResponseModels/FileResponseModels/FileListResponse.cs b/OpenAI.SDK/ObjectModels/ResponseModels/FileResponseModels/FileListResponse.cs index 7f9f3f7f..5cc41ad1 100644 --- a/OpenAI.SDK/ObjectModels/ResponseModels/FileResponseModels/FileListResponse.cs +++ b/OpenAI.SDK/ObjectModels/ResponseModels/FileResponseModels/FileListResponse.cs @@ -5,5 +5,5 @@ namespace OpenAI.ObjectModels.ResponseModels.FileResponseModels; public record FileListResponse : BaseResponse { - [JsonPropertyName("data")] public List Data { get; set; } -} \ No newline at end of file + [JsonPropertyName("data")] public List Data { get; set; } = new(); +} diff --git a/OpenAI.SDK/ObjectModels/ResponseModels/FileResponseModels/FileUploadResponse.cs b/OpenAI.SDK/ObjectModels/ResponseModels/FileResponseModels/FileUploadResponse.cs index 711d1219..385f2e5c 100644 --- a/OpenAI.SDK/ObjectModels/ResponseModels/FileResponseModels/FileUploadResponse.cs +++ b/OpenAI.SDK/ObjectModels/ResponseModels/FileResponseModels/FileUploadResponse.cs @@ -5,13 +5,13 @@ namespace OpenAI.ObjectModels.ResponseModels.FileResponseModels; public record FileUploadResponse : BaseResponse, IOpenAiModels.ICreatedAt { - [JsonPropertyName("id")] public string Id { get; set; } + [JsonPropertyName("id")] public string Id { get; set; } = string.Empty; [JsonPropertyName("bytes")] public int Bytes { get; set; } - [JsonPropertyName("filename")] public string FileName { get; set; } + [JsonPropertyName("filename")] public string? FileName { get; set; } - [JsonPropertyName("purpose")] public string Purpose { get; set; } + [JsonPropertyName("purpose")] public string? Purpose { get; set; } [JsonPropertyName("created_at")] public int CreatedAt { get; set; } -} \ No newline at end of file +} diff --git a/OpenAI.SDK/ObjectModels/ResponseModels/FineTuneResponseModels/FineTuneListEventsResponse.cs b/OpenAI.SDK/ObjectModels/ResponseModels/FineTuneResponseModels/FineTuneListEventsResponse.cs index e3b07536..838acf74 100644 --- a/OpenAI.SDK/ObjectModels/ResponseModels/FineTuneResponseModels/FineTuneListEventsResponse.cs +++ b/OpenAI.SDK/ObjectModels/ResponseModels/FineTuneResponseModels/FineTuneListEventsResponse.cs @@ -5,5 +5,5 @@ namespace OpenAI.ObjectModels.ResponseModels.FineTuneResponseModels; public record FineTuneListEventsResponse : BaseResponse { - [JsonPropertyName("data")] public List Data { get; set; } -} \ No newline at end of file + [JsonPropertyName("data")] public List Data { get; set; } = new(); +} diff --git a/OpenAI.SDK/ObjectModels/ResponseModels/FineTuneResponseModels/FineTuneListResponse.cs b/OpenAI.SDK/ObjectModels/ResponseModels/FineTuneResponseModels/FineTuneListResponse.cs index c580c65b..c2d317b9 100644 --- a/OpenAI.SDK/ObjectModels/ResponseModels/FineTuneResponseModels/FineTuneListResponse.cs +++ b/OpenAI.SDK/ObjectModels/ResponseModels/FineTuneResponseModels/FineTuneListResponse.cs @@ -4,5 +4,5 @@ namespace OpenAI.ObjectModels.ResponseModels.FineTuneResponseModels; public record FineTuneListResponse : BaseResponse { - [JsonPropertyName("data")] public List Data { get; set; } -} \ No newline at end of file + [JsonPropertyName("data")] public List Data { get; set; } = new(); +} diff --git a/OpenAI.SDK/ObjectModels/ResponseModels/FineTuneResponseModels/FineTuneResponse.cs b/OpenAI.SDK/ObjectModels/ResponseModels/FineTuneResponseModels/FineTuneResponse.cs index ad50a3fc..87043ffe 100644 --- a/OpenAI.SDK/ObjectModels/ResponseModels/FineTuneResponseModels/FineTuneResponse.cs +++ b/OpenAI.SDK/ObjectModels/ResponseModels/FineTuneResponseModels/FineTuneResponse.cs @@ -5,26 +5,26 @@ namespace OpenAI.ObjectModels.ResponseModels.FineTuneResponseModels; public record FineTuneResponse : BaseResponse, IOpenAiModels.IId, IOpenAiModels.IModel, IOpenAiModels.ICreatedAt { - [JsonPropertyName("events")] public List Events { get; set; } + [JsonPropertyName("events")] public List? Events { get; set; } - [JsonPropertyName("fine_tuned_model")] public string FineTunedModel { get; set; } + [JsonPropertyName("fine_tuned_model")] public string? FineTunedModel { get; set; } - [JsonPropertyName("hyperparams")] public HyperParametersResponse HyperParams { get; set; } + [JsonPropertyName("hyperparams")] public HyperParametersResponse? HyperParams { get; set; } - [JsonPropertyName("organization_id")] public string OrganizationId { get; set; } + [JsonPropertyName("organization_id")] public string? OrganizationId { get; set; } - [JsonPropertyName("result_files")] public List ResultFiles { get; set; } + [JsonPropertyName("result_files")] public List? ResultFiles { get; set; } - [JsonPropertyName("status")] public string Status { get; set; } + [JsonPropertyName("status")] public string Status { get; set; } = string.Empty; - [JsonPropertyName("validation_files")] public List ValidationFiles { get; set; } + [JsonPropertyName("validation_files")] public List? ValidationFiles { get; set; } - [JsonPropertyName("training_files")] public List TrainingFiles { get; set; } + [JsonPropertyName("training_files")] public List? TrainingFiles { get; set; } [JsonPropertyName("updated_at")] public int? UpdatedAt { get; set; } [JsonPropertyName("created_at")] public int CreatedAt { get; set; } - [JsonPropertyName("id")] public string Id { get; set; } + [JsonPropertyName("id")] public string Id { get; set; } = string.Empty; - [JsonPropertyName("model")] public string Model { get; set; } -} \ No newline at end of file + [JsonPropertyName("model")] public string? Model { get; set; } +} diff --git a/OpenAI.SDK/ObjectModels/ResponseModels/ImageResponseModel/ImageCreateResponse.cs b/OpenAI.SDK/ObjectModels/ResponseModels/ImageResponseModel/ImageCreateResponse.cs index e3a4db2a..c44d47a8 100644 --- a/OpenAI.SDK/ObjectModels/ResponseModels/ImageResponseModel/ImageCreateResponse.cs +++ b/OpenAI.SDK/ObjectModels/ResponseModels/ImageResponseModel/ImageCreateResponse.cs @@ -5,13 +5,13 @@ namespace OpenAI.ObjectModels.ResponseModels.ImageResponseModel; public record ImageCreateResponse : BaseResponse, IOpenAiModels.ICreatedAt { - [JsonPropertyName("data")] public List Results { get; set; } + [JsonPropertyName("data")] public List Results { get; set; } = new(); [JsonPropertyName("created")] public int CreatedAt { get; set; } public record ImageDataResult { - [JsonPropertyName("url")] public string Url { get; set; } - [JsonPropertyName("b64_json")] public string B64 { get; set; } + [JsonPropertyName("url")] public string? Url { get; set; } + [JsonPropertyName("b64_json")] public string? B64 { get; set; } } -} \ No newline at end of file +} diff --git a/OpenAI.SDK/ObjectModels/ResponseModels/ModelResponseModels/ModelListResponse.cs b/OpenAI.SDK/ObjectModels/ResponseModels/ModelResponseModels/ModelListResponse.cs index c0edd2ae..b750e3fd 100644 --- a/OpenAI.SDK/ObjectModels/ResponseModels/ModelResponseModels/ModelListResponse.cs +++ b/OpenAI.SDK/ObjectModels/ResponseModels/ModelResponseModels/ModelListResponse.cs @@ -4,5 +4,5 @@ namespace OpenAI.ObjectModels.ResponseModels.ModelResponseModels; public record ModelListResponse : BaseResponse { - [JsonPropertyName("data")] public List Models { get; set; } -} \ No newline at end of file + [JsonPropertyName("data")] public List Models { get; set; } = new(); +} diff --git a/OpenAI.SDK/ObjectModels/ResponseModels/ModelResponseModels/ModelRetrieveResponse.cs b/OpenAI.SDK/ObjectModels/ResponseModels/ModelResponseModels/ModelRetrieveResponse.cs index b53114ba..6d74b977 100644 --- a/OpenAI.SDK/ObjectModels/ResponseModels/ModelResponseModels/ModelRetrieveResponse.cs +++ b/OpenAI.SDK/ObjectModels/ResponseModels/ModelResponseModels/ModelRetrieveResponse.cs @@ -3,15 +3,15 @@ namespace OpenAI.ObjectModels.ResponseModels.ModelResponseModels; public record ModelRetrieveResponse : ModelResponse - // ReSharper disable once RedundantRecordBody +// ReSharper disable once RedundantRecordBody { } public record ModelResponse : BaseResponse { - [JsonPropertyName("id")] public string Id { get; set; } + [JsonPropertyName("id")] public string Id { get; set; } = string.Empty; - [JsonPropertyName("owned_by")] public string Owner { get; set; } + [JsonPropertyName("owned_by")] public string? Owner { get; set; } [JsonPropertyName("permission")] public List Permissions { get; set; } = new(); @@ -26,7 +26,7 @@ public record ModelResponse : BaseResponse public record Permission : BaseResponse { - [JsonPropertyName("id")] public string Id { get; set; } + [JsonPropertyName("id")] public string Id { get; set; } = string.Empty; [JsonPropertyName("created")] public int Created { get; set; } public DateTimeOffset CreatedTime => DateTimeOffset.FromUnixTimeSeconds(Created); @@ -46,9 +46,9 @@ public record Permission : BaseResponse [JsonPropertyName("allow_fine_tuning")] public bool AllowFineTuning { get; set; } - [JsonPropertyName("organization")] public string Organization { get; set; } + [JsonPropertyName("organization")] public string? Organization { get; set; } - [JsonPropertyName("group")] public object Group { get; set; } + [JsonPropertyName("group")] public object? Group { get; set; } [JsonPropertyName("is_blocking")] public bool IsBlocking { get; set; } -} \ No newline at end of file +} diff --git a/OpenAI.SDK/ObjectModels/SharedModels/ChatChoiceResponse.cs b/OpenAI.SDK/ObjectModels/SharedModels/ChatChoiceResponse.cs index 441d51b5..da6c9575 100644 --- a/OpenAI.SDK/ObjectModels/SharedModels/ChatChoiceResponse.cs +++ b/OpenAI.SDK/ObjectModels/SharedModels/ChatChoiceResponse.cs @@ -6,15 +6,15 @@ namespace OpenAI.ObjectModels.SharedModels; public record ChatChoiceResponse { [JsonPropertyName("delta")] - public ChatMessage Delta + public ChatMessage? Delta { get => Message; set => Message = value; } - [JsonPropertyName("message")] public ChatMessage Message { get; set; } + [JsonPropertyName("message")] public ChatMessage? Message { get; set; } [JsonPropertyName("index")] public int? Index { get; set; } - [JsonPropertyName("finish_reason")] public string FinishReason { get; set; } -} \ No newline at end of file + [JsonPropertyName("finish_reason")] public string? FinishReason { get; set; } +} diff --git a/OpenAI.SDK/ObjectModels/SharedModels/ChoiceResponse.cs b/OpenAI.SDK/ObjectModels/SharedModels/ChoiceResponse.cs index 4a2548ae..311ffd1f 100644 --- a/OpenAI.SDK/ObjectModels/SharedModels/ChoiceResponse.cs +++ b/OpenAI.SDK/ObjectModels/SharedModels/ChoiceResponse.cs @@ -4,11 +4,11 @@ namespace OpenAI.ObjectModels.SharedModels; public record ChoiceResponse : IOpenAiModels.ILogProbsResponse { - [JsonPropertyName("text")] public string Text { get; set; } + [JsonPropertyName("text")] public string Text { get; set; } = string.Empty; [JsonPropertyName("index")] public int? Index { get; set; } - [JsonPropertyName("finish_reason")] public string FinishReason { get; set; } + [JsonPropertyName("finish_reason")] public string? FinishReason { get; set; } - [JsonPropertyName("logprobs")] public LogProbsResponse LogProbs { get; set; } -} \ No newline at end of file + [JsonPropertyName("logprobs")] public LogProbsResponse? LogProbs { get; set; } +} diff --git a/OpenAI.SDK/ObjectModels/SharedModels/EventResponse.cs b/OpenAI.SDK/ObjectModels/SharedModels/EventResponse.cs index a6e1bbf4..19d8a8e2 100644 --- a/OpenAI.SDK/ObjectModels/SharedModels/EventResponse.cs +++ b/OpenAI.SDK/ObjectModels/SharedModels/EventResponse.cs @@ -4,11 +4,11 @@ namespace OpenAI.ObjectModels.SharedModels; public record EventResponse { - [JsonPropertyName("object")] public string Object { get; set; } + [JsonPropertyName("object")] public string? Object { get; set; } [JsonPropertyName("created_at")] public int? CreatedAt { get; set; } - [JsonPropertyName("level")] public string Level { get; set; } + [JsonPropertyName("level")] public string? Level { get; set; } - [JsonPropertyName("message")] public string Message { get; set; } -} \ No newline at end of file + [JsonPropertyName("message")] public string? Message { get; set; } +} diff --git a/OpenAI.SDK/ObjectModels/SharedModels/FileResponse.cs b/OpenAI.SDK/ObjectModels/SharedModels/FileResponse.cs index 6da91bcf..a46dadf4 100644 --- a/OpenAI.SDK/ObjectModels/SharedModels/FileResponse.cs +++ b/OpenAI.SDK/ObjectModels/SharedModels/FileResponse.cs @@ -6,10 +6,10 @@ namespace OpenAI.ObjectModels.SharedModels; public record FileResponse : BaseResponse, IOpenAiModels.IId, IOpenAiModels.ICreatedAt { [JsonPropertyName("bytes")] public int? Bytes { get; set; } - [JsonPropertyName("filename")] public string FileName { get; set; } + [JsonPropertyName("filename")] public string FileName { get; set; } = null!; public UploadFilePurposes.UploadFilePurpose PurposeEnum => UploadFilePurposes.ToEnum(Purpose); - [JsonPropertyName("purpose")] public string Purpose { get; set; } - [JsonPropertyName("status")] public string Status { get; set; } + [JsonPropertyName("purpose")] public string Purpose { get; set; } = string.Empty; + [JsonPropertyName("status")] public string? Status { get; set; } [JsonPropertyName("created_at")] public int CreatedAt { get; set; } - [JsonPropertyName("id")] public string Id { get; set; } -} \ No newline at end of file + [JsonPropertyName("id")] public string Id { get; set; } = string.Empty; +} diff --git a/OpenAI.SDK/ObjectModels/SharedModels/IOpenAiModels.cs b/OpenAI.SDK/ObjectModels/SharedModels/IOpenAiModels.cs index 47a5ac05..30b5aa8a 100644 --- a/OpenAI.SDK/ObjectModels/SharedModels/IOpenAiModels.cs +++ b/OpenAI.SDK/ObjectModels/SharedModels/IOpenAiModels.cs @@ -19,7 +19,7 @@ public interface ILogProbsRequest public interface ILogProbsResponse { - LogProbsResponse LogProbs { get; set; } + LogProbsResponse? LogProbs { get; set; } } public interface ITemperature @@ -34,13 +34,12 @@ public interface ICreatedAt public interface IUser { - public string User { get; set; } + public string? User { get; set; } } public interface IFile { public byte[] File { get; set; } - public Stream FileStream { get; set; } - public string FileName { get; set; } + public string? FileName { get; set; } } -} \ No newline at end of file +} diff --git a/OpenAI.SDK/ObjectModels/SharedModels/LogProbsResponse.cs b/OpenAI.SDK/ObjectModels/SharedModels/LogProbsResponse.cs index cdea71e0..732e99f8 100644 --- a/OpenAI.SDK/ObjectModels/SharedModels/LogProbsResponse.cs +++ b/OpenAI.SDK/ObjectModels/SharedModels/LogProbsResponse.cs @@ -4,11 +4,11 @@ namespace OpenAI.ObjectModels.SharedModels; public record LogProbsResponse { - [JsonPropertyName("tokens")] public List Tokens { get; set; } + [JsonPropertyName("tokens")] public List? Tokens { get; set; } - [JsonPropertyName("token_logprobs")] public List TokenLogProbs { get; set; } + [JsonPropertyName("token_logprobs")] public List? TokenLogProbs { get; set; } - [JsonPropertyName("top_logprobs")] public List> TopLogProbsRaw { get; set; } + [JsonPropertyName("top_logprobs")] public List> TopLogProbsRaw { get; set; } = new(); public List TopLogProbs => TopLogProbsRaw.SelectMany(r => r.Select(a => new TopLogProbResponse { @@ -16,11 +16,11 @@ public record LogProbsResponse LogProp = a.Value })).ToList(); - [JsonPropertyName("text_offset")] public List TextOffset { get; set; } + [JsonPropertyName("text_offset")] public List? TextOffset { get; set; } } public class TopLogProbResponse { - public string Key { get; set; } + public string? Key { get; set; } public double LogProp { get; set; } -} \ No newline at end of file +}