openai/openai-dotnet

Public

mirrored from https://github.com/openai/openai-dotnetAvailable

CodeCommitsIssuesPull requestsActionsInsightsSecurity
achandmsft-patch-2

Branches

Tags

  • No tags available.
0Branches0Tags
Go to file
Add file
Code

Clone

HTTPS

Download ZIP

src/Generated/Models/Audio/AudioTranscription.Serialization.cs

250lines · modecode

1// <auto-generated/>
2
3#nullable disable
4
5using System;
6using System.ClientModel.Primitives;
7using System.Collections.Generic;
8using System.Diagnostics.CodeAnalysis;
9using System.Text.Json;
10using OpenAI;
11
12namespace OpenAI.Audio
13{
14 public partial class AudioTranscription : IJsonModel<AudioTranscription>
15 {
16 internal AudioTranscription() : this(null, null, null, null, null, default, null, null)
17 {
18 }
19
20 void IJsonModel<AudioTranscription>.Write(Utf8JsonWriter writer, ModelReaderWriterOptions options)
21 {
22 writer.WriteStartObject();
23 JsonModelWriteCore(writer, options);
24 writer.WriteEndObject();
25 }
26
27 [Experimental("OPENAI001")]
28 protected virtual void JsonModelWriteCore(Utf8JsonWriter writer, ModelReaderWriterOptions options)
29 {
30 string format = options.Format == "W" ? ((IPersistableModel<AudioTranscription>)this).GetFormatFromOptions(options) : options.Format;
31 if (format != "J")
32 {
33 throw new FormatException($"The model {nameof(AudioTranscription)} does not support writing '{format}' format.");
34 }
35 if (_additionalBinaryDataProperties?.ContainsKey("language") != true)
36 {
37 writer.WritePropertyName("language"u8);
38 writer.WriteStringValue(Language);
39 }
40 if (_additionalBinaryDataProperties?.ContainsKey("text") != true)
41 {
42 writer.WritePropertyName("text"u8);
43 writer.WriteStringValue(Text);
44 }
45 // Plugin customization: remove options.Format != "W" check
46 if (Optional.IsCollectionDefined(Words) && _additionalBinaryDataProperties?.ContainsKey("words") != true)
47 {
48 writer.WritePropertyName("words"u8);
49 writer.WriteStartArray();
50 foreach (TranscribedWord item in Words)
51 {
52 writer.WriteObjectValue(item, options);
53 }
54 writer.WriteEndArray();
55 }
56 // Plugin customization: remove options.Format != "W" check
57 if (Optional.IsCollectionDefined(Segments) && _additionalBinaryDataProperties?.ContainsKey("segments") != true)
58 {
59 writer.WritePropertyName("segments"u8);
60 writer.WriteStartArray();
61 foreach (TranscribedSegment item in Segments)
62 {
63 writer.WriteObjectValue(item, options);
64 }
65 writer.WriteEndArray();
66 }
67 if (_additionalBinaryDataProperties?.ContainsKey("task") != true)
68 {
69 writer.WritePropertyName("task"u8);
70 writer.WriteStringValue(Task);
71 }
72 if (_additionalBinaryDataProperties?.ContainsKey("duration") != true)
73 {
74 writer.WritePropertyName("duration"u8);
75 writer.WriteNumberValue(Convert.ToDouble(Duration.Value.ToString("s\\.FFF")));
76 }
77 if (Optional.IsCollectionDefined(TranscriptionTokenLogProbabilities) && _additionalBinaryDataProperties?.ContainsKey("logprobs") != true)
78 {
79 writer.WritePropertyName("logprobs"u8);
80 writer.WriteStartArray();
81 foreach (AudioTokenLogProbabilityDetails item in TranscriptionTokenLogProbabilities)
82 {
83 writer.WriteObjectValue(item, options);
84 }
85 writer.WriteEndArray();
86 }
87 // Plugin customization: remove options.Format != "W" check
88 if (_additionalBinaryDataProperties != null)
89 {
90 foreach (var item in _additionalBinaryDataProperties)
91 {
92 if (ModelSerializationExtensions.IsSentinelValue(item.Value))
93 {
94 continue;
95 }
96 writer.WritePropertyName(item.Key);
97#if NET6_0_OR_GREATER
98 writer.WriteRawValue(item.Value);
99#else
100 using (JsonDocument document = JsonDocument.Parse(item.Value))
101 {
102 JsonSerializer.Serialize(writer, document.RootElement);
103 }
104#endif
105 }
106 }
107 }
108
109 AudioTranscription IJsonModel<AudioTranscription>.Create(ref Utf8JsonReader reader, ModelReaderWriterOptions options) => JsonModelCreateCore(ref reader, options);
110
111 [Experimental("OPENAI001")]
112 protected virtual AudioTranscription JsonModelCreateCore(ref Utf8JsonReader reader, ModelReaderWriterOptions options)
113 {
114 string format = options.Format == "W" ? ((IPersistableModel<AudioTranscription>)this).GetFormatFromOptions(options) : options.Format;
115 if (format != "J")
116 {
117 throw new FormatException($"The model {nameof(AudioTranscription)} does not support reading '{format}' format.");
118 }
119 using JsonDocument document = JsonDocument.ParseValue(ref reader);
120 return DeserializeAudioTranscription(document.RootElement, options);
121 }
122
123 internal static AudioTranscription DeserializeAudioTranscription(JsonElement element, ModelReaderWriterOptions options)
124 {
125 if (element.ValueKind == JsonValueKind.Null)
126 {
127 return null;
128 }
129 string language = default;
130 string text = default;
131 IReadOnlyList<TranscribedWord> words = default;
132 IReadOnlyList<TranscribedSegment> segments = default;
133 string task = default;
134 TimeSpan? duration = default;
135 IReadOnlyList<AudioTokenLogProbabilityDetails> transcriptionTokenLogProbabilities = default;
136 IDictionary<string, BinaryData> additionalBinaryDataProperties = new ChangeTrackingDictionary<string, BinaryData>();
137 foreach (var prop in element.EnumerateObject())
138 {
139 if (prop.NameEquals("language"u8))
140 {
141 language = prop.Value.GetString();
142 continue;
143 }
144 if (prop.NameEquals("text"u8))
145 {
146 text = prop.Value.GetString();
147 continue;
148 }
149 if (prop.NameEquals("words"u8))
150 {
151 if (prop.Value.ValueKind == JsonValueKind.Null)
152 {
153 continue;
154 }
155 List<TranscribedWord> array = new List<TranscribedWord>();
156 foreach (var item in prop.Value.EnumerateArray())
157 {
158 array.Add(TranscribedWord.DeserializeTranscribedWord(item, options));
159 }
160 words = array;
161 continue;
162 }
163 if (prop.NameEquals("segments"u8))
164 {
165 if (prop.Value.ValueKind == JsonValueKind.Null)
166 {
167 continue;
168 }
169 List<TranscribedSegment> array = new List<TranscribedSegment>();
170 foreach (var item in prop.Value.EnumerateArray())
171 {
172 array.Add(TranscribedSegment.DeserializeTranscribedSegment(item, options));
173 }
174 segments = array;
175 continue;
176 }
177 if (prop.NameEquals("task"u8))
178 {
179 task = prop.Value.GetString();
180 continue;
181 }
182 if (prop.NameEquals("duration"u8))
183 {
184 duration = TimeSpan.FromSeconds(prop.Value.GetDouble());
185 continue;
186 }
187 if (prop.NameEquals("logprobs"u8))
188 {
189 if (prop.Value.ValueKind == JsonValueKind.Null)
190 {
191 continue;
192 }
193 List<AudioTokenLogProbabilityDetails> array = new List<AudioTokenLogProbabilityDetails>();
194 foreach (var item in prop.Value.EnumerateArray())
195 {
196 array.Add(AudioTokenLogProbabilityDetails.DeserializeAudioTokenLogProbabilityDetails(item, options));
197 }
198 transcriptionTokenLogProbabilities = array;
199 continue;
200 }
201 // Plugin customization: remove options.Format != "W" check
202 additionalBinaryDataProperties.Add(prop.Name, BinaryData.FromString(prop.Value.GetRawText()));
203 }
204 return new AudioTranscription(
205 language,
206 text,
207 words ?? new ChangeTrackingList<TranscribedWord>(),
208 segments ?? new ChangeTrackingList<TranscribedSegment>(),
209 task,
210 duration,
211 transcriptionTokenLogProbabilities ?? new ChangeTrackingList<AudioTokenLogProbabilityDetails>(),
212 additionalBinaryDataProperties);
213 }
214
215 BinaryData IPersistableModel<AudioTranscription>.Write(ModelReaderWriterOptions options) => PersistableModelWriteCore(options);
216
217 [Experimental("OPENAI001")]
218 protected virtual BinaryData PersistableModelWriteCore(ModelReaderWriterOptions options)
219 {
220 string format = options.Format == "W" ? ((IPersistableModel<AudioTranscription>)this).GetFormatFromOptions(options) : options.Format;
221 switch (format)
222 {
223 case "J":
224 return ModelReaderWriter.Write(this, options, OpenAIContext.Default);
225 default:
226 throw new FormatException($"The model {nameof(AudioTranscription)} does not support writing '{options.Format}' format.");
227 }
228 }
229
230 AudioTranscription IPersistableModel<AudioTranscription>.Create(BinaryData data, ModelReaderWriterOptions options) => PersistableModelCreateCore(data, options);
231
232 [Experimental("OPENAI001")]
233 protected virtual AudioTranscription PersistableModelCreateCore(BinaryData data, ModelReaderWriterOptions options)
234 {
235 string format = options.Format == "W" ? ((IPersistableModel<AudioTranscription>)this).GetFormatFromOptions(options) : options.Format;
236 switch (format)
237 {
238 case "J":
239 using (JsonDocument document = JsonDocument.Parse(data))
240 {
241 return DeserializeAudioTranscription(document.RootElement, options);
242 }
243 default:
244 throw new FormatException($"The model {nameof(AudioTranscription)} does not support reading '{options.Format}' format.");
245 }
246 }
247
248 string IPersistableModel<AudioTranscription>.GetFormatFromOptions(ModelReaderWriterOptions options) => "J";
249 }
250}
251