-
Notifications
You must be signed in to change notification settings - Fork 849
Add AIJsonSchemaCreateOptions.ParameterDescriptions #7068
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
To enable dynamically providing parameter descriptions.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR adds a new ParameterDescriptions property to AIJsonSchemaCreateOptions to enable dynamically providing parameter descriptions for function schemas. This allows callers to override or supplement the descriptions that would normally be derived from DescriptionAttribute annotations on method parameters.
Key Changes
- Added
IReadOnlyDictionary<string, string>? ParameterDescriptionsproperty toAIJsonSchemaCreateOptionsclass - Updated
CreateFunctionJsonSchemaimplementation to checkParameterDescriptionsdictionary before falling back toDescriptionAttribute - Added comprehensive test coverage for the new functionality including override, addition, null handling, and edge cases
Reviewed Changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
src/Libraries/Microsoft.Extensions.AI.Abstractions/Utilities/AIJsonSchemaCreateOptions.cs |
Added new ParameterDescriptions property with XML documentation explaining override behavior |
src/Libraries/Microsoft.Extensions.AI.Abstractions/Utilities/AIJsonUtilities.Schema.Create.cs |
Implemented parameter description resolution logic that prioritizes dictionary values over attributes |
test/Libraries/Microsoft.Extensions.AI.Abstractions.Tests/Utilities/AIJsonUtilitiesTests.cs |
Added structural equality test case and six new test methods covering various scenarios including overrides, null/empty dictionaries, and non-existent parameters |
src/Libraries/Microsoft.Extensions.AI.Abstractions/Microsoft.Extensions.AI.Abstractions.json |
Updated API baseline manifest to include the new public property |
src/Libraries/Microsoft.Extensions.AI.Abstractions/Utilities/AIJsonSchemaCreateOptions.cs
Outdated
Show resolved
Hide resolved
… 10.1.0 (#90) Updated [Microsoft.Extensions.Http.Resilience](https://github.com/dotnet/extensions) from 10.0.0 to 10.1.0. <details> <summary>Release notes</summary> _Sourced from [Microsoft.Extensions.Http.Resilience's releases](https://github.com/dotnet/extensions/releases)._ ## 10.1.0 ## What's Changed * [MEDI] start producing NuGet packages by @adamsitnik in dotnet/extensions#7016 * Deprecate AddServiceLogEnricher method with its overloads, introduce replacements by @evgenyfedorov2 in dotnet/extensions#6529 * Update version numbers in AI changelogs by @stephentoub in dotnet/extensions#7008 * HttpDependencyMetadataResolver class for the custom downstream dependency metadata resolution by @rainsxng in dotnet/extensions#6880 * [MEDI] Don't stop document processing on enricher error by @adamsitnik in dotnet/extensions#7005 * [MEDI] add PackageTags by @adamsitnik in dotnet/extensions#7022 * Add a new Microsoft.Agents.AI.Templates package with an aiagent-webapi project template by @jeffhandley in dotnet/extensions#7014 * Add MarkItDownMcpReader for MCP server support by @Copilot in dotnet/extensions#7025 * Image generation tool by @ericstj in dotnet/extensions#6749 * Make MEAI packages use 10.0 runtime packages by @ericstj in dotnet/extensions#7028 * When using latest .NET packages, force System.Numerics.Tensors to 10.0 (for MEAI) by @jeffhandley in dotnet/extensions#7031 * [main] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in dotnet/extensions#7032 * Use DataContent from Microsoft.Extensions.AI for data URI generation by @Copilot in dotnet/extensions#7027 * Add AmbientMetadata.Build component by @evgenyfedorov2 in dotnet/extensions#6623 * Introduce SectionChunker by @KrystofS in dotnet/extensions#7015 * Use `Microsoft.Extensions.DataIngestion` in AI Chat Web template by @MackinnonBuck in dotnet/extensions#7023 * Add Agent Framework DevUI into the aiagent-webapi template by @jeffhandley in dotnet/extensions#7026 * Adjust cgroupv2 drive format check for .NET 10 and higher by @KeterSCP in dotnet/extensions#6877 * Replace custom IAsyncEnumerable extensions with System.Linq.AsyncEnumerable by @Copilot in dotnet/extensions#7039 * Add Image Detail support for Image DataContent to OpenAIResponsesChatClient. by @rogerbarreto in dotnet/extensions#7042 * [main] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in dotnet/extensions#7043 * Update to OpenAI 2.7.0 by @stephentoub in dotnet/extensions#7044 * Merge changes from internal by @joperezr in dotnet/extensions#7038 * Merge rel10 by @joperezr in dotnet/extensions#7047 * Disable AzDO dependabot by @mmitche in dotnet/extensions#7045 * Bump version to 10.1.0 for next development cycle by @Copilot in dotnet/extensions#7018 * Update AI Chat Web template to Aspire 13.0.0 by @Copilot in dotnet/extensions#7036 * Fix flaky SetupSequence tests by @amadeuszl in dotnet/extensions#7051 * Update AI changelogs by @stephentoub in dotnet/extensions#7037 * Update project template dependencies by @jeffhandley in dotnet/extensions#7064 * Reset Microsoft.Agents.AI.ProjectTemplates versioning by @jeffhandley in dotnet/extensions#7034 * Fix operator precedence bug in ValidateSchemaDocument causing rejection of valid boolean schemas by @Copilot in dotnet/extensions#7066 * Use JsonElement.Parse for JsonElement conversions in AI libraries by @Copilot in dotnet/extensions#7067 * .NET: Change type of ContinuationToken properties by @SergeyMenshykh in dotnet/extensions#7050 * Fix OpenAIEmbeddingGenerator to handle missing usage data by @stephentoub in dotnet/extensions#7074 * Add AIJsonSchemaCreateOptions.ParameterDescriptions by @stephentoub in dotnet/extensions#7068 * Improve FunctionInvokingChatClient's awareness of agents by @stephentoub in dotnet/extensions#7030 * Add Kubernetes based Resource Monitoring by @amadeuszl in dotnet/extensions#6748 * Ensure all ResponseItems are yielded in AIContent by @crickman in dotnet/extensions#7063 * Add CHANGELOG.md files for Microsoft.Extensions.DataIngestion* projects by @Copilot in dotnet/extensions#7072 * Assign authors only on PR creation by @sebastienros in dotnet/extensions#7083 * Update to .NET 10 GA release by @Copilot in dotnet/extensions#7078 * Fix package references from M.E.AI packages by @stephentoub in dotnet/extensions#7076 * Workaround OpenAI bug with streaming error events by @stephentoub in dotnet/extensions#7085 * Update AI changelogs for 10.0.1 release by @stephentoub in dotnet/extensions#7086 * Add metering for baseline resource quotas by @amadeuszl in dotnet/extensions#7080 * Update Microsoft.VisualStudio.Threading.Analyzers to latest by @stephentoub in dotnet/extensions#7091 * Update SonarAnalyzer.CSharp to latest by @stephentoub in dotnet/extensions#7092 * Remove Microsoft.Extensions.AI.AzureAIInference by @stephentoub in dotnet/extensions#7096 ... (truncated) Commits viewable in [compare view](dotnet/extensions@v10.0.0...v10.1). </details> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…o 10.1.0 (#91) Updated [Microsoft.Extensions.ServiceDiscovery](https://github.com/dotnet/extensions) from 10.0.0 to 10.1.0. <details> <summary>Release notes</summary> _Sourced from [Microsoft.Extensions.ServiceDiscovery's releases](https://github.com/dotnet/extensions/releases)._ ## 10.1.0 ## What's Changed * [MEDI] start producing NuGet packages by @adamsitnik in dotnet/extensions#7016 * Deprecate AddServiceLogEnricher method with its overloads, introduce replacements by @evgenyfedorov2 in dotnet/extensions#6529 * Update version numbers in AI changelogs by @stephentoub in dotnet/extensions#7008 * HttpDependencyMetadataResolver class for the custom downstream dependency metadata resolution by @rainsxng in dotnet/extensions#6880 * [MEDI] Don't stop document processing on enricher error by @adamsitnik in dotnet/extensions#7005 * [MEDI] add PackageTags by @adamsitnik in dotnet/extensions#7022 * Add a new Microsoft.Agents.AI.Templates package with an aiagent-webapi project template by @jeffhandley in dotnet/extensions#7014 * Add MarkItDownMcpReader for MCP server support by @Copilot in dotnet/extensions#7025 * Image generation tool by @ericstj in dotnet/extensions#6749 * Make MEAI packages use 10.0 runtime packages by @ericstj in dotnet/extensions#7028 * When using latest .NET packages, force System.Numerics.Tensors to 10.0 (for MEAI) by @jeffhandley in dotnet/extensions#7031 * [main] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in dotnet/extensions#7032 * Use DataContent from Microsoft.Extensions.AI for data URI generation by @Copilot in dotnet/extensions#7027 * Add AmbientMetadata.Build component by @evgenyfedorov2 in dotnet/extensions#6623 * Introduce SectionChunker by @KrystofS in dotnet/extensions#7015 * Use `Microsoft.Extensions.DataIngestion` in AI Chat Web template by @MackinnonBuck in dotnet/extensions#7023 * Add Agent Framework DevUI into the aiagent-webapi template by @jeffhandley in dotnet/extensions#7026 * Adjust cgroupv2 drive format check for .NET 10 and higher by @KeterSCP in dotnet/extensions#6877 * Replace custom IAsyncEnumerable extensions with System.Linq.AsyncEnumerable by @Copilot in dotnet/extensions#7039 * Add Image Detail support for Image DataContent to OpenAIResponsesChatClient. by @rogerbarreto in dotnet/extensions#7042 * [main] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in dotnet/extensions#7043 * Update to OpenAI 2.7.0 by @stephentoub in dotnet/extensions#7044 * Merge changes from internal by @joperezr in dotnet/extensions#7038 * Merge rel10 by @joperezr in dotnet/extensions#7047 * Disable AzDO dependabot by @mmitche in dotnet/extensions#7045 * Bump version to 10.1.0 for next development cycle by @Copilot in dotnet/extensions#7018 * Update AI Chat Web template to Aspire 13.0.0 by @Copilot in dotnet/extensions#7036 * Fix flaky SetupSequence tests by @amadeuszl in dotnet/extensions#7051 * Update AI changelogs by @stephentoub in dotnet/extensions#7037 * Update project template dependencies by @jeffhandley in dotnet/extensions#7064 * Reset Microsoft.Agents.AI.ProjectTemplates versioning by @jeffhandley in dotnet/extensions#7034 * Fix operator precedence bug in ValidateSchemaDocument causing rejection of valid boolean schemas by @Copilot in dotnet/extensions#7066 * Use JsonElement.Parse for JsonElement conversions in AI libraries by @Copilot in dotnet/extensions#7067 * .NET: Change type of ContinuationToken properties by @SergeyMenshykh in dotnet/extensions#7050 * Fix OpenAIEmbeddingGenerator to handle missing usage data by @stephentoub in dotnet/extensions#7074 * Add AIJsonSchemaCreateOptions.ParameterDescriptions by @stephentoub in dotnet/extensions#7068 * Improve FunctionInvokingChatClient's awareness of agents by @stephentoub in dotnet/extensions#7030 * Add Kubernetes based Resource Monitoring by @amadeuszl in dotnet/extensions#6748 * Ensure all ResponseItems are yielded in AIContent by @crickman in dotnet/extensions#7063 * Add CHANGELOG.md files for Microsoft.Extensions.DataIngestion* projects by @Copilot in dotnet/extensions#7072 * Assign authors only on PR creation by @sebastienros in dotnet/extensions#7083 * Update to .NET 10 GA release by @Copilot in dotnet/extensions#7078 * Fix package references from M.E.AI packages by @stephentoub in dotnet/extensions#7076 * Workaround OpenAI bug with streaming error events by @stephentoub in dotnet/extensions#7085 * Update AI changelogs for 10.0.1 release by @stephentoub in dotnet/extensions#7086 * Add metering for baseline resource quotas by @amadeuszl in dotnet/extensions#7080 * Update Microsoft.VisualStudio.Threading.Analyzers to latest by @stephentoub in dotnet/extensions#7091 * Update SonarAnalyzer.CSharp to latest by @stephentoub in dotnet/extensions#7092 * Remove Microsoft.Extensions.AI.AzureAIInference by @stephentoub in dotnet/extensions#7096 ... (truncated) Commits viewable in [compare view](dotnet/extensions@v10.0.0...v10.1). </details> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Rene Bentes Pinto <[email protected]>
To enable dynamically providing parameter descriptions.
Microsoft Reviewers: Open in CodeFlow