internal static ChatToolChoice DeserializeChatToolChoice()

in src/Custom/Chat/ChatToolChoice.Serialization.cs [32:80]


    internal static ChatToolChoice DeserializeChatToolChoice(JsonElement element, ModelReaderWriterOptions options = null)
    {
        options ??= ModelSerializationExtensions.WireOptions;

        if (element.ValueKind == JsonValueKind.Null)
        {
            return null;
        }
        else if (element.ValueKind == JsonValueKind.String)
        {
            return new ChatToolChoice(
                predefined: true,
                predefinedValue: element.ToString(),
                type: null,
                function: null,
                serializedAdditionalRawData: null);
        }
        else
        {
            InternalChatCompletionNamedToolChoiceType type = default;
            InternalChatCompletionNamedToolChoiceFunction function = 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))
                {
                    type = new InternalChatCompletionNamedToolChoiceType(property.Value.GetString());
                    continue;
                }
                if (property.NameEquals("function"u8))
                {
                    function = InternalChatCompletionNamedToolChoiceFunction.DeserializeInternalChatCompletionNamedToolChoiceFunction(property.Value, options);
                    continue;
                }
                if (true)
                {
                    rawDataDictionary.Add(property.Name, BinaryData.FromString(property.Value.GetRawText()));
                }
            }
            serializedAdditionalRawData = rawDataDictionary;
            return new ChatToolChoice(
                predefined: false,
                predefinedValue: null,
                type: InternalChatCompletionNamedToolChoiceType.Function,
                function: new InternalChatCompletionNamedToolChoiceFunction(function.Name),
                serializedAdditionalRawData: rawDataDictionary);
        }
    }