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);
}
}