openai/openai-dotnet

Public

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

CodeCommitsIssuesPull requestsActionsInsightsSecurity
copilot/sub-pr-1011-another-one

Branches

Tags

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

Clone

HTTPS

Download ZIP

src/Generated/Models/Embeddings/EmbeddingTokenUsage.Serialization.cs

136lines · modecode

1// <auto-generated/>
2
3#nullable disable
4
5using System;
6using System.ClientModel.Primitives;
7using System.Diagnostics.CodeAnalysis;
8using System.Text;
9using System.Text.Json;
10using OpenAI;
11
12namespace OpenAI.Embeddings
13{
14 public partial class EmbeddingTokenUsage : IJsonModel<EmbeddingTokenUsage>
15 {
16 internal EmbeddingTokenUsage()
17 {
18 }
19
20 [Experimental("OPENAI001")]
21 protected virtual EmbeddingTokenUsage PersistableModelCreateCore(BinaryData data, ModelReaderWriterOptions options)
22 {
23 string format = options.Format == "W" ? ((IPersistableModel<EmbeddingTokenUsage>)this).GetFormatFromOptions(options) : options.Format;
24 switch (format)
25 {
26 case "J":
27 using (JsonDocument document = JsonDocument.Parse(data, ModelSerializationExtensions.JsonDocumentOptions))
28 {
29 return DeserializeEmbeddingTokenUsage(document.RootElement, data, options);
30 }
31 default:
32 throw new FormatException($"The model {nameof(EmbeddingTokenUsage)} does not support reading '{options.Format}' format.");
33 }
34 }
35
36 [Experimental("OPENAI001")]
37 protected virtual BinaryData PersistableModelWriteCore(ModelReaderWriterOptions options)
38 {
39 string format = options.Format == "W" ? ((IPersistableModel<EmbeddingTokenUsage>)this).GetFormatFromOptions(options) : options.Format;
40 switch (format)
41 {
42 case "J":
43 return ModelReaderWriter.Write(this, options, OpenAIContext.Default);
44 default:
45 throw new FormatException($"The model {nameof(EmbeddingTokenUsage)} does not support writing '{options.Format}' format.");
46 }
47 }
48
49 BinaryData IPersistableModel<EmbeddingTokenUsage>.Write(ModelReaderWriterOptions options) => PersistableModelWriteCore(options);
50
51 EmbeddingTokenUsage IPersistableModel<EmbeddingTokenUsage>.Create(BinaryData data, ModelReaderWriterOptions options) => PersistableModelCreateCore(data, options);
52
53 string IPersistableModel<EmbeddingTokenUsage>.GetFormatFromOptions(ModelReaderWriterOptions options) => "J";
54
55 void IJsonModel<EmbeddingTokenUsage>.Write(Utf8JsonWriter writer, ModelReaderWriterOptions options)
56 {
57#pragma warning disable SCME0001 // Type is for evaluation purposes only and is subject to change or removal in future updates.
58 if (Patch.Contains("$"u8))
59 {
60 writer.WriteRawValue(Patch.GetJson("$"u8));
61 return;
62 }
63#pragma warning restore SCME0001 // Type is for evaluation purposes only and is subject to change or removal in future updates.
64
65 writer.WriteStartObject();
66 JsonModelWriteCore(writer, options);
67 writer.WriteEndObject();
68 }
69
70 [Experimental("OPENAI001")]
71 protected virtual void JsonModelWriteCore(Utf8JsonWriter writer, ModelReaderWriterOptions options)
72 {
73 string format = options.Format == "W" ? ((IPersistableModel<EmbeddingTokenUsage>)this).GetFormatFromOptions(options) : options.Format;
74 if (format != "J")
75 {
76 throw new FormatException($"The model {nameof(EmbeddingTokenUsage)} does not support writing '{format}' format.");
77 }
78#pragma warning disable SCME0001 // Type is for evaluation purposes only and is subject to change or removal in future updates.
79 if (!Patch.Contains("$.prompt_tokens"u8))
80 {
81 writer.WritePropertyName("prompt_tokens"u8);
82 writer.WriteNumberValue(InputTokenCount);
83 }
84 if (!Patch.Contains("$.total_tokens"u8))
85 {
86 writer.WritePropertyName("total_tokens"u8);
87 writer.WriteNumberValue(TotalTokenCount);
88 }
89
90 Patch.WriteTo(writer);
91#pragma warning restore SCME0001 // Type is for evaluation purposes only and is subject to change or removal in future updates.
92 }
93
94 EmbeddingTokenUsage IJsonModel<EmbeddingTokenUsage>.Create(ref Utf8JsonReader reader, ModelReaderWriterOptions options) => JsonModelCreateCore(ref reader, options);
95
96 [Experimental("OPENAI001")]
97 protected virtual EmbeddingTokenUsage JsonModelCreateCore(ref Utf8JsonReader reader, ModelReaderWriterOptions options)
98 {
99 string format = options.Format == "W" ? ((IPersistableModel<EmbeddingTokenUsage>)this).GetFormatFromOptions(options) : options.Format;
100 if (format != "J")
101 {
102 throw new FormatException($"The model {nameof(EmbeddingTokenUsage)} does not support reading '{format}' format.");
103 }
104 using JsonDocument document = JsonDocument.ParseValue(ref reader);
105 return DeserializeEmbeddingTokenUsage(document.RootElement, null, options);
106 }
107
108 internal static EmbeddingTokenUsage DeserializeEmbeddingTokenUsage(JsonElement element, BinaryData data, ModelReaderWriterOptions options)
109 {
110 if (element.ValueKind == JsonValueKind.Null)
111 {
112 return null;
113 }
114 int inputTokenCount = default;
115 int totalTokenCount = default;
116#pragma warning disable SCME0001 // Type is for evaluation purposes only and is subject to change or removal in future updates.
117 JsonPatch patch = new JsonPatch(data is null ? ReadOnlyMemory<byte>.Empty : data.ToMemory());
118#pragma warning restore SCME0001 // Type is for evaluation purposes only and is subject to change or removal in future updates.
119 foreach (var prop in element.EnumerateObject())
120 {
121 if (prop.NameEquals("prompt_tokens"u8))
122 {
123 inputTokenCount = prop.Value.GetInt32();
124 continue;
125 }
126 if (prop.NameEquals("total_tokens"u8))
127 {
128 totalTokenCount = prop.Value.GetInt32();
129 continue;
130 }
131 patch.Set([.. "$."u8, .. Encoding.UTF8.GetBytes(prop.Name)], prop.Value.GetUtf8Bytes());
132 }
133 return new EmbeddingTokenUsage(inputTokenCount, totalTokenCount, patch);
134 }
135 }
136}
137