Closed
Description
Say I have such a tool input object class
public class TemporalData
{
[JsonPropertyName("dateTimeValue")]
public DateTime DateTimeValue { get; set; }
[JsonPropertyName("dateTimeOffsetValue")]
public DateTimeOffset DateTimeOffsetValue { get; set; }
[JsonPropertyName("timeSpanValue")]
public TimeSpan TimeSpanValue { get; set; }
}
Its corresponding input schema (auto-generated by sdk 0.3.0, no hack here)is
{
"name": "test",
"description": "Test tool that accepts a TemporalData object with DateTime, DateTimeOffset, and TimeSpan properties.",
"inputSchema": {
"type": "object",
"properties": {
"input": {
"description": "A TemporalData object with temporal properties",
"type": "object",
"properties": {
"dateTimeValue": {
"type": "string"
},
"dateTimeOffsetValue": {
"type": "string"
},
"timeSpanValue": {
"$comment": "Represents a System.TimeSpan value.",
"type": "string"
}
}
}
},
"required": [
"input"
]
}
}
Three date time related types are there
DateTime
- dateTimeValueDateTimeOffSet
- dateTimeOffsetValueTimeSpan
- timeSpanValue
As you can see, only TimeSpan type has been added a comment"$comment": "Represents a System.TimeSpan value.",
automatically.
However, it's super important for AI agent to understand the field type especically when the type isn't supported in JSON natively like datetime, so sdk should provide a way to allow me to set a JsonSchemaGeneratorOptions to add a TypeMapping,
options.TypeMappings.Add(
new JsonSchemaTypeMapping<DateTime>((_, schema) =>
{
schema.Type = JsonSchemaType.String;
schema.Format = "date-time";
schema.Comment = "Represents a System.DateTime";
return true;
})
);
Then for DateTime type in inputSchema, it'll be like
"dateTimeValue": {
"$comment": "Represents a System.DateTime",
"type": "string",
"format": "date-time"
}
Let me know if this makes sense