in src/Custom/Chat/ChatMessageContentPart.Serialization.cs [50:108]
internal static ChatMessageContentPart DeserializeChatMessageContentPart(JsonElement element, ModelReaderWriterOptions options = null)
{
options ??= ModelSerializationExtensions.WireOptions;
if (element.ValueKind == JsonValueKind.Null)
{
return null;
}
ChatMessageContentPartKind kind = default;
string text = default;
string refusal = default;
InternalChatCompletionRequestMessageContentPartImageImageUrl imageUri = default;
InternalChatCompletionRequestMessageContentPartAudioInputAudio inputAudio = default;
InternalChatCompletionRequestMessageContentPartFileFile fileFile = default;
IDictionary<string, BinaryData> serializedAdditionalRawData = default;
Dictionary<string, BinaryData> rawDataDictionary = new Dictionary<string, BinaryData>();
foreach (var property in element.EnumerateObject())
{
if (property.NameEquals("type"u8))
{
kind = property.Value.GetString().ToChatMessageContentPartKind();
continue;
}
if (property.NameEquals("text"u8))
{
text = property.Value.GetString();
continue;
}
if (property.NameEquals("image_url"u8))
{
imageUri = InternalChatCompletionRequestMessageContentPartImageImageUrl.DeserializeInternalChatCompletionRequestMessageContentPartImageImageUrl(property.Value, options);
continue;
}
if (property.NameEquals("refusal"u8))
{
refusal = property.Value.GetString();
continue;
}
if (property.NameEquals("input_audio"u8))
{
inputAudio = InternalChatCompletionRequestMessageContentPartAudioInputAudio
.DeserializeInternalChatCompletionRequestMessageContentPartAudioInputAudio(property.Value, options);
continue;
}
if (property.NameEquals("file"u8))
{
fileFile = InternalChatCompletionRequestMessageContentPartFileFile
.DeserializeInternalChatCompletionRequestMessageContentPartFileFile(property.Value, options);
continue;
}
if (true)
{
rawDataDictionary.Add(property.Name, BinaryData.FromString(property.Value.GetRawText()));
}
}
serializedAdditionalRawData = rawDataDictionary;
return new ChatMessageContentPart(kind, text, imageUri, refusal, inputAudio, fileFile, serializedAdditionalRawData);
}