openai/openai-dotnet

Public

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

CodeCommitsIssuesPull requestsActionsInsightsSecurity
OpenAI_2.0.0-beta.1

Branches

Tags

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

Clone

HTTPS

Download ZIP

src/Custom/Chat/AssistantChatMessage.Serialization.cs

138lines · modecode

1using System;
2using System.ClientModel.Primitives;
3using System.Collections.Generic;
4using System.Text.Json;
5
6namespace OpenAI.Chat;
7
8[CodeGenSuppress("global::System.ClientModel.Primitives.IJsonModel<OpenAI.Chat.AssistantChatMessage>.Write", typeof(Utf8JsonWriter), typeof(ModelReaderWriterOptions))]
9public partial class AssistantChatMessage : IJsonModel<AssistantChatMessage>
10{
11 void IJsonModel<AssistantChatMessage>.Write(Utf8JsonWriter writer, ModelReaderWriterOptions options)
12 => CustomSerializationHelpers.SerializeInstance(this, SerializeAssistantChatMessage, writer, options);
13
14 internal static AssistantChatMessage DeserializeAssistantChatMessage(JsonElement element, ModelReaderWriterOptions options = null)
15 {
16 options ??= ModelSerializationExtensions.WireOptions;
17
18 if (element.ValueKind == JsonValueKind.Null)
19 {
20 return null;
21 }
22 string name = default;
23 IList<ChatToolCall> toolCalls = default;
24 ChatFunctionCall functionCall = default;
25 string role = default;
26 IList<ChatMessageContentPart> content = default;
27 IDictionary<string, BinaryData> serializedAdditionalRawData = default;
28 Dictionary<string, BinaryData> rawDataDictionary = new Dictionary<string, BinaryData>();
29 foreach (var property in element.EnumerateObject())
30 {
31 if (property.NameEquals("name"u8))
32 {
33 name = property.Value.GetString();
34 continue;
35 }
36 if (property.NameEquals("tool_calls"u8))
37 {
38 if (property.Value.ValueKind == JsonValueKind.Null)
39 {
40 continue;
41 }
42 List<ChatToolCall> array = new List<ChatToolCall>();
43 foreach (var item in property.Value.EnumerateArray())
44 {
45 array.Add(ChatToolCall.DeserializeChatToolCall(item, options));
46 }
47 toolCalls = array;
48 continue;
49 }
50 if (property.NameEquals("function_call"u8))
51 {
52 if (property.Value.ValueKind == JsonValueKind.Null)
53 {
54 functionCall = null;
55 continue;
56 }
57 functionCall = ChatFunctionCall.DeserializeChatFunctionCall(property.Value, options);
58 continue;
59 }
60 if (property.NameEquals("role"u8))
61 {
62 role = property.Value.GetString();
63 continue;
64 }
65 if (property.NameEquals("content"u8))
66 {
67 if (property.Value.ValueKind == JsonValueKind.Null)
68 {
69 continue;
70 }
71 List<ChatMessageContentPart> array = new List<ChatMessageContentPart>();
72 array.Add(ChatMessageContentPart.CreateTextMessageContentPart(property.Value.GetString()));
73 content = array;
74 continue;
75 }
76 if (true)
77 {
78 rawDataDictionary.Add(property.Name, BinaryData.FromString(property.Value.GetRawText()));
79 }
80 }
81 serializedAdditionalRawData = rawDataDictionary;
82 return new AssistantChatMessage(
83 role,
84 content ?? new ChangeTrackingList<ChatMessageContentPart>(),
85 serializedAdditionalRawData,
86 name,
87 toolCalls ?? new ChangeTrackingList<ChatToolCall>(),
88 functionCall);
89 }
90
91 internal static void SerializeAssistantChatMessage(AssistantChatMessage instance, Utf8JsonWriter writer, ModelReaderWriterOptions options)
92 {
93 writer.WriteStartObject();
94 if (Optional.IsDefined(instance.ParticipantName))
95 {
96 writer.WritePropertyName("name"u8);
97 writer.WriteStringValue(instance.ParticipantName);
98 }
99 if (Optional.IsCollectionDefined(instance.ToolCalls))
100 {
101 writer.WritePropertyName("tool_calls"u8);
102 writer.WriteStartArray();
103 foreach (var item in instance.ToolCalls)
104 {
105 writer.WriteObjectValue(item, options);
106 }
107 writer.WriteEndArray();
108 }
109 if (Optional.IsDefined(instance.FunctionCall))
110 {
111 if (instance.FunctionCall != null)
112 {
113 writer.WritePropertyName("function_call"u8);
114 writer.WriteObjectValue(instance.FunctionCall, options);
115 }
116 else
117 {
118 writer.WriteNull("function_call");
119 }
120 }
121 writer.WritePropertyName("role"u8);
122 writer.WriteStringValue(instance.Role);
123 if (Optional.IsCollectionDefined(instance.Content))
124 {
125 if (instance.Content[0] != null)
126 {
127 writer.WritePropertyName("content"u8);
128 writer.WriteStringValue(instance.Content[0].Text);
129 }
130 else
131 {
132 writer.WriteNull("content");
133 }
134 }
135 writer.WriteSerializedAdditionalRawData(instance._serializedAdditionalRawData, options);
136 writer.WriteEndObject();
137 }
138}
139