-
Notifications
You must be signed in to change notification settings - Fork 4.3k
Labels
.NETIssue or Pull requests regarding .NET codeIssue or Pull requests regarding .NET codeai connectorAnything related to AI connectorsAnything related to AI connectors
Description
The property is documented to let you store a System.Type into it:
semantic-kernel/dotnet/src/Connectors/Connectors.OpenAI/Settings/OpenAIPromptExecutionSettings.cs
Lines 176 to 180 in 27e8457
| /// <para>- <see cref="Type"/> object, which will be used to automatically create a JSON schema.</para> | |
| /// </remarks> | |
| [JsonPropertyName("response_format")] | |
| [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] | |
| public object? ResponseFormat |
But System.Type is not JSON serializable. As such, anyone using that capability then breaks any scenario that depends on being able to serialize the PromptExecutionSettings, including AsChatCompletionService.
Repro:
using Microsoft.SemanticKernel.Connectors.OpenAI;
using System.Text.Json;
OpenAIPromptExecutionSettings s = new()
{
ResponseFormat = typeof(MyClass),
};
Console.WriteLine(JsonSerializer.Serialize(s));
class MyClass
{
public int MyProperty { get; set; }
}Output:
Unhandled exception. System.NotSupportedException: Serialization and deserialization of 'System.RuntimeType' instances is not supported. The unsupported member type is located on type 'System.Object'. Path: $.ResponseFormat.
---> System.NotSupportedException: Serialization and deserialization of 'System.RuntimeType' instances is not supported.
at System.Text.Json.Serialization.Converters.UnsupportedTypeConverter`1.Write(Utf8JsonWriter writer, T value, JsonSerializerOptions options)
at System.Text.Json.Serialization.JsonConverter`1.TryWrite(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
at System.Text.Json.Serialization.JsonConverter`1.TryWriteAsObject(Utf8JsonWriter writer, Object value, JsonSerializerOptions options, WriteStack& state)
at System.Text.Json.Serialization.JsonConverter`1.TryWrite(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
at System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1.GetMemberAndWriteJson(Object obj, WriteStack& state, Utf8JsonWriter writer)
at System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryWrite(Utf8JsonWriter writer, T value, JsonSerializerOptions options, WriteStack& state)
at System.Text.Json.Serialization.JsonConverter`1.TryWrite(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
at System.Text.Json.Serialization.JsonConverter`1.WriteCore(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
--- End of inner exception stack trace ---
at System.Text.Json.ThrowHelper.ThrowNotSupportedException(WriteStack& state, Exception innerException)
at System.Text.Json.Serialization.JsonConverter`1.WriteCore(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
at System.Text.Json.Serialization.Metadata.JsonTypeInfo`1.Serialize(Utf8JsonWriter writer, T& rootValue, Object rootValueBoxed)
at System.Text.Json.JsonSerializer.WriteString[TValue](TValue& value, JsonTypeInfo`1 jsonTypeInfo)
at System.Text.Json.JsonSerializer.Serialize[TValue](TValue value, JsonSerializerOptions options)
at Program.<Main>$(String[] args)
Metadata
Metadata
Assignees
Labels
.NETIssue or Pull requests regarding .NET codeIssue or Pull requests regarding .NET codeai connectorAnything related to AI connectorsAnything related to AI connectors
Type
Projects
Status
Bug