diff --git a/src/Custom/Assistants/AssistantClient.cs b/src/Custom/Assistants/AssistantClient.cs index a1ab32d20..14eba1fef 100644 --- a/src/Custom/Assistants/AssistantClient.cs +++ b/src/Custom/Assistants/AssistantClient.cs @@ -19,6 +19,8 @@ namespace OpenAI.Assistants; [CodeGenSuppress("AssistantClient", typeof(ClientPipeline), typeof(ApiKeyCredential), typeof(Uri))] [CodeGenSuppress("CreateAssistantAsync", typeof(AssistantCreationOptions))] [CodeGenSuppress("CreateAssistant", typeof(AssistantCreationOptions))] +[CodeGenSuppress("DeleteAssistantAsync", typeof(string))] +[CodeGenSuppress("DeleteAssistant", typeof(string))] [CodeGenSuppress("GetAssistantsAsync", typeof(int?), typeof(ListOrder?), typeof(string), typeof(string))] [CodeGenSuppress("GetAssistants", typeof(int?), typeof(ListOrder?), typeof(string), typeof(string))] public partial class AssistantClient diff --git a/src/Custom/Assistants/CodeInterpreterToolDefinition.Serialization.cs b/src/Custom/Assistants/CodeInterpreterToolDefinition.Serialization.cs new file mode 100644 index 000000000..bbec0065f --- /dev/null +++ b/src/Custom/Assistants/CodeInterpreterToolDefinition.Serialization.cs @@ -0,0 +1,26 @@ +using System; +using System.ClientModel; +using System.ClientModel.Primitives; +using System.Collections.Generic; +using System.Text.Json; + +namespace OpenAI.Assistants; + +[CodeGenSuppress("global::System.ClientModel.Primitives.IJsonModel.Write", typeof(Utf8JsonWriter), typeof(ModelReaderWriterOptions))] +public partial class CodeInterpreterToolDefinition : IJsonModel +{ + void IJsonModel.Write(Utf8JsonWriter writer, ModelReaderWriterOptions options) + => CustomSerializationHelpers.SerializeInstance(this, SerializeCodeInterpreterToolDefinition, writer, options); + + internal static void SerializeCodeInterpreterToolDefinition(CodeInterpreterToolDefinition instance, Utf8JsonWriter writer, ModelReaderWriterOptions options) + => instance.WriteCore(writer, options); + + protected override void WriteCore(Utf8JsonWriter writer, ModelReaderWriterOptions options) + { + writer.WriteStartObject(); + writer.WritePropertyName("type"u8); + writer.WriteStringValue(Type); + writer.WriteSerializedAdditionalRawData(_serializedAdditionalRawData, options); + writer.WriteEndObject(); + } +} \ No newline at end of file diff --git a/src/Custom/Assistants/FileSearchToolDefinition.Serialization.cs b/src/Custom/Assistants/FileSearchToolDefinition.Serialization.cs new file mode 100644 index 000000000..21dac0e72 --- /dev/null +++ b/src/Custom/Assistants/FileSearchToolDefinition.Serialization.cs @@ -0,0 +1,26 @@ +using System; +using System.ClientModel; +using System.ClientModel.Primitives; +using System.Collections.Generic; +using System.Text.Json; + +namespace OpenAI.Assistants; + +[CodeGenSuppress("global::System.ClientModel.Primitives.IJsonModel.Write", typeof(Utf8JsonWriter), typeof(ModelReaderWriterOptions))] +public partial class FileSearchToolDefinition : IJsonModel +{ + void IJsonModel.Write(Utf8JsonWriter writer, ModelReaderWriterOptions options) + => CustomSerializationHelpers.SerializeInstance(this, SerializeFileSearchToolDefinition, writer, options); + + internal static void SerializeFileSearchToolDefinition(FileSearchToolDefinition instance, Utf8JsonWriter writer, ModelReaderWriterOptions options) + => instance.WriteCore(writer, options); + + protected override void WriteCore(Utf8JsonWriter writer, ModelReaderWriterOptions options) + { + writer.WriteStartObject(); + writer.WritePropertyName("type"u8); + writer.WriteStringValue(Type); + writer.WriteSerializedAdditionalRawData(_serializedAdditionalRawData, options); + writer.WriteEndObject(); + } +} diff --git a/src/Custom/Assistants/FunctionToolDefinition.Serialization.cs b/src/Custom/Assistants/FunctionToolDefinition.Serialization.cs new file mode 100644 index 000000000..7ef4df61c --- /dev/null +++ b/src/Custom/Assistants/FunctionToolDefinition.Serialization.cs @@ -0,0 +1,28 @@ +using System; +using System.ClientModel; +using System.ClientModel.Primitives; +using System.Collections.Generic; +using System.Text.Json; + +namespace OpenAI.Assistants; + +[CodeGenSuppress("global::System.ClientModel.Primitives.IJsonModel.Write", typeof(Utf8JsonWriter), typeof(ModelReaderWriterOptions))] +public partial class FunctionToolDefinition : IJsonModel +{ + void IJsonModel.Write(Utf8JsonWriter writer, ModelReaderWriterOptions options) + => CustomSerializationHelpers.SerializeInstance(this, SerializeFunctionToolDefinition, writer, options); + + internal static void SerializeFunctionToolDefinition(FunctionToolDefinition instance, Utf8JsonWriter writer, ModelReaderWriterOptions options) + => instance.WriteCore(writer, options); + + protected override void WriteCore(Utf8JsonWriter writer, ModelReaderWriterOptions options) + { + writer.WriteStartObject(); + writer.WritePropertyName("function"u8); + writer.WriteObjectValue(_internalFunction, options); + writer.WritePropertyName("type"u8); + writer.WriteStringValue(Type); + writer.WriteSerializedAdditionalRawData(_serializedAdditionalRawData, options); + writer.WriteEndObject(); + } +} \ No newline at end of file diff --git a/src/Custom/Assistants/Internal/InternalMessageImageFileContent.Serialization.cs b/src/Custom/Assistants/Internal/InternalMessageImageFileContent.Serialization.cs new file mode 100644 index 000000000..b37fe1ce4 --- /dev/null +++ b/src/Custom/Assistants/Internal/InternalMessageImageFileContent.Serialization.cs @@ -0,0 +1,28 @@ +using System; +using System.ClientModel; +using System.ClientModel.Primitives; +using System.Collections.Generic; +using System.Text.Json; + +namespace OpenAI.Assistants; + +[CodeGenSuppress("global::System.ClientModel.Primitives.IJsonModel.Write", typeof(Utf8JsonWriter), typeof(ModelReaderWriterOptions))] +internal partial class InternalMessageImageFileContent : IJsonModel +{ + void IJsonModel.Write(Utf8JsonWriter writer, ModelReaderWriterOptions options) + => CustomSerializationHelpers.SerializeInstance(this, SerializeInternalMessageImageFileContent, writer, options); + + internal static void SerializeInternalMessageImageFileContent(InternalMessageImageFileContent instance, Utf8JsonWriter writer, ModelReaderWriterOptions options) + => instance.WriteCore(writer, options); + + protected override void WriteCore(Utf8JsonWriter writer, ModelReaderWriterOptions options) + { + writer.WriteStartObject(); + writer.WritePropertyName("type"u8); + writer.WriteStringValue(_type); + writer.WritePropertyName("image_file"u8); + writer.WriteObjectValue(_imageFile, options); + writer.WriteSerializedAdditionalRawData(_serializedAdditionalRawData, options); + writer.WriteEndObject(); + } +} diff --git a/src/Custom/Assistants/Internal/InternalMessageImageUrlContent.Serialization.cs b/src/Custom/Assistants/Internal/InternalMessageImageUrlContent.Serialization.cs new file mode 100644 index 000000000..cb8938ca4 --- /dev/null +++ b/src/Custom/Assistants/Internal/InternalMessageImageUrlContent.Serialization.cs @@ -0,0 +1,28 @@ +using System; +using System.ClientModel; +using System.ClientModel.Primitives; +using System.Collections.Generic; +using System.Text.Json; + +namespace OpenAI.Assistants; + +[CodeGenSuppress("global::System.ClientModel.Primitives.IJsonModel.Write", typeof(Utf8JsonWriter), typeof(ModelReaderWriterOptions))] +internal partial class InternalMessageImageUrlContent : IJsonModel +{ + void IJsonModel.Write(Utf8JsonWriter writer, ModelReaderWriterOptions options) + => CustomSerializationHelpers.SerializeInstance(this, SerializeInternalMessageImageUrlContent, writer, options); + + internal static void SerializeInternalMessageImageUrlContent(InternalMessageImageUrlContent instance, Utf8JsonWriter writer, ModelReaderWriterOptions options) + => instance.WriteCore(writer, options); + + protected override void WriteCore(Utf8JsonWriter writer, ModelReaderWriterOptions options) + { + writer.WriteStartObject(); + writer.WritePropertyName("type"u8); + writer.WriteStringValue(_type); + writer.WritePropertyName("image_url"u8); + writer.WriteObjectValue(_imageUrl, options); + writer.WriteSerializedAdditionalRawData(_serializedAdditionalRawData, options); + writer.WriteEndObject(); + } +} \ No newline at end of file diff --git a/src/Custom/Assistants/Internal/InternalRequestMessageTextContent.Serialization.cs b/src/Custom/Assistants/Internal/InternalRequestMessageTextContent.Serialization.cs new file mode 100644 index 000000000..6bbb6e101 --- /dev/null +++ b/src/Custom/Assistants/Internal/InternalRequestMessageTextContent.Serialization.cs @@ -0,0 +1,28 @@ +using System; +using System.ClientModel; +using System.ClientModel.Primitives; +using System.Collections.Generic; +using System.Text.Json; + +namespace OpenAI.Assistants; + +[CodeGenSuppress("global::System.ClientModel.Primitives.IJsonModel.Write", typeof(Utf8JsonWriter), typeof(ModelReaderWriterOptions))] +internal partial class InternalRequestMessageTextContent : IJsonModel +{ + void IJsonModel.Write(Utf8JsonWriter writer, ModelReaderWriterOptions options) + => CustomSerializationHelpers.SerializeInstance(this, SerializeInternalRequestMessageTextContent, writer, options); + + internal static void SerializeInternalRequestMessageTextContent(InternalRequestMessageTextContent instance, Utf8JsonWriter writer, ModelReaderWriterOptions options) + => instance.WriteCore(writer, options); + + protected override void WriteCore(Utf8JsonWriter writer, ModelReaderWriterOptions options) + { + writer.WriteStartObject(); + writer.WritePropertyName("type"u8); + writer.WriteStringValue(Type.ToString()); + writer.WritePropertyName("text"u8); + writer.WriteStringValue(InternalText); + writer.WriteSerializedAdditionalRawData(_serializedAdditionalRawData, options); + writer.WriteEndObject(); + } +} diff --git a/src/Custom/Assistants/Internal/InternalResponseMessageTextContent.Serialization.cs b/src/Custom/Assistants/Internal/InternalResponseMessageTextContent.Serialization.cs new file mode 100644 index 000000000..9a3f93de7 --- /dev/null +++ b/src/Custom/Assistants/Internal/InternalResponseMessageTextContent.Serialization.cs @@ -0,0 +1,28 @@ +using System; +using System.ClientModel; +using System.ClientModel.Primitives; +using System.Collections.Generic; +using System.Text.Json; + +namespace OpenAI.Assistants; + +[CodeGenSuppress("global::System.ClientModel.Primitives.IJsonModel.Write", typeof(Utf8JsonWriter), typeof(ModelReaderWriterOptions))] +internal partial class InternalResponseMessageTextContent : IJsonModel +{ + void IJsonModel.Write(Utf8JsonWriter writer, ModelReaderWriterOptions options) + => CustomSerializationHelpers.SerializeInstance(this, SerializeInternalResponseMessageTextContent, writer, options); + + internal static void SerializeInternalResponseMessageTextContent(InternalResponseMessageTextContent instance, Utf8JsonWriter writer, ModelReaderWriterOptions options) + => instance.WriteCore(writer, options); + + protected override void WriteCore(Utf8JsonWriter writer, ModelReaderWriterOptions options) + { + writer.WriteStartObject(); + writer.WritePropertyName("type"u8); + writer.WriteStringValue(_type); + writer.WritePropertyName("text"u8); + writer.WriteObjectValue(_text, options); + writer.WriteSerializedAdditionalRawData(_serializedAdditionalRawData, options); + writer.WriteEndObject(); + } +} diff --git a/src/Custom/Assistants/Internal/UnknownAssistantToolDefinition.Serialization.cs b/src/Custom/Assistants/Internal/UnknownAssistantToolDefinition.Serialization.cs new file mode 100644 index 000000000..230b8df01 --- /dev/null +++ b/src/Custom/Assistants/Internal/UnknownAssistantToolDefinition.Serialization.cs @@ -0,0 +1,26 @@ +using System; +using System.ClientModel; +using System.ClientModel.Primitives; +using System.Collections.Generic; +using System.Text.Json; + +namespace OpenAI.Assistants; + +[CodeGenSuppress("global::System.ClientModel.Primitives.IJsonModel.Write", typeof(Utf8JsonWriter), typeof(ModelReaderWriterOptions))] +internal partial class UnknownAssistantToolDefinition : IJsonModel +{ + void IJsonModel.Write(Utf8JsonWriter writer, ModelReaderWriterOptions options) + => CustomSerializationHelpers.SerializeInstance(this, SerializeUnknownAssistantToolDefinition, writer, options); + + internal static void SerializeUnknownAssistantToolDefinition(UnknownAssistantToolDefinition instance, Utf8JsonWriter writer, ModelReaderWriterOptions options) + => instance.WriteCore(writer, options); + + protected override void WriteCore(Utf8JsonWriter writer, ModelReaderWriterOptions options) + { + writer.WriteStartObject(); + writer.WritePropertyName("type"u8); + writer.WriteStringValue(Type); + writer.WriteSerializedAdditionalRawData(_serializedAdditionalRawData, options); + writer.WriteEndObject(); + } +} diff --git a/src/Custom/Assistants/MessageContent.Serialization.cs b/src/Custom/Assistants/MessageContent.Serialization.cs index 80cfc2bf0..77d646504 100644 --- a/src/Custom/Assistants/MessageContent.Serialization.cs +++ b/src/Custom/Assistants/MessageContent.Serialization.cs @@ -2,8 +2,18 @@ using System.Text.Json; namespace OpenAI.Assistants; -public partial class MessageContent : IJsonModel + +[CodeGenSuppress("global::System.ClientModel.Primitives.IJsonModel.Write", typeof(Utf8JsonWriter), typeof(ModelReaderWriterOptions))] +public abstract partial class MessageContent : IJsonModel { + void IJsonModel.Write(Utf8JsonWriter writer, ModelReaderWriterOptions options) + => CustomSerializationHelpers.SerializeInstance(this, WriteCore, writer, options); + + internal static void WriteCore(MessageContent instance, Utf8JsonWriter writer, ModelReaderWriterOptions options) + => instance.WriteCore(writer, options); + + protected abstract void WriteCore(Utf8JsonWriter writer, ModelReaderWriterOptions options); + internal static MessageContent DeserializeMessageContent(JsonElement element, ModelReaderWriterOptions options = null) { options ??= ModelSerializationExtensions.WireOptions; @@ -28,4 +38,4 @@ internal static MessageContent DeserializeMessageContent(JsonElement element, Mo return null; } -} +} \ No newline at end of file diff --git a/src/Custom/Assistants/ToolDefinition.Serialization.cs b/src/Custom/Assistants/ToolDefinition.Serialization.cs new file mode 100644 index 000000000..9894fb1ed --- /dev/null +++ b/src/Custom/Assistants/ToolDefinition.Serialization.cs @@ -0,0 +1,19 @@ +using System; +using System.ClientModel.Primitives; +using System.Collections.Generic; +using System.Runtime.CompilerServices; +using System.Text.Json; + +namespace OpenAI.Assistants; + +[CodeGenSuppress("global::System.ClientModel.Primitives.IJsonModel.Write", typeof(Utf8JsonWriter), typeof(ModelReaderWriterOptions))] +public abstract partial class ToolDefinition : IJsonModel +{ + void IJsonModel.Write(Utf8JsonWriter writer, ModelReaderWriterOptions options) + => CustomSerializationHelpers.SerializeInstance(this, WriteCore, writer, options); + + internal static void WriteCore(ToolDefinition instance, Utf8JsonWriter writer, ModelReaderWriterOptions options) + => instance.WriteCore(writer, options); + + protected abstract void WriteCore(Utf8JsonWriter writer, ModelReaderWriterOptions options); +} \ No newline at end of file diff --git a/src/Custom/Chat/AssistantChatMessage.Serialization.cs b/src/Custom/Chat/AssistantChatMessage.Serialization.cs index 99ca0557d..8cc03e442 100644 --- a/src/Custom/Chat/AssistantChatMessage.Serialization.cs +++ b/src/Custom/Chat/AssistantChatMessage.Serialization.cs @@ -11,107 +11,33 @@ public partial class AssistantChatMessage : IJsonModel void IJsonModel.Write(Utf8JsonWriter writer, ModelReaderWriterOptions options) => CustomSerializationHelpers.SerializeInstance(this, SerializeAssistantChatMessage, writer, options); - internal static AssistantChatMessage DeserializeAssistantChatMessage(JsonElement element, ModelReaderWriterOptions options = null) - { - options ??= ModelSerializationExtensions.WireOptions; - - if (element.ValueKind == JsonValueKind.Null) - { - return null; - } - string name = default; - IList toolCalls = default; - ChatFunctionCall functionCall = default; - string role = default; - IList content = default; - IDictionary serializedAdditionalRawData = default; - Dictionary rawDataDictionary = new Dictionary(); - foreach (var property in element.EnumerateObject()) - { - if (property.NameEquals("name"u8)) - { - name = property.Value.GetString(); - continue; - } - if (property.NameEquals("tool_calls"u8)) - { - if (property.Value.ValueKind == JsonValueKind.Null) - { - continue; - } - List array = new List(); - foreach (var item in property.Value.EnumerateArray()) - { - array.Add(ChatToolCall.DeserializeChatToolCall(item, options)); - } - toolCalls = array; - continue; - } - if (property.NameEquals("function_call"u8)) - { - if (property.Value.ValueKind == JsonValueKind.Null) - { - functionCall = null; - continue; - } - functionCall = ChatFunctionCall.DeserializeChatFunctionCall(property.Value, options); - continue; - } - if (property.NameEquals("role"u8)) - { - role = property.Value.GetString(); - continue; - } - if (property.NameEquals("content"u8)) - { - if (property.Value.ValueKind == JsonValueKind.Null) - { - continue; - } - List array = new List(); - array.Add(ChatMessageContentPart.CreateTextMessageContentPart(property.Value.GetString())); - content = array; - continue; - } - if (true) - { - rawDataDictionary.Add(property.Name, BinaryData.FromString(property.Value.GetRawText())); - } - } - serializedAdditionalRawData = rawDataDictionary; - return new AssistantChatMessage( - role, - content ?? new ChangeTrackingList(), - serializedAdditionalRawData, - name, - toolCalls ?? new ChangeTrackingList(), - functionCall); - } - internal static void SerializeAssistantChatMessage(AssistantChatMessage instance, Utf8JsonWriter writer, ModelReaderWriterOptions options) + => instance.WriteCore(writer, options); + + protected override void WriteCore(Utf8JsonWriter writer, ModelReaderWriterOptions options) { writer.WriteStartObject(); - if (Optional.IsDefined(instance.ParticipantName)) + if (Optional.IsDefined(ParticipantName)) { writer.WritePropertyName("name"u8); - writer.WriteStringValue(instance.ParticipantName); + writer.WriteStringValue(ParticipantName); } - if (Optional.IsCollectionDefined(instance.ToolCalls)) + if (Optional.IsCollectionDefined(ToolCalls)) { writer.WritePropertyName("tool_calls"u8); writer.WriteStartArray(); - foreach (var item in instance.ToolCalls) + foreach (var item in ToolCalls) { writer.WriteObjectValue(item, options); } writer.WriteEndArray(); } - if (Optional.IsDefined(instance.FunctionCall)) + if (Optional.IsDefined(FunctionCall)) { - if (instance.FunctionCall != null) + if (FunctionCall != null) { writer.WritePropertyName("function_call"u8); - writer.WriteObjectValue(instance.FunctionCall, options); + writer.WriteObjectValue(FunctionCall, options); } else { @@ -119,20 +45,20 @@ internal static void SerializeAssistantChatMessage(AssistantChatMessage instance } } writer.WritePropertyName("role"u8); - writer.WriteStringValue(instance.Role); - if (Optional.IsCollectionDefined(instance.Content)) + writer.WriteStringValue(Role); + if (Optional.IsCollectionDefined(Content)) { - if (instance.Content[0] != null) + if (Content[0] != null) { writer.WritePropertyName("content"u8); - writer.WriteStringValue(instance.Content[0].Text); + writer.WriteStringValue(Content[0].Text); } else { writer.WriteNull("content"); } } - writer.WriteSerializedAdditionalRawData(instance._serializedAdditionalRawData, options); + writer.WriteSerializedAdditionalRawData(_serializedAdditionalRawData, options); writer.WriteEndObject(); } } diff --git a/src/Custom/Chat/ChatMessage.Serialization.cs b/src/Custom/Chat/ChatMessage.Serialization.cs index 5bcd0aef1..3ad48ee5e 100644 --- a/src/Custom/Chat/ChatMessage.Serialization.cs +++ b/src/Custom/Chat/ChatMessage.Serialization.cs @@ -18,40 +18,25 @@ internal void SerializeContentValue(Utf8JsonWriter writer, ModelReaderWriterOpti [MethodImpl(MethodImplOptions.AggressiveInlining)] internal static void DeserializeContentValue(JsonProperty property, ref IList content, ModelReaderWriterOptions options = null) { - throw new NotImplementedException(); - } - - void IJsonModel.Write(Utf8JsonWriter writer, ModelReaderWriterOptions options) - => CustomSerializationHelpers.SerializeInstance(this, SerializeChatMessage, writer, options); - - internal static void SerializeChatMessage(ChatMessage instance, Utf8JsonWriter writer, ModelReaderWriterOptions options) - { - writer.WriteStartObject(); - writer.WritePropertyName("role"u8); - writer.WriteStringValue(instance.Role); - writer.WriteSerializedAdditionalRawData(instance._serializedAdditionalRawData, options); - writer.WriteEndObject(); - } - - internal static ChatMessage DeserializeChatMessage(JsonElement element, ModelReaderWriterOptions options = null) - { - options ??= ModelSerializationExtensions.WireOptions; - - if (element.ValueKind == JsonValueKind.Null) + content ??= new ChangeTrackingList(); + if (property.Value.ValueKind == JsonValueKind.String) { - return null; + content.Add(ChatMessageContentPart.CreateTextMessageContentPart(property.Value.GetString())); } - if (element.TryGetProperty("role", out JsonElement discriminator)) + else { - switch (discriminator.GetString()) + foreach (var item in property.Value.EnumerateArray()) { - case "assistant": return AssistantChatMessage.DeserializeAssistantChatMessage(element, options); - case "function": return FunctionChatMessage.DeserializeFunctionChatMessage(element, options); - case "system": return SystemChatMessage.DeserializeSystemChatMessage(element, options); - case "tool": return ToolChatMessage.DeserializeToolChatMessage(element, options); - case "user": return UserChatMessage.DeserializeUserChatMessage(element, options); + content.Add(ChatMessageContentPart.DeserializeChatMessageContentPart(item, options)); } } - return UnknownChatMessage.DeserializeUnknownChatMessage(element, options); } + + void IJsonModel.Write(Utf8JsonWriter writer, ModelReaderWriterOptions options) + => CustomSerializationHelpers.SerializeInstance(this, WriteCore, writer, options); + + internal static void WriteCore(ChatMessage instance, Utf8JsonWriter writer, ModelReaderWriterOptions options) + => instance.WriteCore(writer, options); + + protected abstract void WriteCore(Utf8JsonWriter writer, ModelReaderWriterOptions options); } diff --git a/src/Custom/Chat/ChatMessageContentPart.Serialization.cs b/src/Custom/Chat/ChatMessageContentPart.Serialization.cs index ef55b3520..0700ed4c0 100644 --- a/src/Custom/Chat/ChatMessageContentPart.Serialization.cs +++ b/src/Custom/Chat/ChatMessageContentPart.Serialization.cs @@ -9,9 +9,9 @@ namespace OpenAI.Chat; public partial class ChatMessageContentPart : IJsonModel { void IJsonModel.Write(Utf8JsonWriter writer, ModelReaderWriterOptions options) - => CustomSerializationHelpers.SerializeInstance(this, SerializeChatMessageContentPart, writer, options); + => CustomSerializationHelpers.SerializeInstance(this, WriteCoreContentPart, writer, options); - internal static void SerializeChatMessageContentPart(ChatMessageContentPart instance, Utf8JsonWriter writer, ModelReaderWriterOptions options) + internal static void WriteCoreContentPart(ChatMessageContentPart instance, Utf8JsonWriter writer, ModelReaderWriterOptions options) { writer.WriteStartObject(); diff --git a/src/Custom/Chat/FunctionChatMessage.Serialization.cs b/src/Custom/Chat/FunctionChatMessage.Serialization.cs index 39a30cdde..be3f5cd35 100644 --- a/src/Custom/Chat/FunctionChatMessage.Serialization.cs +++ b/src/Custom/Chat/FunctionChatMessage.Serialization.cs @@ -12,25 +12,30 @@ void IJsonModel.Write(Utf8JsonWriter writer, ModelReaderWri => CustomSerializationHelpers.SerializeInstance(this, SerializeFunctionChatMessage, writer, options); internal static void SerializeFunctionChatMessage(FunctionChatMessage instance, Utf8JsonWriter writer, ModelReaderWriterOptions options) + { + instance.WriteCore(writer, options); + } + + protected override void WriteCore(Utf8JsonWriter writer, ModelReaderWriterOptions options) { writer.WriteStartObject(); writer.WritePropertyName("name"u8); - writer.WriteStringValue(instance.FunctionName); + writer.WriteStringValue(FunctionName); writer.WritePropertyName("role"u8); - writer.WriteStringValue(instance.Role); - if (Optional.IsCollectionDefined(instance.Content)) + writer.WriteStringValue(Role); + if (Optional.IsCollectionDefined(Content)) { - if (instance.Content[0] != null) + if (Content[0] != null) { writer.WritePropertyName("content"u8); - writer.WriteStringValue(instance.Content[0].Text); + writer.WriteStringValue(Content[0].Text); } else { writer.WriteNull("content"); } } - writer.WriteSerializedAdditionalRawData(instance._serializedAdditionalRawData, options); + writer.WriteSerializedAdditionalRawData(_serializedAdditionalRawData, options); writer.WriteEndObject(); } diff --git a/src/Custom/Chat/Internal/UnknownChatMessage.Serialization.cs b/src/Custom/Chat/Internal/UnknownChatMessage.Serialization.cs index 9bf05bc3d..6282e0945 100644 --- a/src/Custom/Chat/Internal/UnknownChatMessage.Serialization.cs +++ b/src/Custom/Chat/Internal/UnknownChatMessage.Serialization.cs @@ -9,24 +9,29 @@ namespace OpenAI.Chat; internal partial class UnknownChatMessage : IJsonModel { void IJsonModel.Write(Utf8JsonWriter writer, ModelReaderWriterOptions options) - => CustomSerializationHelpers.SerializeInstance(this, SerializeChatMessage, writer, options); + => CustomSerializationHelpers.SerializeInstance(this, WriteCore, writer, options); - internal static void SerializeChatMessage(UnknownChatMessage instance, Utf8JsonWriter writer, ModelReaderWriterOptions options) + internal static void WriteCore(UnknownChatMessage instance, Utf8JsonWriter writer, ModelReaderWriterOptions options) + { + instance.WriteCore(writer, options); + } + + protected override void WriteCore(Utf8JsonWriter writer, ModelReaderWriterOptions options) { writer.WriteStartObject(); writer.WritePropertyName("role"u8); - writer.WriteStringValue(instance.Role); - if (Optional.IsCollectionDefined(instance.Content)) + writer.WriteStringValue(Role); + if (Optional.IsCollectionDefined(Content)) { writer.WritePropertyName("content"u8); writer.WriteStartArray(); - foreach (var item in instance.Content) + foreach (var item in Content) { writer.WriteObjectValue(item, options); } writer.WriteEndArray(); } - writer.WriteSerializedAdditionalRawData(instance._serializedAdditionalRawData, options); + writer.WriteSerializedAdditionalRawData(_serializedAdditionalRawData, options); writer.WriteEndObject(); } diff --git a/src/Custom/Chat/SystemChatMessage.Serialization.cs b/src/Custom/Chat/SystemChatMessage.Serialization.cs index 6d95e4373..8dd1d3c96 100644 --- a/src/Custom/Chat/SystemChatMessage.Serialization.cs +++ b/src/Custom/Chat/SystemChatMessage.Serialization.cs @@ -12,62 +12,24 @@ void IJsonModel.Write(Utf8JsonWriter writer, ModelReaderWrite => CustomSerializationHelpers.SerializeInstance(this, SerializeSystemChatMessage, writer, options); internal static void SerializeSystemChatMessage(SystemChatMessage instance, Utf8JsonWriter writer, ModelReaderWriterOptions options) + => instance.WriteCore(writer, options); + + protected override void WriteCore(Utf8JsonWriter writer, ModelReaderWriterOptions options) { writer.WriteStartObject(); - if (Optional.IsDefined(instance.ParticipantName)) + if (Optional.IsDefined(ParticipantName)) { writer.WritePropertyName("name"u8); - writer.WriteStringValue(instance.ParticipantName); + writer.WriteStringValue(ParticipantName); } writer.WritePropertyName("role"u8); - writer.WriteStringValue(instance.Role); - if (Optional.IsCollectionDefined(instance.Content)) + writer.WriteStringValue(Role); + if (Optional.IsCollectionDefined(Content)) { writer.WritePropertyName("content"u8); - writer.WriteStringValue(instance.Content[0].Text); + writer.WriteStringValue(Content[0].Text); } - writer.WriteSerializedAdditionalRawData(instance._serializedAdditionalRawData, options); + writer.WriteSerializedAdditionalRawData(_serializedAdditionalRawData, options); writer.WriteEndObject(); } - - internal static SystemChatMessage DeserializeSystemChatMessage(JsonElement element, ModelReaderWriterOptions options = null) - { - options ??= ModelSerializationExtensions.WireOptions; - - if (element.ValueKind == JsonValueKind.Null) - { - return null; - } - string name = default; - string role = default; - IList content = default; - IDictionary serializedAdditionalRawData = default; - Dictionary rawDataDictionary = new Dictionary(); - foreach (var property in element.EnumerateObject()) - { - if (property.NameEquals("name"u8)) - { - name = property.Value.GetString(); - continue; - } - if (property.NameEquals("role"u8)) - { - role = property.Value.GetString(); - continue; - } - if (property.NameEquals("content"u8)) - { - List array = new List(); - array.Add(ChatMessageContentPart.CreateTextMessageContentPart(property.Value.GetString())); - content = array; - continue; - } - if (true) - { - rawDataDictionary.Add(property.Name, BinaryData.FromString(property.Value.GetRawText())); - } - } - serializedAdditionalRawData = rawDataDictionary; - return new SystemChatMessage(role, content ?? new ChangeTrackingList(), serializedAdditionalRawData, name); - } } \ No newline at end of file diff --git a/src/Custom/Chat/SystemChatMessage.cs b/src/Custom/Chat/SystemChatMessage.cs index d5f185db0..8d1588781 100644 --- a/src/Custom/Chat/SystemChatMessage.cs +++ b/src/Custom/Chat/SystemChatMessage.cs @@ -22,7 +22,8 @@ public SystemChatMessage(string content) Argument.AssertNotNull(content, nameof(content)); Role = "system"; - Content = [ChatMessageContentPart.CreateTextMessageContentPart(content)]; + Content = new ChangeTrackingList( + (IList)[ChatMessageContentPart.CreateTextMessageContentPart(content)]); } /// diff --git a/src/Custom/Chat/ToolChatMessage.Serialization.cs b/src/Custom/Chat/ToolChatMessage.Serialization.cs index dc4dd8f66..fe153d8b0 100644 --- a/src/Custom/Chat/ToolChatMessage.Serialization.cs +++ b/src/Custom/Chat/ToolChatMessage.Serialization.cs @@ -12,59 +12,21 @@ void IJsonModel.Write(Utf8JsonWriter writer, ModelReaderWriterO => CustomSerializationHelpers.SerializeInstance(this, SerializeToolChatMessage, writer, options); internal static void SerializeToolChatMessage(ToolChatMessage instance, Utf8JsonWriter writer, ModelReaderWriterOptions options) + => instance.WriteCore(writer, options); + + protected override void WriteCore(Utf8JsonWriter writer, ModelReaderWriterOptions options) { writer.WriteStartObject(); writer.WritePropertyName("tool_call_id"u8); - writer.WriteStringValue(instance.ToolCallId); + writer.WriteStringValue(ToolCallId); writer.WritePropertyName("role"u8); - writer.WriteStringValue(instance.Role); - if (Optional.IsCollectionDefined(instance.Content)) + writer.WriteStringValue(Role); + if (Optional.IsCollectionDefined(Content)) { writer.WritePropertyName("content"u8); - writer.WriteStringValue(instance.Content[0].Text); + writer.WriteStringValue(Content[0].Text); } - writer.WriteSerializedAdditionalRawData(instance._serializedAdditionalRawData, options); + writer.WriteSerializedAdditionalRawData(_serializedAdditionalRawData, options); writer.WriteEndObject(); } - - internal static ToolChatMessage DeserializeToolChatMessage(JsonElement element, ModelReaderWriterOptions options = null) - { - options ??= ModelSerializationExtensions.WireOptions; - - if (element.ValueKind == JsonValueKind.Null) - { - return null; - } - string toolCallId = default; - string role = default; - IList content = default; - IDictionary serializedAdditionalRawData = default; - Dictionary rawDataDictionary = new Dictionary(); - foreach (var property in element.EnumerateObject()) - { - if (property.NameEquals("tool_call_id"u8)) - { - toolCallId = property.Value.GetString(); - continue; - } - if (property.NameEquals("role"u8)) - { - role = property.Value.GetString(); - continue; - } - if (property.NameEquals("content"u8)) - { - List array = new List(); - array.Add(ChatMessageContentPart.CreateTextMessageContentPart(property.Value.GetString())); - content = array; - continue; - } - if (true) - { - rawDataDictionary.Add(property.Name, BinaryData.FromString(property.Value.GetRawText())); - } - } - serializedAdditionalRawData = rawDataDictionary; - return new ToolChatMessage(role, content ?? new ChangeTrackingList(), serializedAdditionalRawData, toolCallId); - } } diff --git a/src/Custom/Chat/UserChatMessage.Serialization.cs b/src/Custom/Chat/UserChatMessage.Serialization.cs index 630e30f0c..ede30a237 100644 --- a/src/Custom/Chat/UserChatMessage.Serialization.cs +++ b/src/Custom/Chat/UserChatMessage.Serialization.cs @@ -12,86 +12,36 @@ void IJsonModel.Write(Utf8JsonWriter writer, ModelReaderWriterO => CustomSerializationHelpers.SerializeInstance(this, SerializeUserChatMessage, writer, options); internal static void SerializeUserChatMessage(UserChatMessage instance, Utf8JsonWriter writer, ModelReaderWriterOptions options) + => instance.WriteCore(writer, options); + + protected override void WriteCore(Utf8JsonWriter writer, ModelReaderWriterOptions options) { writer.WriteStartObject(); - if (Optional.IsDefined(instance.ParticipantName)) + if (Optional.IsDefined(ParticipantName)) { writer.WritePropertyName("name"u8); - writer.WriteStringValue(instance.ParticipantName); + writer.WriteStringValue(ParticipantName); } writer.WritePropertyName("role"u8); - writer.WriteStringValue(instance.Role); - if (Optional.IsCollectionDefined(instance.Content)) + writer.WriteStringValue(Role); + if (Optional.IsCollectionDefined(Content)) { writer.WritePropertyName("content"u8); - if (instance.Content.Count == 1 && !string.IsNullOrEmpty(instance.Content[0].Text)) + if (Content.Count == 1 && !string.IsNullOrEmpty(Content[0].Text)) { - writer.WriteStringValue(instance.Content[0].Text); + writer.WriteStringValue(Content[0].Text); } else { writer.WriteStartArray(); - foreach (var item in instance.Content) + foreach (var item in Content) { writer.WriteObjectValue(item, options); } writer.WriteEndArray(); } } - writer.WriteSerializedAdditionalRawData(instance._serializedAdditionalRawData, options); + writer.WriteSerializedAdditionalRawData(_serializedAdditionalRawData, options); writer.WriteEndObject(); } - - internal static UserChatMessage DeserializeUserChatMessage(JsonElement element, ModelReaderWriterOptions options = null) - { - options ??= ModelSerializationExtensions.WireOptions; - - if (element.ValueKind == JsonValueKind.Null) - { - return null; - } - string name = default; - string role = default; - IList content = default; - IDictionary serializedAdditionalRawData = default; - Dictionary rawDataDictionary = new Dictionary(); - foreach (var property in element.EnumerateObject()) - { - if (property.NameEquals("name"u8)) - { - name = property.Value.GetString(); - continue; - } - if (property.NameEquals("role"u8)) - { - role = property.Value.GetString(); - continue; - } - if (property.NameEquals("content"u8)) - { - if (property.Value.ValueKind == JsonValueKind.String) - { - List array = new List(); - array.Add(ChatMessageContentPart.CreateTextMessageContentPart(property.Value.GetString())); - continue; - } - else - { - List array = new List(); - foreach (var item in property.Value.EnumerateArray()) - { - array.Add(ChatMessageContentPart.DeserializeChatMessageContentPart(item, options)); - } - content = array; - continue; - } - } - if (true) - { - rawDataDictionary.Add(property.Name, BinaryData.FromString(property.Value.GetRawText())); - } - } - serializedAdditionalRawData = rawDataDictionary; - return new UserChatMessage(role, content ?? new ChangeTrackingList(), serializedAdditionalRawData, name); - } -} +} \ No newline at end of file diff --git a/src/Custom/FineTuning/Internal/GeneratorStubs.cs b/src/Custom/FineTuning/Internal/GeneratorStubs.cs index 01c6201bf..56c6f1eca 100644 --- a/src/Custom/FineTuning/Internal/GeneratorStubs.cs +++ b/src/Custom/FineTuning/Internal/GeneratorStubs.cs @@ -87,16 +87,4 @@ internal partial class InternalFinetuneCompletionRequestInput { } internal partial class InternalFinetuneChatRequestInput { } [CodeGenModel("FineTuneChatCompletionRequestAssistantMessage")] -internal partial class InternalFineTuneChatCompletionRequestAssistantMessage { } - -[CodeGenModel("FineTuneChatCompletionRequestAssistantMessageFunctionCall")] -internal partial class InternalFineTuneChatCompletionRequestAssistantMessageFunctionCall { } - -[CodeGenModel("FineTuneChatCompletionRequestAssistantMessageRole")] -internal readonly partial struct InternalFineTuneChatCompletionRequestAssistantMessageRole { } - -[CodeGenModel("FineTuneChatCompletionRequestAssistantMessageWeight")] -internal readonly partial struct InternalFineTuneChatCompletionRequestAssistantMessageWeight { } - -[CodeGenModel("FineTuneChatCompletionRequestFunctionMessage")] -internal partial class InternalFineTuneChatCompletionRequestFunctionMessage { } +internal partial class InternalFineTuneChatCompletionRequestAssistantMessage { } \ No newline at end of file diff --git a/src/Custom/VectorStores/VectorStoreClient.cs b/src/Custom/VectorStores/VectorStoreClient.cs index 02ea27b2d..e12c35737 100644 --- a/src/Custom/VectorStores/VectorStoreClient.cs +++ b/src/Custom/VectorStores/VectorStoreClient.cs @@ -16,6 +16,10 @@ namespace OpenAI.VectorStores; /// The service client for OpenAI vector store operations. /// [CodeGenClient("VectorStores")] +[CodeGenSuppress("CreateVectorStoreAsync", typeof(VectorStoreCreationOptions))] +[CodeGenSuppress("CreateVectorStore", typeof(VectorStoreCreationOptions))] +[CodeGenSuppress("DeleteVectorStoreAsync", typeof(string))] +[CodeGenSuppress("DeleteVectorStore", typeof(string))] [CodeGenSuppress("GetVectorStoresAsync", typeof(int?), typeof(ListOrder?), typeof(string), typeof(string))] [CodeGenSuppress("GetVectorStores", typeof(int?), typeof(ListOrder?), typeof(string), typeof(string))] [CodeGenSuppress("GetVectorStoreFilesAsync", typeof(string), typeof(int?), typeof(ListOrder?), typeof(string), typeof(string), typeof(VectorStoreFileStatusFilter?))] diff --git a/src/Generated/Models/AssistantChatMessage.Serialization.cs b/src/Generated/Models/AssistantChatMessage.Serialization.cs index 1c9de8d9a..f0a4402f0 100644 --- a/src/Generated/Models/AssistantChatMessage.Serialization.cs +++ b/src/Generated/Models/AssistantChatMessage.Serialization.cs @@ -5,6 +5,7 @@ using System; using System.ClientModel; using System.ClientModel.Primitives; +using System.Collections.Generic; using System.Text.Json; namespace OpenAI.Chat @@ -23,6 +24,77 @@ AssistantChatMessage IJsonModel.Create(ref Utf8JsonReader return DeserializeAssistantChatMessage(document.RootElement, options); } + internal static AssistantChatMessage DeserializeAssistantChatMessage(JsonElement element, ModelReaderWriterOptions options = null) + { + options ??= ModelSerializationExtensions.WireOptions; + + if (element.ValueKind == JsonValueKind.Null) + { + return null; + } + string name = default; + IList toolCalls = default; + ChatFunctionCall functionCall = default; + string role = "assistant"; + IList content = default; + IDictionary serializedAdditionalRawData = default; + Dictionary rawDataDictionary = new Dictionary(); + foreach (var property in element.EnumerateObject()) + { + if (property.NameEquals("name"u8)) + { + name = property.Value.GetString(); + continue; + } + if (property.NameEquals("tool_calls"u8)) + { + if (property.Value.ValueKind == JsonValueKind.Null) + { + continue; + } + List array = new List(); + foreach (var item in property.Value.EnumerateArray()) + { + array.Add(ChatToolCall.DeserializeChatToolCall(item, options)); + } + toolCalls = array; + continue; + } + if (property.NameEquals("function_call"u8)) + { + if (property.Value.ValueKind == JsonValueKind.Null) + { + functionCall = null; + continue; + } + functionCall = ChatFunctionCall.DeserializeChatFunctionCall(property.Value, options); + continue; + } + if (property.NameEquals("role"u8)) + { + role = property.Value.GetString(); + continue; + } + if (property.NameEquals("content"u8)) + { + DeserializeContentValue(property, ref content); + continue; + } + if (true) + { + rawDataDictionary.Add(property.Name, BinaryData.FromString(property.Value.GetRawText())); + } + } + serializedAdditionalRawData = rawDataDictionary; + return new AssistantChatMessage( + role, + content ?? new ChangeTrackingList(), + serializedAdditionalRawData, + name, + toolCalls ?? new ChangeTrackingList(), + functionCall); + } + BinaryData IPersistableModel.Write(ModelReaderWriterOptions options) { var format = options.Format == "W" ? ((IPersistableModel)this).GetFormatFromOptions(options) : options.Format; diff --git a/src/Generated/Models/ChatMessage.Serialization.cs b/src/Generated/Models/ChatMessage.Serialization.cs index e383d789d..3d13375d1 100644 --- a/src/Generated/Models/ChatMessage.Serialization.cs +++ b/src/Generated/Models/ChatMessage.Serialization.cs @@ -6,6 +6,7 @@ using System.ClientModel; using System.ClientModel.Primitives; using System.Text.Json; +using OpenAI.FineTuning; namespace OpenAI.Chat { @@ -24,6 +25,29 @@ ChatMessage IJsonModel.Create(ref Utf8JsonReader reader, ModelReade return DeserializeChatMessage(document.RootElement, options); } + internal static ChatMessage DeserializeChatMessage(JsonElement element, ModelReaderWriterOptions options = null) + { + options ??= ModelSerializationExtensions.WireOptions; + + if (element.ValueKind == JsonValueKind.Null) + { + return null; + } + if (element.TryGetProperty("role", out JsonElement discriminator)) + { + switch (discriminator.GetString()) + { + case null: return InternalFineTuneChatCompletionRequestAssistantMessage.DeserializeInternalFineTuneChatCompletionRequestAssistantMessage(element, options); + case "assistant": return AssistantChatMessage.DeserializeAssistantChatMessage(element, options); + case "function": return FunctionChatMessage.DeserializeFunctionChatMessage(element, options); + case "system": return SystemChatMessage.DeserializeSystemChatMessage(element, options); + case "tool": return ToolChatMessage.DeserializeToolChatMessage(element, options); + case "user": return UserChatMessage.DeserializeUserChatMessage(element, options); + } + } + return UnknownChatMessage.DeserializeUnknownChatMessage(element, options); + } + BinaryData IPersistableModel.Write(ModelReaderWriterOptions options) { var format = options.Format == "W" ? ((IPersistableModel)this).GetFormatFromOptions(options) : options.Format; diff --git a/src/Generated/Models/CodeInterpreterToolDefinition.Serialization.cs b/src/Generated/Models/CodeInterpreterToolDefinition.Serialization.cs index 8a5d417f0..185798328 100644 --- a/src/Generated/Models/CodeInterpreterToolDefinition.Serialization.cs +++ b/src/Generated/Models/CodeInterpreterToolDefinition.Serialization.cs @@ -12,35 +12,6 @@ namespace OpenAI.Assistants { public partial class CodeInterpreterToolDefinition : IJsonModel { - void IJsonModel.Write(Utf8JsonWriter writer, ModelReaderWriterOptions options) - { - var format = options.Format == "W" ? ((IPersistableModel)this).GetFormatFromOptions(options) : options.Format; - if (format != "J") - { - throw new FormatException($"The model {nameof(CodeInterpreterToolDefinition)} does not support writing '{format}' format."); - } - - writer.WriteStartObject(); - writer.WritePropertyName("type"u8); - writer.WriteStringValue(Type); - if (true && _serializedAdditionalRawData != null) - { - foreach (var item in _serializedAdditionalRawData) - { - writer.WritePropertyName(item.Key); -#if NET6_0_OR_GREATER - writer.WriteRawValue(item.Value); -#else - using (JsonDocument document = JsonDocument.Parse(item.Value)) - { - JsonSerializer.Serialize(writer, document.RootElement); - } -#endif - } - } - writer.WriteEndObject(); - } - CodeInterpreterToolDefinition IJsonModel.Create(ref Utf8JsonReader reader, ModelReaderWriterOptions options) { var format = options.Format == "W" ? ((IPersistableModel)this).GetFormatFromOptions(options) : options.Format; diff --git a/src/Generated/Models/FileSearchToolDefinition.Serialization.cs b/src/Generated/Models/FileSearchToolDefinition.Serialization.cs index 8a0e5f63f..7adf16913 100644 --- a/src/Generated/Models/FileSearchToolDefinition.Serialization.cs +++ b/src/Generated/Models/FileSearchToolDefinition.Serialization.cs @@ -12,40 +12,6 @@ namespace OpenAI.Assistants { public partial class FileSearchToolDefinition : IJsonModel { - void IJsonModel.Write(Utf8JsonWriter writer, ModelReaderWriterOptions options) - { - var format = options.Format == "W" ? ((IPersistableModel)this).GetFormatFromOptions(options) : options.Format; - if (format != "J") - { - throw new FormatException($"The model {nameof(FileSearchToolDefinition)} does not support writing '{format}' format."); - } - - writer.WriteStartObject(); - if (Optional.IsDefined(_fileSearch)) - { - writer.WritePropertyName("file_search"u8); - writer.WriteObjectValue(_fileSearch, options); - } - writer.WritePropertyName("type"u8); - writer.WriteStringValue(Type); - if (true && _serializedAdditionalRawData != null) - { - foreach (var item in _serializedAdditionalRawData) - { - writer.WritePropertyName(item.Key); -#if NET6_0_OR_GREATER - writer.WriteRawValue(item.Value); -#else - using (JsonDocument document = JsonDocument.Parse(item.Value)) - { - JsonSerializer.Serialize(writer, document.RootElement); - } -#endif - } - } - writer.WriteEndObject(); - } - FileSearchToolDefinition IJsonModel.Create(ref Utf8JsonReader reader, ModelReaderWriterOptions options) { var format = options.Format == "W" ? ((IPersistableModel)this).GetFormatFromOptions(options) : options.Format; diff --git a/src/Generated/Models/FunctionToolDefinition.Serialization.cs b/src/Generated/Models/FunctionToolDefinition.Serialization.cs index bd6fbd65b..4c7ea47dd 100644 --- a/src/Generated/Models/FunctionToolDefinition.Serialization.cs +++ b/src/Generated/Models/FunctionToolDefinition.Serialization.cs @@ -12,37 +12,6 @@ namespace OpenAI.Assistants { public partial class FunctionToolDefinition : IJsonModel { - void IJsonModel.Write(Utf8JsonWriter writer, ModelReaderWriterOptions options) - { - var format = options.Format == "W" ? ((IPersistableModel)this).GetFormatFromOptions(options) : options.Format; - if (format != "J") - { - throw new FormatException($"The model {nameof(FunctionToolDefinition)} does not support writing '{format}' format."); - } - - writer.WriteStartObject(); - writer.WritePropertyName("function"u8); - writer.WriteObjectValue(_internalFunction, options); - writer.WritePropertyName("type"u8); - writer.WriteStringValue(Type); - if (true && _serializedAdditionalRawData != null) - { - foreach (var item in _serializedAdditionalRawData) - { - writer.WritePropertyName(item.Key); -#if NET6_0_OR_GREATER - writer.WriteRawValue(item.Value); -#else - using (JsonDocument document = JsonDocument.Parse(item.Value)) - { - JsonSerializer.Serialize(writer, document.RootElement); - } -#endif - } - } - writer.WriteEndObject(); - } - FunctionToolDefinition IJsonModel.Create(ref Utf8JsonReader reader, ModelReaderWriterOptions options) { var format = options.Format == "W" ? ((IPersistableModel)this).GetFormatFromOptions(options) : options.Format; diff --git a/src/Generated/Models/InternalFineTuneChatCompletionRequestAssistantMessage.Serialization.cs b/src/Generated/Models/InternalFineTuneChatCompletionRequestAssistantMessage.Serialization.cs index ba8506f4c..bfedc16a5 100644 --- a/src/Generated/Models/InternalFineTuneChatCompletionRequestAssistantMessage.Serialization.cs +++ b/src/Generated/Models/InternalFineTuneChatCompletionRequestAssistantMessage.Serialization.cs @@ -9,7 +9,7 @@ using System.Text.Json; using OpenAI.Chat; -namespace OpenAI.Internal.FineTuning +namespace OpenAI.FineTuning { internal partial class InternalFineTuneChatCompletionRequestAssistantMessage : IJsonModel { diff --git a/src/Generated/Models/InternalFineTuneChatCompletionRequestAssistantMessage.cs b/src/Generated/Models/InternalFineTuneChatCompletionRequestAssistantMessage.cs index 30d11dae2..51139e9f8 100644 --- a/src/Generated/Models/InternalFineTuneChatCompletionRequestAssistantMessage.cs +++ b/src/Generated/Models/InternalFineTuneChatCompletionRequestAssistantMessage.cs @@ -6,7 +6,7 @@ using System.Collections.Generic; using OpenAI.Chat; -namespace OpenAI.Internal.FineTuning +namespace OpenAI.FineTuning { internal partial class InternalFineTuneChatCompletionRequestAssistantMessage : AssistantChatMessage { diff --git a/src/Generated/Models/InternalFinetuneChatRequestInput.Serialization.cs b/src/Generated/Models/InternalFinetuneChatRequestInput.Serialization.cs index c9c7c274a..92ef9067f 100644 --- a/src/Generated/Models/InternalFinetuneChatRequestInput.Serialization.cs +++ b/src/Generated/Models/InternalFinetuneChatRequestInput.Serialization.cs @@ -9,7 +9,7 @@ using System.Text.Json; using OpenAI.Chat; -namespace OpenAI.Internal.FineTuning +namespace OpenAI.FineTuning { internal partial class InternalFinetuneChatRequestInput : IJsonModel { diff --git a/src/Generated/Models/InternalFinetuneChatRequestInput.cs b/src/Generated/Models/InternalFinetuneChatRequestInput.cs index 31815039d..ad1c6ca85 100644 --- a/src/Generated/Models/InternalFinetuneChatRequestInput.cs +++ b/src/Generated/Models/InternalFinetuneChatRequestInput.cs @@ -6,7 +6,7 @@ using System.Collections.Generic; using OpenAI.Chat; -namespace OpenAI.Internal.FineTuning +namespace OpenAI.FineTuning { internal partial class InternalFinetuneChatRequestInput { diff --git a/src/Generated/Models/InternalMessageImageFileContent.Serialization.cs b/src/Generated/Models/InternalMessageImageFileContent.Serialization.cs index 8a266515e..e71efedc9 100644 --- a/src/Generated/Models/InternalMessageImageFileContent.Serialization.cs +++ b/src/Generated/Models/InternalMessageImageFileContent.Serialization.cs @@ -12,37 +12,6 @@ namespace OpenAI.Assistants { internal partial class InternalMessageImageFileContent : IJsonModel { - void IJsonModel.Write(Utf8JsonWriter writer, ModelReaderWriterOptions options) - { - var format = options.Format == "W" ? ((IPersistableModel)this).GetFormatFromOptions(options) : options.Format; - if (format != "J") - { - throw new FormatException($"The model {nameof(InternalMessageImageFileContent)} does not support writing '{format}' format."); - } - - writer.WriteStartObject(); - writer.WritePropertyName("type"u8); - writer.WriteStringValue(_type); - writer.WritePropertyName("image_file"u8); - writer.WriteObjectValue(_imageFile, options); - if (true && _serializedAdditionalRawData != null) - { - foreach (var item in _serializedAdditionalRawData) - { - writer.WritePropertyName(item.Key); -#if NET6_0_OR_GREATER - writer.WriteRawValue(item.Value); -#else - using (JsonDocument document = JsonDocument.Parse(item.Value)) - { - JsonSerializer.Serialize(writer, document.RootElement); - } -#endif - } - } - writer.WriteEndObject(); - } - InternalMessageImageFileContent IJsonModel.Create(ref Utf8JsonReader reader, ModelReaderWriterOptions options) { var format = options.Format == "W" ? ((IPersistableModel)this).GetFormatFromOptions(options) : options.Format; diff --git a/src/Generated/Models/InternalMessageImageUrlContent.Serialization.cs b/src/Generated/Models/InternalMessageImageUrlContent.Serialization.cs index 07235cc0b..9c0dfe325 100644 --- a/src/Generated/Models/InternalMessageImageUrlContent.Serialization.cs +++ b/src/Generated/Models/InternalMessageImageUrlContent.Serialization.cs @@ -12,37 +12,6 @@ namespace OpenAI.Assistants { internal partial class InternalMessageImageUrlContent : IJsonModel { - void IJsonModel.Write(Utf8JsonWriter writer, ModelReaderWriterOptions options) - { - var format = options.Format == "W" ? ((IPersistableModel)this).GetFormatFromOptions(options) : options.Format; - if (format != "J") - { - throw new FormatException($"The model {nameof(InternalMessageImageUrlContent)} does not support writing '{format}' format."); - } - - writer.WriteStartObject(); - writer.WritePropertyName("type"u8); - writer.WriteStringValue(_type); - writer.WritePropertyName("image_url"u8); - writer.WriteObjectValue(_imageUrl, options); - if (true && _serializedAdditionalRawData != null) - { - foreach (var item in _serializedAdditionalRawData) - { - writer.WritePropertyName(item.Key); -#if NET6_0_OR_GREATER - writer.WriteRawValue(item.Value); -#else - using (JsonDocument document = JsonDocument.Parse(item.Value)) - { - JsonSerializer.Serialize(writer, document.RootElement); - } -#endif - } - } - writer.WriteEndObject(); - } - InternalMessageImageUrlContent IJsonModel.Create(ref Utf8JsonReader reader, ModelReaderWriterOptions options) { var format = options.Format == "W" ? ((IPersistableModel)this).GetFormatFromOptions(options) : options.Format; diff --git a/src/Generated/Models/InternalRequestMessageTextContent.Serialization.cs b/src/Generated/Models/InternalRequestMessageTextContent.Serialization.cs index 5c6117a77..21809e845 100644 --- a/src/Generated/Models/InternalRequestMessageTextContent.Serialization.cs +++ b/src/Generated/Models/InternalRequestMessageTextContent.Serialization.cs @@ -12,37 +12,6 @@ namespace OpenAI.Assistants { internal partial class InternalRequestMessageTextContent : IJsonModel { - void IJsonModel.Write(Utf8JsonWriter writer, ModelReaderWriterOptions options) - { - var format = options.Format == "W" ? ((IPersistableModel)this).GetFormatFromOptions(options) : options.Format; - if (format != "J") - { - throw new FormatException($"The model {nameof(InternalRequestMessageTextContent)} does not support writing '{format}' format."); - } - - writer.WriteStartObject(); - writer.WritePropertyName("type"u8); - writer.WriteStringValue(Type.ToString()); - writer.WritePropertyName("text"u8); - writer.WriteStringValue(InternalText); - if (true && _serializedAdditionalRawData != null) - { - foreach (var item in _serializedAdditionalRawData) - { - writer.WritePropertyName(item.Key); -#if NET6_0_OR_GREATER - writer.WriteRawValue(item.Value); -#else - using (JsonDocument document = JsonDocument.Parse(item.Value)) - { - JsonSerializer.Serialize(writer, document.RootElement); - } -#endif - } - } - writer.WriteEndObject(); - } - InternalRequestMessageTextContent IJsonModel.Create(ref Utf8JsonReader reader, ModelReaderWriterOptions options) { var format = options.Format == "W" ? ((IPersistableModel)this).GetFormatFromOptions(options) : options.Format; diff --git a/src/Generated/Models/InternalResponseMessageTextContent.Serialization.cs b/src/Generated/Models/InternalResponseMessageTextContent.Serialization.cs index 3d1ecacda..14afc8525 100644 --- a/src/Generated/Models/InternalResponseMessageTextContent.Serialization.cs +++ b/src/Generated/Models/InternalResponseMessageTextContent.Serialization.cs @@ -12,37 +12,6 @@ namespace OpenAI.Assistants { internal partial class InternalResponseMessageTextContent : IJsonModel { - void IJsonModel.Write(Utf8JsonWriter writer, ModelReaderWriterOptions options) - { - var format = options.Format == "W" ? ((IPersistableModel)this).GetFormatFromOptions(options) : options.Format; - if (format != "J") - { - throw new FormatException($"The model {nameof(InternalResponseMessageTextContent)} does not support writing '{format}' format."); - } - - writer.WriteStartObject(); - writer.WritePropertyName("type"u8); - writer.WriteStringValue(_type); - writer.WritePropertyName("text"u8); - writer.WriteObjectValue(_text, options); - if (true && _serializedAdditionalRawData != null) - { - foreach (var item in _serializedAdditionalRawData) - { - writer.WritePropertyName(item.Key); -#if NET6_0_OR_GREATER - writer.WriteRawValue(item.Value); -#else - using (JsonDocument document = JsonDocument.Parse(item.Value)) - { - JsonSerializer.Serialize(writer, document.RootElement); - } -#endif - } - } - writer.WriteEndObject(); - } - InternalResponseMessageTextContent IJsonModel.Create(ref Utf8JsonReader reader, ModelReaderWriterOptions options) { var format = options.Format == "W" ? ((IPersistableModel)this).GetFormatFromOptions(options) : options.Format; diff --git a/src/Generated/Models/MessageContent.Serialization.cs b/src/Generated/Models/MessageContent.Serialization.cs index 65d908fe3..8f0030793 100644 --- a/src/Generated/Models/MessageContent.Serialization.cs +++ b/src/Generated/Models/MessageContent.Serialization.cs @@ -11,33 +11,6 @@ namespace OpenAI.Assistants { public partial class MessageContent : IJsonModel { - void IJsonModel.Write(Utf8JsonWriter writer, ModelReaderWriterOptions options) - { - var format = options.Format == "W" ? ((IPersistableModel)this).GetFormatFromOptions(options) : options.Format; - if (format != "J") - { - throw new FormatException($"The model {nameof(MessageContent)} does not support writing '{format}' format."); - } - - writer.WriteStartObject(); - if (true && _serializedAdditionalRawData != null) - { - foreach (var item in _serializedAdditionalRawData) - { - writer.WritePropertyName(item.Key); -#if NET6_0_OR_GREATER - writer.WriteRawValue(item.Value); -#else - using (JsonDocument document = JsonDocument.Parse(item.Value)) - { - JsonSerializer.Serialize(writer, document.RootElement); - } -#endif - } - } - writer.WriteEndObject(); - } - MessageContent IJsonModel.Create(ref Utf8JsonReader reader, ModelReaderWriterOptions options) { var format = options.Format == "W" ? ((IPersistableModel)this).GetFormatFromOptions(options) : options.Format; diff --git a/src/Generated/Models/SystemChatMessage.Serialization.cs b/src/Generated/Models/SystemChatMessage.Serialization.cs index 21d3382e0..5f2623f01 100644 --- a/src/Generated/Models/SystemChatMessage.Serialization.cs +++ b/src/Generated/Models/SystemChatMessage.Serialization.cs @@ -5,6 +5,7 @@ using System; using System.ClientModel; using System.ClientModel.Primitives; +using System.Collections.Generic; using System.Text.Json; namespace OpenAI.Chat @@ -23,6 +24,45 @@ SystemChatMessage IJsonModel.Create(ref Utf8JsonReader reader return DeserializeSystemChatMessage(document.RootElement, options); } + internal static SystemChatMessage DeserializeSystemChatMessage(JsonElement element, ModelReaderWriterOptions options = null) + { + options ??= ModelSerializationExtensions.WireOptions; + + if (element.ValueKind == JsonValueKind.Null) + { + return null; + } + string name = default; + string role = default; + IList content = default; + IDictionary serializedAdditionalRawData = default; + Dictionary rawDataDictionary = new Dictionary(); + foreach (var property in element.EnumerateObject()) + { + if (property.NameEquals("name"u8)) + { + name = property.Value.GetString(); + continue; + } + if (property.NameEquals("role"u8)) + { + role = property.Value.GetString(); + continue; + } + if (property.NameEquals("content"u8)) + { + DeserializeContentValue(property, ref content); + continue; + } + if (true) + { + rawDataDictionary.Add(property.Name, BinaryData.FromString(property.Value.GetRawText())); + } + } + serializedAdditionalRawData = rawDataDictionary; + return new SystemChatMessage(role, content ?? new ChangeTrackingList(), serializedAdditionalRawData, name); + } + BinaryData IPersistableModel.Write(ModelReaderWriterOptions options) { var format = options.Format == "W" ? ((IPersistableModel)this).GetFormatFromOptions(options) : options.Format; diff --git a/src/Generated/Models/ToolChatMessage.Serialization.cs b/src/Generated/Models/ToolChatMessage.Serialization.cs index 64fe96723..422e245e3 100644 --- a/src/Generated/Models/ToolChatMessage.Serialization.cs +++ b/src/Generated/Models/ToolChatMessage.Serialization.cs @@ -5,6 +5,7 @@ using System; using System.ClientModel; using System.ClientModel.Primitives; +using System.Collections.Generic; using System.Text.Json; namespace OpenAI.Chat @@ -23,6 +24,45 @@ ToolChatMessage IJsonModel.Create(ref Utf8JsonReader reader, Mo return DeserializeToolChatMessage(document.RootElement, options); } + internal static ToolChatMessage DeserializeToolChatMessage(JsonElement element, ModelReaderWriterOptions options = null) + { + options ??= ModelSerializationExtensions.WireOptions; + + if (element.ValueKind == JsonValueKind.Null) + { + return null; + } + string toolCallId = default; + string role = default; + IList content = default; + IDictionary serializedAdditionalRawData = default; + Dictionary rawDataDictionary = new Dictionary(); + foreach (var property in element.EnumerateObject()) + { + if (property.NameEquals("tool_call_id"u8)) + { + toolCallId = property.Value.GetString(); + continue; + } + if (property.NameEquals("role"u8)) + { + role = property.Value.GetString(); + continue; + } + if (property.NameEquals("content"u8)) + { + DeserializeContentValue(property, ref content); + continue; + } + if (true) + { + rawDataDictionary.Add(property.Name, BinaryData.FromString(property.Value.GetRawText())); + } + } + serializedAdditionalRawData = rawDataDictionary; + return new ToolChatMessage(role, content ?? new ChangeTrackingList(), serializedAdditionalRawData, toolCallId); + } + BinaryData IPersistableModel.Write(ModelReaderWriterOptions options) { var format = options.Format == "W" ? ((IPersistableModel)this).GetFormatFromOptions(options) : options.Format; diff --git a/src/Generated/Models/ToolDefinition.Serialization.cs b/src/Generated/Models/ToolDefinition.Serialization.cs index cac538270..443582baf 100644 --- a/src/Generated/Models/ToolDefinition.Serialization.cs +++ b/src/Generated/Models/ToolDefinition.Serialization.cs @@ -12,35 +12,6 @@ namespace OpenAI.Assistants [PersistableModelProxy(typeof(UnknownAssistantToolDefinition))] public partial class ToolDefinition : IJsonModel { - void IJsonModel.Write(Utf8JsonWriter writer, ModelReaderWriterOptions options) - { - var format = options.Format == "W" ? ((IPersistableModel)this).GetFormatFromOptions(options) : options.Format; - if (format != "J") - { - throw new FormatException($"The model {nameof(ToolDefinition)} does not support writing '{format}' format."); - } - - writer.WriteStartObject(); - writer.WritePropertyName("type"u8); - writer.WriteStringValue(Type); - if (true && _serializedAdditionalRawData != null) - { - foreach (var item in _serializedAdditionalRawData) - { - writer.WritePropertyName(item.Key); -#if NET6_0_OR_GREATER - writer.WriteRawValue(item.Value); -#else - using (JsonDocument document = JsonDocument.Parse(item.Value)) - { - JsonSerializer.Serialize(writer, document.RootElement); - } -#endif - } - } - writer.WriteEndObject(); - } - ToolDefinition IJsonModel.Create(ref Utf8JsonReader reader, ModelReaderWriterOptions options) { var format = options.Format == "W" ? ((IPersistableModel)this).GetFormatFromOptions(options) : options.Format; diff --git a/src/Generated/Models/UnknownAssistantToolDefinition.Serialization.cs b/src/Generated/Models/UnknownAssistantToolDefinition.Serialization.cs index 860baf6eb..222bf3d9d 100644 --- a/src/Generated/Models/UnknownAssistantToolDefinition.Serialization.cs +++ b/src/Generated/Models/UnknownAssistantToolDefinition.Serialization.cs @@ -12,35 +12,6 @@ namespace OpenAI.Assistants { internal partial class UnknownAssistantToolDefinition : IJsonModel { - void IJsonModel.Write(Utf8JsonWriter writer, ModelReaderWriterOptions options) - { - var format = options.Format == "W" ? ((IPersistableModel)this).GetFormatFromOptions(options) : options.Format; - if (format != "J") - { - throw new FormatException($"The model {nameof(ToolDefinition)} does not support writing '{format}' format."); - } - - writer.WriteStartObject(); - writer.WritePropertyName("type"u8); - writer.WriteStringValue(Type); - if (true && _serializedAdditionalRawData != null) - { - foreach (var item in _serializedAdditionalRawData) - { - writer.WritePropertyName(item.Key); -#if NET6_0_OR_GREATER - writer.WriteRawValue(item.Value); -#else - using (JsonDocument document = JsonDocument.Parse(item.Value)) - { - JsonSerializer.Serialize(writer, document.RootElement); - } -#endif - } - } - writer.WriteEndObject(); - } - ToolDefinition IJsonModel.Create(ref Utf8JsonReader reader, ModelReaderWriterOptions options) { var format = options.Format == "W" ? ((IPersistableModel)this).GetFormatFromOptions(options) : options.Format; diff --git a/src/Generated/Models/UserChatMessage.Serialization.cs b/src/Generated/Models/UserChatMessage.Serialization.cs index 06abd5c9e..8a484185d 100644 --- a/src/Generated/Models/UserChatMessage.Serialization.cs +++ b/src/Generated/Models/UserChatMessage.Serialization.cs @@ -5,6 +5,7 @@ using System; using System.ClientModel; using System.ClientModel.Primitives; +using System.Collections.Generic; using System.Text.Json; namespace OpenAI.Chat @@ -23,6 +24,45 @@ UserChatMessage IJsonModel.Create(ref Utf8JsonReader reader, Mo return DeserializeUserChatMessage(document.RootElement, options); } + internal static UserChatMessage DeserializeUserChatMessage(JsonElement element, ModelReaderWriterOptions options = null) + { + options ??= ModelSerializationExtensions.WireOptions; + + if (element.ValueKind == JsonValueKind.Null) + { + return null; + } + string name = default; + string role = default; + IList content = default; + IDictionary serializedAdditionalRawData = default; + Dictionary rawDataDictionary = new Dictionary(); + foreach (var property in element.EnumerateObject()) + { + if (property.NameEquals("name"u8)) + { + name = property.Value.GetString(); + continue; + } + if (property.NameEquals("role"u8)) + { + role = property.Value.GetString(); + continue; + } + if (property.NameEquals("content"u8)) + { + DeserializeContentValue(property, ref content); + continue; + } + if (true) + { + rawDataDictionary.Add(property.Name, BinaryData.FromString(property.Value.GetRawText())); + } + } + serializedAdditionalRawData = rawDataDictionary; + return new UserChatMessage(role, content ?? new ChangeTrackingList(), serializedAdditionalRawData, name); + } + BinaryData IPersistableModel.Write(ModelReaderWriterOptions options) { var format = options.Format == "W" ? ((IPersistableModel)this).GetFormatFromOptions(options) : options.Format; diff --git a/tests/GitHubTests.cs b/tests/GitHubTests.cs index 67fe31d03..cdd84d29e 100644 --- a/tests/GitHubTests.cs +++ b/tests/GitHubTests.cs @@ -7,6 +7,7 @@ public partial class GitHubTests { [Test(Description = "Test that we can use a GitHub secret")] [Category("Online")] + [Ignore("Placeholder")] public void CanUseGitHubSecret() { string gitHubSecretString = Environment.GetEnvironmentVariable("SECRET_VALUE"); @@ -15,6 +16,7 @@ public void CanUseGitHubSecret() [Test(Description = "That that we can run some tests without secrets")] [Category("Offline")] + [Ignore("Placeholder")] public void CanTestWithoutSecretAccess() { int result = 2 + 1;