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/Assistants/Assistant.Serialization.cs

369lines · modecode

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