Skip to content

Releases: dotnet/extensions

v10.4.1

18 Mar 21:03
b797b53

Choose a tag to compare

This release of the Microsoft.Extensions.AI packages adds new experimental APIs for Realtime client sessions and Text-to-Speech, along with OpenTelemetry and middleware improvements.

Packages in this release

Package Version
Microsoft.Extensions.AI.Abstractions 10.4.1
Microsoft.Extensions.AI 10.4.1
Microsoft.Extensions.AI.OpenAI 10.4.1

Experimental API Changes

New Experimental APIs

  • New experimental API: Realtime Client Sessions #7285 and #7399
  • New experimental API: Text-to-Speech Client #7381

Changes to Experimental APIs

  • Hosted File Download Stream: write-path methods now explicitly throw NotSupportedException #7394

What's Changed

AI

  • Add ITextToSpeechClient abstraction, middleware, and OpenAI implementation #7381 by @stephentoub
  • Realtime Client Proposal #7285 by @tarekgh
  • Add VoiceActivityDetection options to realtime session abstractions #7399 by @tarekgh
  • Make UriContent mediaType parameter optional with inference from URI file extension #7398 by @stephentoub (co-authored by @Copilot)
  • Emit gen_ai.client.operation.exception via ILogger LoggerMessage on OpenTelemetry instrumentation classes #7379 by @stephentoub (co-authored by @Copilot)
  • Support invoke_workflow as an equivalent parent span to invoke_agent in FunctionInvokingChatClient #7382 by @stephentoub (co-authored by @Copilot)
  • Make HostedFileDownloadStream explicitly read-only #7394 by @stephentoub (co-authored by @Copilot)

Documentation Updates

  • Document JSON schema derivation for return types in AIFunctionFactory #7400 by @stephentoub (co-authored by @Copilot)

Test Improvements

Repository Infrastructure Updates

  • Update Package Validation Baseline to 10.4.0 #7389 by @jeffhandley (co-authored by @Copilot)
  • Update ModelContextProtocol libraries to version 1.0.0 #7340 by @stephentoub (co-authored by @Copilot)

Acknowledgements

Full Changelog: v10.4.0...v10.4.1

v10.4.0

12 Mar 06:03

Choose a tag to compare

This release advances the AI abstractions with new hosted file, web search, and reasoning content types, stabilizes MCP and tool approval APIs, adds streaming latency metrics to OpenTelemetry instrumentation, and delivers bug fixes across caching, data ingestion, and resource monitoring.

Experimental API Changes

Now Stable

  • MCP Server Tool Content and Function Call Approval APIs are now stable (previously MEAI001) #7299
  • FakeLogCollector.GetLogsAsync(CancellationToken) is now stable (previously EXTEXP0003) #7332

New Experimental APIs

  • New experimental AddExtendedHttpClientLogging overloads with wrapHandlersPipeline parameter (EXTEXP0013) #7231

Removed Experimental APIs

  • AI Tool Reduction experimental APIs removed (was experimental under MEAI001) #7353

What's Changed

AI

  • Add IHostedFileClient and friends #7269 by @stephentoub
  • Add web search tool call content #7276 by @stephentoub (co-authored by @Copilot)
  • Surface OpenAI-compatible reasoning_content as TextReasoningContent #7295 by @stephentoub
  • MCP/Approvals/Tool Contents stabilization #7299 by @jozkee
  • Implement time_to_first_chunk and time_per_output_chunk streaming metrics in OpenTelemetryChatClient #7325 by @stephentoub (co-authored by @Copilot)
  • Add openai.api.type telemetry attribute to OpenAI IChatClient implementations #7316 by @stephentoub (co-authored by @Copilot)
  • Update OpenTelemetry Gen AI semantic conventions to v1.40 #7322 by @stephentoub (co-authored by @Copilot)
  • Fix tool definitions emission regardless of sensitivity setting #7346 by @stephentoub (co-authored by @Copilot)
  • Honor [Required] attribute in AI function parameter JSON schema generation #7272 by @stephentoub (co-authored by @Copilot)
  • AddAIContentType automatically registers content type against every base in the inheritance chain up to AIContent #7358 by @jozkee (co-authored by @Copilot)
  • Auto-mark server-handled FunctionCallContent as InformationalOnly #7314 by @stephentoub (co-authored by @Copilot)
  • Map ReasoningEffort.None and ExtraHigh to none and xhigh in OpenAI IChatClient implementations #7319 by @stephentoub (co-authored by @Copilot)
  • Handle DynamicMethod reflection limitations in AIFunctionFactory #7287 by @stephentoub (co-authored by @Copilot)
  • Fix Activity.Current nulled during streaming tool invocation #7321 by @flaviocdc (co-authored by @Copilot)
  • Handle FunctionCallOutputResponseItem in streaming response conversion #7307 by @stephentoub (co-authored by @Copilot)
  • Fix serialization of response continuation tokens #7356 by @stephentoub
  • Remove AI Tool Reduction experimental APIs #7353 by @stephentoub (co-authored by @Copilot)
  • Update OpenAI to 2.9.1 #7349 by @stephentoub

Telemetry and Observability

  • Introduce support for the Gauge metric type #7203 by @rainsxng
  • Update logging source generator to support generic methods #7331 by @svick (co-authored by @Copilot)
  • Update logging source generator to match runtime PR #124589 (ref readonly/params/scoped) #7333 by @svick (co-authored by @Copilot)
  • Promote FakeLogCollector.GetLogsAsync(CancellationToken) from experimental to stable #7332 by @Demo30
  • Remove obsolete CS1591 warning suppression from generated file preamble #7308 by @luissena

HTTP Resilience and Diagnostics

  • Expose wrapHandlersPipeline parameter in AddExtendedHttpClientLogging API #7231 by @rainsxng (co-authored by @Copilot)

Diagnostics, Health Checks, and Resource Monitoring

Data Ingestion

  • Fix infinite loop in GetPreExistingChunksIdsAsync when records exceed MaxTopCount #7311 by @adamsitnik (co-authored by @Copilot)

Caching

Test Improvements

  • Fix flaky LinuxResourceHealthCheckTests by isolating MeterListener with ReferenceEquals #7302 by @stephentoub (co-authored by @Copilot)
  • Fix flaky resource monitoring test #7303 by @stephentoub
  • Fix flaky HttpRequestBuffering_DoesNotBufferDisabledOrOversizedLogs test #7304 by @stephentoub (co-authored by @Copilot)
  • Fix race condition in FakeLogCollector async enumeration test #7300 by @stephentoub (co-authored by @Copilot)
  • Fix cgroupv1 acceptance test to explicitly register the v1 parser #7296 by @stephentoub (co-authored by @Copilot)

Repository Infrastructure Updates

  • Update McpServer project template to ModelContextProtocol 1.1.0 #7338 by @jeffhandley (co-authored by @Copilot)
  • Update aiagent-webapi template to latest Agent Framework versions (rc1/260219) #7339 by @jeffhandley (co-authored by @Copilot)
  • Update SDK and dotnet version to 10.0.103 #7326 by @wtgodbe
  • Introduce an ApiChief skill to streamline updating API baselines #7281 by @jeffhandley (co-authored by @Copilot)
  • Update ApiChief script to use the net10.0 artifacts #7280 by @jeffhandley
  • Replace Windows queue image references from vs2022preview to vs2022 in pipeline YAML #7347 by @wtgodbe (co-authored by @Copilot)
  • Update public pipeline pool images to fix broken builds #7292 by @joperezr
  • Use smaller windows.vs2022.amd64.open pool image #7298 by @joperezr
  • Remove main-to-dev inter-branch merge automation #7315 by @joperezr (co-authored by @Copilot)
  • Updating FakeLogCollector API baselines #7334 by @Demo30
  • Run the issue-labeler over pull requests using polling #7273 by @jeffhandley (co-authored by @Copilot)
  • Add npmAuthenticate task to fix npm E401 errors on CI agents #7364 by @ilonatommy (co-authored by @Copilot)
  • Pass sourceIndexBuildCommand through to SourceIndex #7348 by @wtgodbe
  • Bump qs from 6.14.1 to 6.14.2 in /src/Libraries/Microsoft.Extensions.AI.Evaluation.Reporting/TypeScript #7301
  • Bump rollup from 4.40.0 to 4.59.0 #7345

Acknowledgements

Full Changelog: v10.3.0...v10.4.0

v10.3.0

11 Feb 01:18

Choose a tag to compare

Experimental API Changes

Now Stable

  • IChatReducer interface — graduated from experimental to stable. The interface is now stable; concrete implementations (MessageCountingChatReducer, SummarizingChatReducer, ReducingChatClient) remain experimental. #7235 by @jeffhandley
  • FunctionCallContent and FunctionResultContent unsealed — changed from sealed class to class, enabling derivation. #7229 by @stephentoub (co-authored by @Copilot)

Breaking Changes to Experimental APIs

  • Experimental diagnostic ID reorganization — the blanket MEAI001 diagnostic ID was split into feature-specific constants. OpenAI-specific experimental APIs now use OPENAI001, OPENAI002, or SCME0001 instead of MEAI001. Consumers who suppressed MEAI001 for OpenAI APIs may need to suppress OPENAI001/OPENAI002 instead. #7116 by @jeffhandley (co-authored by @Copilot), #7235 by @jeffhandley

New Experimental APIs

  • Chat reduction implementationsMessageCountingChatReducer, SummarizingChatReducer, ReducingChatClient, and UseChatReducer builder extension. #7235 by @jeffhandley
  • OpenAI Responses/Assistants/Realtime/Image/Audio integrations — assigned feature-specific experimental diagnostic IDs (OPENAI001, OPENAI002). #7235 by @jeffhandley
  • ImageGenerationToolCallContent and ImageGenerationToolResultContent — added to JSON serialization infrastructure. #7275 by @stephentoub (co-authored by @Copilot)

What's Changed

AI

  • Add ReasoningOptions to ChatOptions #7252 by @stephentoub (co-authored by @Copilot)
  • Add LoadFromAsync and SaveToAsync helper methods to DataContent #7159 by @stephentoub (co-authored by @Copilot)
  • Add FunctionCallContent.InformationalOnly property #7126, #7262 by @stephentoub (co-authored by @Copilot)
  • Add server tool call support to OpenTelemetryChatClient per semantic conventions #7240 by @stephentoub (co-authored by @Copilot)
  • Add ImageGenerationToolCallContent and ImageGenerationToolResultContent to JSON serialization infrastructure #7275 by @stephentoub (co-authored by @Copilot)
  • Add logging to FunctionInvokingChatClient for approval flow, error handling, and loop control #7228 by @stephentoub (co-authored by @Copilot)
  • Allow FunctionResultContent pass-through when CallId matches #7229 by @stephentoub (co-authored by @Copilot)
  • Remove AIFunctionDeclaration tools on last iteration in FunctionInvokingChatClient #7207 by @stephentoub (co-authored by @Copilot)
  • Propagate CachedInputTokenCount in OpenTelemetry telemetry #7234 by @stephentoub (co-authored by @Copilot)
  • Categorize MEAI001 experimental APIs #7116 by @jeffhandley (co-authored by @Copilot)
  • MEAI: Update Experimental / Preview Features #7235 by @jeffhandley
  • ToChatResponse: Merge AdditionalProperties into ChatMessage instead of ChatResponse #7194 by @stephentoub (co-authored by @Copilot)
  • Fix FunctionInvokingChatClient to respect ChatOptions.Tools modifications by function tools #7218 by @stephentoub (co-authored by @Copilot)
  • Fix FunctionInvokingChatClient invoke_agent span detection with exact match or space delimiter #7224 by @stephentoub (co-authored by @Copilot)
  • Fix approval request/response correlation in FunctionInvokingChatClient #7261 by @stephentoub (co-authored by @Copilot)
  • Fix DataUriParser to default to text/plain;charset=US-ASCII per RFC 2397 #7247 by @stephentoub (co-authored by @Copilot)
  • Fix NRT resolution for AIFunction parameters #7200 by @eiriktsarpalis
  • Preserve extra JSON schema properties in ToolJson serialization #7250 by @stephentoub (co-authored by @Copilot)
  • Fix token metric unit to use UCUM format {token} #7241 by @stephentoub
  • Fix OpenAI responses streaming to preserve encrypted reasoning content #7266 by @stephentoub
  • Update OpenAIResponsesChatClient to handle streaming code interpreter content #7267 by @stephentoub

Diagnostics, Health Checks, and Resource Monitoring

Service Discovery

  • Fix deadlock in ServiceEndpointWatcher when disposing change token registration #7255 by @ReubenBond

Compliance, Redaction, and Data Classification

AI Evaluation

  • Escape the JSON data before embedding in Evaluation reports #7238 by @peterwald

Documentation Updates

Test Improvements

  • Fix race condition in UnreliableL2Tests.WriteFailureInvisible #7075 by @stephentoub (co-authored by @Copilot)

Repository Infrastructure Updates

  • Add .npmrc next to package.json and add lockfile for PublishAIEvaluationReport #7108 by @akoeplinger
  • Set Microsoft.McpServer.ProjectTemplates version to align with MCP packages #7170 by @jeffhandley
  • Enable package validation for M.E.AmbientMetadata.Build #7213 by @evgenyfedorov2
  • Set network isolation policy for extensions-ci #7221 by @wtgodbe
  • Update mcpserver template to ModelContextProtocol 0.7.0-preview.1 #7236 by @jeffhandley (co-authored by @Copilot)
  • Update aiagent-webapi template to Agent Framework 1.0.0-preview.260127.1 #7237 by @jeffhandley (co-authored by @Copilot)
  • Bump js-yaml from 4.1.0 to 4.1.1 in /src/Libraries/Microsoft.Extensions.AI.Evaluation.Reporting/TypeScript #7054
  • Bump validator from 13.15.20 to 13.15.23 in /src/Libraries/Microsoft.Extensions.AI.Evaluation.Reporting/TypeScript #7103
  • Bump qs from 6.14.0 to 6.14.1 in /src/Libraries/Microsoft.Extensions.AI.Evaluation.Reporting/TypeScript #7189
  • Bump mdast-util-to-hast from 13.2.0 to 13.2.1 in /src/Libraries/Microsoft.Extensions.AI.Evaluation.Reporting/TypeScript #7198
  • Bump lodash from 4.17.21 to 4.17.23 in /src/Libraries/Microsoft.Extensions.AI.Evaluation.Reporting/TypeScript #7227

Acknowledgements

Full Changelog: v10.2.0...v10.3.0

v10.2.0

13 Jan 19:43

Choose a tag to compare

What's Changed

  • Bump version to 10.2.0 for next development cycle by @Copilot in #7105
  • Add unit parameter to metric source generator by @mariamgerges in #7099
  • [main] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in #7111
  • Fix expected conversation length in SummarizingChatReducer integration tests by @MackinnonBuck in #7119
  • Fix build status badge in README.md by @akoeplinger in #7118
  • Update AI changelogs for 10.1.0 by @stephentoub in #7123
  • Merging internal changes into release/10.1 branch by @joperezr in #7127
  • Bump glob from 11.0.1 to 11.1.0 in /src/Libraries/Microsoft.Extensions.AI.Evaluation.Reporting/TypeScript by @dependabot[bot] in #7052
  • Fix markdown parser crash on inline HTML elements by @Copilot in #7131
  • Fix IndexOutOfRangeException when parsing markdown tables without trailing pipes by @Copilot in #7133
  • Merging changes from release/10.1 into main by @joperezr in #7128
  • Remove nuget.exe by @ericstj in #7138
  • Augment UsageDetails with cached / reasoning token counts by @stephentoub in #7122
  • Expose ctors for setting AdditionalProperties on Hosted tools by @stephentoub in #7120
  • Update to OpenAI 2.8.0 by @stephentoub in #7136
  • Add DocumentTokenChunker by @KrystofS in #7093
  • Skip tests by default in internal rolling builds by @Copilot in #7151
  • Fix FunctionApprovalResponseContent to message mapping by @PederHP in #7152
  • [main] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in #7155
  • Add support for custom headers in HostedMcpServerTool by @echapmanFromBunnings in #7053
  • AmbientMetadata.Build - release to GA by @evgenyfedorov2 in #7161
  • Overhaul project template builds and testing by @jeffhandley in #7113
  • Update Microsoft.Agents.AI.ProjectTemplates to latest Agent Framework by @jeffhandley in #7167
  • Introduce local vs. remote mcpserver template option by @jeffhandley in #7168
  • Fix rolling build pipeline by @jeffhandley in #7171
  • Add Reason property to FunctionApprovalResponseContent for custom rejection messages by @Copilot in #7140
  • [main] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in #7180
  • Fix ToChatResponse to use first appropriate CreatedAt instead of last by @Copilot in #7193
  • Add support for InputImageUrl via reflection in OpenAIResponsesChatClient by @Copilot in #7195

New Contributors

Full Changelog: v10.1...v10.2.0

v10.1.0

10 Dec 22:48

Choose a tag to compare

What's Changed

  • [MEDI] start producing NuGet packages by @adamsitnik in #7016
  • Deprecate AddServiceLogEnricher method with its overloads, introduce replacements by @evgenyfedorov2 in #6529
  • Update version numbers in AI changelogs by @stephentoub in #7008
  • HttpDependencyMetadataResolver class for the custom downstream dependency metadata resolution by @rainsxng in #6880
  • [MEDI] Don't stop document processing on enricher error by @adamsitnik in #7005
  • [MEDI] add PackageTags by @adamsitnik in #7022
  • Add a new Microsoft.Agents.AI.Templates package with an aiagent-webapi project template by @jeffhandley in #7014
  • Add MarkItDownMcpReader for MCP server support by @Copilot in #7025
  • Image generation tool by @ericstj in #6749
  • Make MEAI packages use 10.0 runtime packages by @ericstj in #7028
  • When using latest .NET packages, force System.Numerics.Tensors to 10.0 (for MEAI) by @jeffhandley in #7031
  • [main] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in #7032
  • Use DataContent from Microsoft.Extensions.AI for data URI generation by @Copilot in #7027
  • Add AmbientMetadata.Build component by @evgenyfedorov2 in #6623
  • Introduce SectionChunker by @KrystofS in #7015
  • Use Microsoft.Extensions.DataIngestion in AI Chat Web template by @MackinnonBuck in #7023
  • Add Agent Framework DevUI into the aiagent-webapi template by @jeffhandley in #7026
  • Adjust cgroupv2 drive format check for .NET 10 and higher by @KeterSCP in #6877
  • Replace custom IAsyncEnumerable extensions with System.Linq.AsyncEnumerable by @Copilot in #7039
  • Add Image Detail support for Image DataContent to OpenAIResponsesChatClient. by @rogerbarreto in #7042
  • [main] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in #7043
  • Update to OpenAI 2.7.0 by @stephentoub in #7044
  • Merge changes from internal by @joperezr in #7038
  • Merge rel10 by @joperezr in #7047
  • Disable AzDO dependabot by @mmitche in #7045
  • Bump version to 10.1.0 for next development cycle by @Copilot in #7018
  • Update AI Chat Web template to Aspire 13.0.0 by @Copilot in #7036
  • Fix flaky SetupSequence tests by @amadeuszl in #7051
  • Update AI changelogs by @stephentoub in #7037
  • Update project template dependencies by @jeffhandley in #7064
  • Reset Microsoft.Agents.AI.ProjectTemplates versioning by @jeffhandley in #7034
  • Fix operator precedence bug in ValidateSchemaDocument causing rejection of valid boolean schemas by @Copilot in #7066
  • Use JsonElement.Parse for JsonElement conversions in AI libraries by @Copilot in #7067
  • .NET: Change type of ContinuationToken properties by @SergeyMenshykh in #7050
  • Fix OpenAIEmbeddingGenerator to handle missing usage data by @stephentoub in #7074
  • Add AIJsonSchemaCreateOptions.ParameterDescriptions by @stephentoub in #7068
  • Improve FunctionInvokingChatClient's awareness of agents by @stephentoub in #7030
  • Add Kubernetes based Resource Monitoring by @amadeuszl in #6748
  • Ensure all ResponseItems are yielded in AIContent by @crickman in #7063
  • Add CHANGELOG.md files for Microsoft.Extensions.DataIngestion* projects by @Copilot in #7072
  • Assign authors only on PR creation by @sebastienros in #7083
  • Update to .NET 10 GA release by @Copilot in #7078
  • Fix package references from M.E.AI packages by @stephentoub in #7076
  • Workaround OpenAI bug with streaming error events by @stephentoub in #7085
  • Update AI changelogs for 10.0.1 release by @stephentoub in #7086
  • Add metering for baseline resource quotas by @amadeuszl in #7080
  • Update Microsoft.VisualStudio.Threading.Analyzers to latest by @stephentoub in #7091
  • Update SonarAnalyzer.CSharp to latest by @stephentoub in #7092
  • Remove Microsoft.Extensions.AI.AzureAIInference by @stephentoub in #7096
  • DisableParallelization for environment variables based tests by @amadeuszl in #7100
  • Remove AzureAIInference remnants after #7096 by @Copilot in #7102
  • Update resource management configuration by @sebastienros in #7084

New Contributors

Full Changelog: v10.0.0...v10.1

v10.0.0

11 Nov 23:01

Choose a tag to compare

What's Changed

  • Give FunctionInvokingChatClient span a more OTELy name by @verdie-g in #6911
  • Update repository branding from 9.10 to 10.0 by @Copilot in #6907
  • Clean up local function names in AIFunctionFactory by @Copilot in #6909
  • Update OpenTelemetryChatClient to output data on all tools by @stephentoub in #6906
  • Update ToChatResponse{Async} to also factor in AuthorName by @stephentoub in #6910
  • add support for background responses by @SergeyMenshykh in #6854
  • Fix METGEN004 error message: print return type in ErrorInvalidMethodReturnType by @eduherminio in #6905
  • Fix OpenTelemetryChatClient failing on unknown content types by @stephentoub in #6915
  • Add support for Connector ID and other follow ups by @jozkee in #6881
  • Update AI lib changelogs by @stephentoub in #6920
  • Merge internal changes by @joperezr in #6921
  • Add Workstream, Stage, and PackageValidationBaselineVersion metadata to ServiceDiscovery libraries by @Copilot in #6919
  • Add back Uri ctor to HostedMcpServerTool by @jozkee in #6926
  • Set DisableNETStandardCompatErrors in ServiceDiscovery libraries by @eerhardt in #6927
  • Update Package validation baseline version to 9.10.0 by @Copilot in #6922
  • [main] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in #6802
  • Extend service discovery to support Consul-based DNS lookups: by @bart-vmware in #6914
  • Update AsOpenAIResponseItems to roundtrip User AIContent ResponseItems by @stephentoub in #6931
  • Special-case AIContent returned from AIFunctionFactory.Create AIFunctions to not be serialized by @stephentoub in #6935
  • Preserve function content in SummarizingChatReducer by @MackinnonBuck in #6908
  • Tool reduction by @MackinnonBuck in #6781
  • Fix coalescing of TextReasoningContent with ProtectedData by @stephentoub in #6936
  • Doc updates by @gewarren in #6930
  • Support DisplayNameAttribute for name resolution in AI libraries by @Copilot in #6942
  • Fix EquivalenceEvaluator MaxOutputTokens to meet Azure OpenAI minimum requirement by @Copilot in #6948
  • Support DefaultValueAttribute in AIFunctionFactory parameter handling by @Copilot in #6947
  • Bump vite from 6.3.6 to 6.4.1 in /src/Libraries/Microsoft.Extensions.AI.Evaluation.Reporting/TypeScript by @dependabot[bot] in #6938
  • Introduce Microsoft.Extensions.DataIngestion.Abstractions by @adamsitnik in #6949
  • Update to latest schema version (accepted by MCP registry) by @joelverhagen in #6956
  • Introduce IngestionChunkWriter build on top of MEVD by @adamsitnik in #6951
  • Update AI Chat Web dependencies by @MackinnonBuck in #6955
  • Add AITool -> OpenAI.Responses.ResponseTool conversion utility by @rogerbarreto in #6958
  • Update AI changelogs for 9.10.1 by @stephentoub in #6950
  • Add Name property to OtelMessage to store ChatMessage.AuthorName per OpenTelemetry semantic conventions by @Copilot in #6953
  • Fix serialization of UserInputRequest/ResponseContent by @stephentoub in #6962
  • Expose building blocks for external service discovery implementations by @bart-vmware in #6946
  • Bump validator from 13.15.0 to 13.15.20 in /src/Libraries/Microsoft.Extensions.AI.Evaluation.Reporting/TypeScript by @dependabot[bot] in #6974
  • Add eng/sdl-tsa-vars.config for TSA integration by @Copilot in #6980
  • Add CodeInterpreterToolCall/ResultContent content types by @stephentoub in #6964
  • Update to 1.38 of the otel genai standard convention by @stephentoub in #6981
  • Introduce set of built-in Enrichers by @adamsitnik in #6957
  • Allow ChatOptions.ConversationId to be an OpenAI conversation ID with Responses by @stephentoub in #6960
  • Fix warning breaking official build, enable warningAsError in all pipelines by @ericstj in #6988
  • Introduce HeaderChunker by @adamsitnik in #6979
  • Introduce Markdown readers by @adamsitnik in #6969
  • Add usage telemetry for aieval dotnet tool by @shyamnamboodiripad in #6773
  • Update to OpenAI 2.6.0 by @stephentoub in #6996
  • Don't specify MaxOutputTokens for EquivalenceEvaluator by @shyamnamboodiripad in #7006
  • Fix Assert.Throws to validate parameter names by @stephentoub in #7007
  • [MEDI] Remove collection key type workaround by @adamsitnik in #7010
  • Enable binskim to extract packages by @ericstj in #6989
  • Added net10.0 targeting to all packages and flowed RC2 dependency versions. by @joperezr in #6995
  • [MEDI] Pipeline by @adamsitnik in #6993
  • Add Semantic Similarity chunker by @KrystofS in #6994

New Contributors

Full Changelog: v9.10.0...v10.0.0

v9.10.0

14 Oct 22:07

Choose a tag to compare

What's Changed

  • Branding updates for 9.10 by @Copilot in #6769
  • Doc improvements by @gewarren in #6794
  • Bump vite from 6.3.5 to 6.3.6 in /src/Libraries/Microsoft.Extensions.AI.Evaluation.Reporting/TypeScript by @dependabot[bot] in #6793
  • Updated changelogs for AI libs by @stephentoub in #6787
  • Update MCP server template by @jeffkl in #6772
  • Add support for using ConversationID for AzureOpenAI and OpenAI by @ViveliDuCh in #6770
  • Merging internal commits by @joperezr in #6801
  • Merge changes from release/9.9 branch by @joperezr in #6803
  • Support keyed HybridCache with keyed DistributedCaches and named options by @kelly-yinn in #6694
  • Inventory as code by @wtgodbe in #6820
  • Increase output token limit for EquivalenceEvaluator by @shyamnamboodiripad in #6835
  • Fix KeyNotFoundException on HttpRequestLatencyListener.OnEventWritten for uknown event sources by @ssmelov in #6821
  • Add project name normalization to match aspire's code generator logic by @ViveliDuCh in #6818
  • Disable really noisy analyzers, part 1 by @stephentoub in #6837
  • Fix KeyNotFoundException in HttpRequestLatencyListener.OnEventWritten by @pentp in #6823
  • Update global.json to use .NET 9.0.0 stable instead of RC 1 by @Copilot in #6846
  • Add measures and tags with mediator object to the HttpClientLatencyLogEnricher by @rainsxng in #6783
  • Add comprehensive .github/copilot-instructions.md for dotnet/extensions repository by @Copilot in #6792
  • Update to .NET 10 SDK by @eerhardt in #6863
  • Update Microsoft.Extensions.AI changelog files with current NuGet versions by @Copilot in #6849
  • Fix GenerateImagesAsync_SingleImageGeneration integration test by @stephentoub in #6843
  • Re-enable IDE0032 by @stephentoub in #6866
  • Add OpenTelemetrySpeechToTextClient and friends by @stephentoub in #6845
  • Update ModelContextProtocol version in MCP template by @MackinnonBuck in #6870
  • Scope Ollama resilience settings to Web/Program.cs and restore ServiceDefaults by @ViveliDuCh in #6850
  • Update Aspire by @Varorbc in #6858
  • Update MCP template for new registry specification by @Copilot in #6796
  • Add support for HostApplicationBuilder in AmbientMetadata extension by @eduherminio in #6867
  • Fix mcpserver test baselines by @jeffhandley in #6874
  • Move Microsoft.Extensions.ServiceDiscovery to dotnet/extensions by @eerhardt in #6868
  • Add copy constructors to option types (ChatOptions, etc.) by @stephentoub in #6882
  • Fix ChatMessage.CreatedAt being always overwritten by the latest timestamp. by @Copilot in #6885
  • Small doc fixes by @gewarren in #6887
  • Update AI changelogs with some recent additions by @stephentoub in #6886
  • Fix Assistants IChatClient handling of unrelated tool calls in history by @stephentoub in #6891
  • Fix duplication between OpenAI Assistants pre-configured tools by @stephentoub in #6896
  • Update MCP Server Template to adhere to 2025-09-29 server.json schema by @joelverhagen in #6888
  • Remove Azure.AI.OpenAI dependency from templates and tests by @Copilot in #6873
  • Remove UnsafeRelaxedJsonEscaping by @peterwald in #6899
  • Fix bug to yield remaining buffered FCC by @westey-m in #6903
  • Fix serialization of [Experimental] AIContent-derived types by @stephentoub in #6900

New Contributors

Full Changelog: v9.9.0...v9.10.0

v9.9.0

09 Sep 19:21

Choose a tag to compare

Highlights

AI

  • Abstractions for remote MCP servers; response/approval flow support via new experimental types
  • Function approvals via new experimental types (e.g., ApprovalRequiredAIFunction, user input/approval request & response content).
  • Reasoning text streaming for OpenAI Responses ChatClient streaming.
  • AIFunction split into a base class to improve extensibility.
  • IChatReducer moved to Microsoft.Extensions.AI.Abstractions.
  • Updated to OpenAI 2.4.0 and genai standard convention 1.37.
  • Coalescing logic now treats ChatMessage.Role changes as new messages.
  • GetResponseAsync<T> now reads only the last message (bug fix).
  • OpenTelemetry ChatClient/EmbeddingGenerator logs raw additional properties (no key mangling).
  • Fixed empty annotated text chunk handling in streaming with OpenAI Assistants.

Telemetry & Diagnostics

  • HTTP diagnostics log query string params with proper redaction (emitted on url.query).
  • server.address telemetry emits host only (per OpenTelemetry semantic conventions).
  • Heuristics added to detect well-known model hosts.
  • Resource monitoring can consider Environment.CpuUsage.

New Contributors

Full Changelog: v9.8.0...v9.9.0

v9.8.0

12 Aug 21:18
02dcda1

Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v9.7.0...v9.8.0

v9.7.2

17 Jul 06:59

Choose a tag to compare

Packages Released

What's Changed

Full Changelog: v9.7.1...v9.7.2