openai/openai-dotnet

Public

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

CodeCommitsIssuesPull requestsActionsInsightsSecurity
OpenAI_2.2.0

Branches

Tags

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

Clone

HTTPS

Download ZIP

src/Custom/Embeddings/OpenAIEmbeddingCollection.Serialization.cs

87lines · modeblame

58f93c8dShivangiReja2 years ago1using System;
9f9f2936Jose Arriaga Maldonado2 years ago2using System.ClientModel.Primitives;
3using System.Collections.Generic;
4using System.Text.Json;
5
6namespace OpenAI.Embeddings;
7
19ceae44ShivangiReja1 years ago8[CodeGenSuppress("global::System.ClientModel.Primitives.IJsonModel<OpenAI.Embeddings.OpenAIEmbeddingCollection>.Write", typeof(Utf8JsonWriter), typeof(ModelReaderWriterOptions))]
9public partial class OpenAIEmbeddingCollection : IJsonModel<OpenAIEmbeddingCollection>
9f9f2936Jose Arriaga Maldonado2 years ago10{
11// CUSTOM:
12// - Serialized the Items property.
19fc7d54Jose Arriaga Maldonado2 years ago13// - Recovered the deserialization of SerializedAdditionalRawData. See https://github.com/Azure/autorest.csharp/issues/4636.
19ceae44ShivangiReja1 years ago14void IJsonModel<OpenAIEmbeddingCollection>.Write(Utf8JsonWriter writer, ModelReaderWriterOptions options)
15=> CustomSerializationHelpers.SerializeInstance(this, SerializeOpenAIEmbeddingCollection, writer, options);
9f9f2936Jose Arriaga Maldonado2 years ago16
19ceae44ShivangiReja1 years ago17internal static void SerializeOpenAIEmbeddingCollection(OpenAIEmbeddingCollection instance, Utf8JsonWriter writer, ModelReaderWriterOptions options)
9f9f2936Jose Arriaga Maldonado2 years ago18{
19writer.WriteStartObject();
20writer.WritePropertyName("data"u8);
21writer.WriteStartArray();
22foreach (var item in instance.Items)
23{
19ceae44ShivangiReja1 years ago24writer.WriteObjectValue<OpenAIEmbedding>(item, options);
9f9f2936Jose Arriaga Maldonado2 years ago25}
26writer.WriteEndArray();
27writer.WritePropertyName("model"u8);
28writer.WriteStringValue(instance.Model);
29writer.WritePropertyName("object"u8);
30writer.WriteStringValue(instance.Object.ToString());
31writer.WritePropertyName("usage"u8);
32writer.WriteObjectValue<EmbeddingTokenUsage>(instance.Usage, options);
0ca4c062Jose Arriaga Maldonado1 years ago33writer.WriteSerializedAdditionalRawData(instance._additionalBinaryDataProperties, options);
9f9f2936Jose Arriaga Maldonado2 years ago34writer.WriteEndObject();
35}
36
19fc7d54Jose Arriaga Maldonado2 years ago37// CUSTOM: Recovered the deserialization of SerializedAdditionalRawData. See https://github.com/Azure/autorest.csharp/issues/4636.
19ceae44ShivangiReja1 years ago38internal static OpenAIEmbeddingCollection DeserializeOpenAIEmbeddingCollection(JsonElement element, ModelReaderWriterOptions options = null)
9f9f2936Jose Arriaga Maldonado2 years ago39{
40options ??= new ModelReaderWriterOptions("W");
41
42if (element.ValueKind == JsonValueKind.Null)
43{
44return null;
45}
19ceae44ShivangiReja1 years ago46IReadOnlyList<OpenAIEmbedding> data = default;
9f9f2936Jose Arriaga Maldonado2 years ago47string model = default;
5dce104aJose Arriaga Maldonado1 years ago48string @object = default;
9f9f2936Jose Arriaga Maldonado2 years ago49EmbeddingTokenUsage usage = default;
50IDictionary<string, BinaryData> serializedAdditionalRawData = default;
51Dictionary<string, BinaryData> rawDataDictionary = new Dictionary<string, BinaryData>();
52foreach (var property in element.EnumerateObject())
53{
54if (property.NameEquals("data"u8))
55{
19ceae44ShivangiReja1 years ago56List<OpenAIEmbedding> array = new List<OpenAIEmbedding>();
9f9f2936Jose Arriaga Maldonado2 years ago57foreach (var item in property.Value.EnumerateArray())
58{
19ceae44ShivangiReja1 years ago59array.Add(OpenAIEmbedding.DeserializeOpenAIEmbedding(item, options));
9f9f2936Jose Arriaga Maldonado2 years ago60}
61data = array;
62continue;
63}
64if (property.NameEquals("model"u8))
65{
66model = property.Value.GetString();
67continue;
68}
69if (property.NameEquals("object"u8))
70{
5dce104aJose Arriaga Maldonado1 years ago71@object = property.Value.GetString();
9f9f2936Jose Arriaga Maldonado2 years ago72continue;
73}
74if (property.NameEquals("usage"u8))
75{
76usage = EmbeddingTokenUsage.DeserializeEmbeddingTokenUsage(property.Value, options);
77continue;
78}
79if (true)
80{
81rawDataDictionary.Add(property.Name, BinaryData.FromString(property.Value.GetRawText()));
82}
83}
84serializedAdditionalRawData = rawDataDictionary;
19ceae44ShivangiReja1 years ago85return new OpenAIEmbeddingCollection(data, model, @object, usage, serializedAdditionalRawData);
9f9f2936Jose Arriaga Maldonado2 years ago86}
87}