openai/openai-dotnet

Public

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

CodeCommitsIssuesPull requestsActionsInsightsSecurity
mailinhphan/clientOptions

Branches

Tags

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

Clone

HTTPS

Download ZIP

OpenAI/src/Generated/Models/Assistants/Assistant.Serialization.cs

376lines · modecode

1// <auto-generated/>
2
3#nullable disable
4
5using System;
6using System.ClientModel;
7using System.ClientModel.Primitives;
8using System.Collections.Generic;
9using System.Text.Json;
10using OpenAI;
11
12namespace OpenAI.Assistants
13{
14 public partial class Assistant : IJsonModel<Assistant>
15 {
16 internal Assistant() : this(null, null, default, null, null, null, null, null, null, null, default, default, null, null)
17 {
18 }
19
20 protected virtual Assistant PersistableModelCreateCore(BinaryData data, ModelReaderWriterOptions options)
21 {
22 string format = options.Format == "W" ? ((IPersistableModel<Assistant>)this).GetFormatFromOptions(options) : options.Format;
23 switch (format)
24 {
25 case "J":
26 using (JsonDocument document = JsonDocument.Parse(data, ModelSerializationExtensions.JsonDocumentOptions))
27 {
28 return DeserializeAssistant(document.RootElement, options);
29 }
30 default:
31 throw new FormatException($"The model {nameof(Assistant)} does not support reading '{options.Format}' format.");
32 }
33 }
34
35 protected virtual BinaryData PersistableModelWriteCore(ModelReaderWriterOptions options)
36 {
37 string format = options.Format == "W" ? ((IPersistableModel<Assistant>)this).GetFormatFromOptions(options) : options.Format;
38 switch (format)
39 {
40 case "J":
41 return ModelReaderWriter.Write(this, options, OpenAIContext.Default);
42 default:
43 throw new FormatException($"The model {nameof(Assistant)} does not support writing '{options.Format}' format.");
44 }
45 }
46
47 BinaryData IPersistableModel<Assistant>.Write(ModelReaderWriterOptions options) => PersistableModelWriteCore(options);
48
49 Assistant IPersistableModel<Assistant>.Create(BinaryData data, ModelReaderWriterOptions options) => PersistableModelCreateCore(data, options);
50
51 string IPersistableModel<Assistant>.GetFormatFromOptions(ModelReaderWriterOptions options) => "J";
52
53 public static explicit operator Assistant(ClientResult result)
54 {
55 PipelineResponse response = result.GetRawResponse();
56 using JsonDocument document = JsonDocument.Parse(response.Content, ModelSerializationExtensions.JsonDocumentOptions);
57 return DeserializeAssistant(document.RootElement, ModelSerializationExtensions.WireOptions);
58 }
59
60 void IJsonModel<Assistant>.Write(Utf8JsonWriter writer, ModelReaderWriterOptions options)
61 {
62 writer.WriteStartObject();
63 JsonModelWriteCore(writer, options);
64 writer.WriteEndObject();
65 }
66
67 protected virtual void JsonModelWriteCore(Utf8JsonWriter writer, ModelReaderWriterOptions options)
68 {
69 string format = options.Format == "W" ? ((IPersistableModel<Assistant>)this).GetFormatFromOptions(options) : options.Format;
70 if (format != "J")
71 {
72 throw new FormatException($"The model {nameof(Assistant)} does not support writing '{format}' format.");
73 }
74 if (_additionalBinaryDataProperties?.ContainsKey("id") != true)
75 {
76 writer.WritePropertyName("id"u8);
77 writer.WriteStringValue(Id);
78 }
79 if (_additionalBinaryDataProperties?.ContainsKey("object") != true)
80 {
81 writer.WritePropertyName("object"u8);
82 writer.WriteStringValue(Object);
83 }
84 if (_additionalBinaryDataProperties?.ContainsKey("created_at") != true)
85 {
86 writer.WritePropertyName("created_at"u8);
87 writer.WriteNumberValue(CreatedAt, "U");
88 }
89 if (_additionalBinaryDataProperties?.ContainsKey("name") != true)
90 {
91 if (Optional.IsDefined(Name))
92 {
93 writer.WritePropertyName("name"u8);
94 writer.WriteStringValue(Name);
95 }
96 else
97 {
98 writer.WriteNull("name"u8);
99 }
100 }
101 if (_additionalBinaryDataProperties?.ContainsKey("description") != true)
102 {
103 if (Optional.IsDefined(Description))
104 {
105 writer.WritePropertyName("description"u8);
106 writer.WriteStringValue(Description);
107 }
108 else
109 {
110 writer.WriteNull("description"u8);
111 }
112 }
113 if (_additionalBinaryDataProperties?.ContainsKey("model") != true)
114 {
115 writer.WritePropertyName("model"u8);
116 writer.WriteStringValue(Model);
117 }
118 if (_additionalBinaryDataProperties?.ContainsKey("instructions") != true)
119 {
120 if (Optional.IsDefined(Instructions))
121 {
122 writer.WritePropertyName("instructions"u8);
123 writer.WriteStringValue(Instructions);
124 }
125 else
126 {
127 writer.WriteNull("instructions"u8);
128 }
129 }
130 // Plugin customization: remove options.Format != "W" check
131 if (_additionalBinaryDataProperties?.ContainsKey("tools") != true)
132 {
133 writer.WritePropertyName("tools"u8);
134 writer.WriteStartArray();
135 foreach (ToolDefinition item in Tools)
136 {
137 writer.WriteObjectValue(item, options);
138 }
139 writer.WriteEndArray();
140 }
141 if (Optional.IsDefined(ToolResources) && _additionalBinaryDataProperties?.ContainsKey("tool_resources") != true)
142 {
143 writer.WritePropertyName("tool_resources"u8);
144 writer.WriteObjectValue(ToolResources, options);
145 }
146 // Plugin customization: remove options.Format != "W" check
147 if (Optional.IsCollectionDefined(Metadata) && _additionalBinaryDataProperties?.ContainsKey("metadata") != true)
148 {
149 writer.WritePropertyName("metadata"u8);
150 writer.WriteStartObject();
151 foreach (var item in Metadata)
152 {
153 writer.WritePropertyName(item.Key);
154 if (item.Value == null)
155 {
156 writer.WriteNullValue();
157 continue;
158 }
159 writer.WriteStringValue(item.Value);
160 }
161 writer.WriteEndObject();
162 }
163 if (Optional.IsDefined(Temperature) && _additionalBinaryDataProperties?.ContainsKey("temperature") != true)
164 {
165 writer.WritePropertyName("temperature"u8);
166 writer.WriteNumberValue(Temperature.Value);
167 }
168 if (Optional.IsDefined(NucleusSamplingFactor) && _additionalBinaryDataProperties?.ContainsKey("top_p") != true)
169 {
170 writer.WritePropertyName("top_p"u8);
171 writer.WriteNumberValue(NucleusSamplingFactor.Value);
172 }
173 if (Optional.IsDefined(ResponseFormat) && _additionalBinaryDataProperties?.ContainsKey("response_format") != true)
174 {
175 writer.WritePropertyName("response_format"u8);
176 writer.WriteObjectValue(ResponseFormat, options);
177 }
178 // Plugin customization: remove options.Format != "W" check
179 if (_additionalBinaryDataProperties != null)
180 {
181 foreach (var item in _additionalBinaryDataProperties)
182 {
183 if (ModelSerializationExtensions.IsSentinelValue(item.Value))
184 {
185 continue;
186 }
187 writer.WritePropertyName(item.Key);
188#if NET6_0_OR_GREATER
189 writer.WriteRawValue(item.Value);
190#else
191 using (JsonDocument document = JsonDocument.Parse(item.Value))
192 {
193 JsonSerializer.Serialize(writer, document.RootElement);
194 }
195#endif
196 }
197 }
198 }
199
200 Assistant IJsonModel<Assistant>.Create(ref Utf8JsonReader reader, ModelReaderWriterOptions options) => JsonModelCreateCore(ref reader, options);
201
202 protected virtual Assistant JsonModelCreateCore(ref Utf8JsonReader reader, ModelReaderWriterOptions options)
203 {
204 string format = options.Format == "W" ? ((IPersistableModel<Assistant>)this).GetFormatFromOptions(options) : options.Format;
205 if (format != "J")
206 {
207 throw new FormatException($"The model {nameof(Assistant)} does not support reading '{format}' format.");
208 }
209 using JsonDocument document = JsonDocument.ParseValue(ref reader);
210 return DeserializeAssistant(document.RootElement, options);
211 }
212
213 internal static Assistant DeserializeAssistant(JsonElement element, ModelReaderWriterOptions options)
214 {
215 if (element.ValueKind == JsonValueKind.Null)
216 {
217 return null;
218 }
219 string id = default;
220 string @object = default;
221 DateTimeOffset createdAt = default;
222 string name = default;
223 string description = default;
224 string model = default;
225 string instructions = default;
226 IReadOnlyList<ToolDefinition> tools = default;
227 ToolResources toolResources = default;
228 IReadOnlyDictionary<string, string> metadata = default;
229 float? temperature = default;
230 float? nucleusSamplingFactor = default;
231 AssistantResponseFormat responseFormat = default;
232 IDictionary<string, BinaryData> additionalBinaryDataProperties = new ChangeTrackingDictionary<string, BinaryData>();
233 foreach (var prop in element.EnumerateObject())
234 {
235 if (prop.NameEquals("id"u8))
236 {
237 id = prop.Value.GetString();
238 continue;
239 }
240 if (prop.NameEquals("object"u8))
241 {
242 @object = prop.Value.GetString();
243 continue;
244 }
245 if (prop.NameEquals("created_at"u8))
246 {
247 createdAt = DateTimeOffset.FromUnixTimeSeconds(prop.Value.GetInt64());
248 continue;
249 }
250 if (prop.NameEquals("name"u8))
251 {
252 if (prop.Value.ValueKind == JsonValueKind.Null)
253 {
254 name = null;
255 continue;
256 }
257 name = prop.Value.GetString();
258 continue;
259 }
260 if (prop.NameEquals("description"u8))
261 {
262 if (prop.Value.ValueKind == JsonValueKind.Null)
263 {
264 description = null;
265 continue;
266 }
267 description = prop.Value.GetString();
268 continue;
269 }
270 if (prop.NameEquals("model"u8))
271 {
272 model = prop.Value.GetString();
273 continue;
274 }
275 if (prop.NameEquals("instructions"u8))
276 {
277 if (prop.Value.ValueKind == JsonValueKind.Null)
278 {
279 instructions = null;
280 continue;
281 }
282 instructions = prop.Value.GetString();
283 continue;
284 }
285 if (prop.NameEquals("tools"u8))
286 {
287 List<ToolDefinition> array = new List<ToolDefinition>();
288 foreach (var item in prop.Value.EnumerateArray())
289 {
290 array.Add(ToolDefinition.DeserializeToolDefinition(item, options));
291 }
292 tools = array;
293 continue;
294 }
295 if (prop.NameEquals("tool_resources"u8))
296 {
297 if (prop.Value.ValueKind == JsonValueKind.Null)
298 {
299 toolResources = null;
300 continue;
301 }
302 toolResources = ToolResources.DeserializeToolResources(prop.Value, options);
303 continue;
304 }
305 if (prop.NameEquals("metadata"u8))
306 {
307 if (prop.Value.ValueKind == JsonValueKind.Null)
308 {
309 continue;
310 }
311 Dictionary<string, string> dictionary = new Dictionary<string, string>();
312 foreach (var prop0 in prop.Value.EnumerateObject())
313 {
314 if (prop0.Value.ValueKind == JsonValueKind.Null)
315 {
316 dictionary.Add(prop0.Name, null);
317 }
318 else
319 {
320 dictionary.Add(prop0.Name, prop0.Value.GetString());
321 }
322 }
323 metadata = dictionary;
324 continue;
325 }
326 if (prop.NameEquals("temperature"u8))
327 {
328 if (prop.Value.ValueKind == JsonValueKind.Null)
329 {
330 temperature = null;
331 continue;
332 }
333 temperature = prop.Value.GetSingle();
334 continue;
335 }
336 if (prop.NameEquals("top_p"u8))
337 {
338 if (prop.Value.ValueKind == JsonValueKind.Null)
339 {
340 nucleusSamplingFactor = null;
341 continue;
342 }
343 nucleusSamplingFactor = prop.Value.GetSingle();
344 continue;
345 }
346 if (prop.NameEquals("response_format"u8))
347 {
348 if (prop.Value.ValueKind == JsonValueKind.Null)
349 {
350 responseFormat = null;
351 continue;
352 }
353 responseFormat = AssistantResponseFormat.DeserializeAssistantResponseFormat(prop.Value, options);
354 continue;
355 }
356 // Plugin customization: remove options.Format != "W" check
357 additionalBinaryDataProperties.Add(prop.Name, BinaryData.FromString(prop.Value.GetRawText()));
358 }
359 return new Assistant(
360 id,
361 @object,
362 createdAt,
363 name,
364 description,
365 model,
366 instructions,
367 tools,
368 toolResources,
369 metadata ?? new ChangeTrackingDictionary<string, string>(),
370 temperature,
371 nucleusSamplingFactor,
372 responseFormat,
373 additionalBinaryDataProperties);
374 }
375 }
376}
377