Skip to content

MEAI: Update Experimental / Preview Features#7235

Merged
jeffhandley merged 10 commits intomainfrom
jeffhandley/meai-stabilization
Feb 9, 2026
Merged

MEAI: Update Experimental / Preview Features#7235
jeffhandley merged 10 commits intomainfrom
jeffhandley/meai-stabilization

Conversation

@jeffhandley
Copy link
Member

@jeffhandley jeffhandley commented Jan 28, 2026

  1. Remove [Experimental] from IChatReducer interface, leaving the attribute on the concrete chat reducer implementations
  2. Remove the prerelease label from the Microsoft.Extensions.AI.OpenAI package
  3. Apply [Experimental] to the MEAI.OpenAI APIs that utilize experimental OpenAI APIs (Responses, Assistants, and Real-Time). Those attribute propagate the OPENAI001 and OPENAI002 diagnostic Ids rather than requiring consumers to suppress both and OPENAI diagnostic and an MEAI diagnostic.

As part of changing API experimental annotations, API Chief was run to update the baselines for the MEAI.Abstractions and MEAI.OpenAI libraries. A lot of the differences in the MEAI.Abstractions baseline difference are ordering of the APIs or adding in APIs that were introduced as experimental earlier, getting the baseline up to date with what the tool generates.

Topics for expected discussion:

  1. Do we still need to take another pass over the MEAI.OpenAI API surface to ensure we're ready to remove the prerelease label and stabilize the APIs not annotated as [Experimental]?
  2. Whether the OpenAI experimentals should reuse OPENAI001 and OPENAI002 or use MEAI001.
Microsoft Reviewers: Open in CodeFlow

@jeffhandley jeffhandley self-assigned this Jan 28, 2026
@jeffhandley jeffhandley added the area-ai Microsoft.Extensions.AI libraries label Jan 28, 2026
@jeffhandley jeffhandley marked this pull request as ready for review February 6, 2026 00:55
@jeffhandley jeffhandley requested review from a team as code owners February 6, 2026 00:55
Copilot AI review requested due to automatic review settings February 6, 2026 00:55
Copy link
Contributor

Copilot AI left a 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 stabilizes the Microsoft.Extensions.AI.OpenAI package by removing its prerelease label and properly annotating experimental APIs. It removes the [Experimental] attribute from the IChatReducer interface while maintaining it on concrete implementations, allowing stable interface adoption. OpenAI-specific experimental APIs (Responses, Assistants, and Real-Time) are annotated with [Experimental] attributes that propagate the OpenAI package's diagnostic IDs (OPENAI001, OPENAI002) to avoid requiring consumers to suppress multiple diagnostics.

Changes:

  • Removed [Experimental] from IChatReducer interface in Abstractions library
  • Changed Microsoft.Extensions.AI.OpenAI package stage from "preview" to "normal" and increased code coverage requirements
  • Applied [Experimental] attributes with OpenAI diagnostic IDs to experimental OpenAI API wrappers
  • Updated API baseline manifests for both Abstractions and OpenAI libraries

Reviewed changes

Copilot reviewed 9 out of 9 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
src/Shared/DiagnosticIds/DiagnosticIds.cs Added diagnostic ID constants for reusing OpenAI package experimental diagnostics (OPENAI001, OPENAI002)
src/Libraries/Microsoft.Extensions.AI.OpenAI/OpenAIClientExtensions.cs Applied experimental attributes to AsIChatClient methods for ResponsesClient and AssistantClient
src/Libraries/Microsoft.Extensions.AI.OpenAI/MicrosoftExtensionsAIResponsesExtensions.cs Applied experimental attribute to entire static class for Responses extensions
src/Libraries/Microsoft.Extensions.AI.OpenAI/MicrosoftExtensionsAIRealtimeExtensions.cs Applied experimental attribute to entire static class for Realtime extensions
src/Libraries/Microsoft.Extensions.AI.OpenAI/MicrosoftExtensionsAIAssistantsExtensions.cs Applied experimental attribute to entire static class for Assistants extensions
src/Libraries/Microsoft.Extensions.AI.OpenAI/Microsoft.Extensions.AI.OpenAI.json New API baseline manifest marking experimental and stable APIs correctly
src/Libraries/Microsoft.Extensions.AI.OpenAI/Microsoft.Extensions.AI.OpenAI.csproj Changed package stage to normal and increased code coverage/mutation thresholds
src/Libraries/Microsoft.Extensions.AI.Abstractions/Microsoft.Extensions.AI.Abstractions.json Updated API baseline showing IChatReducer as stable with reordered/added APIs
src/Libraries/Microsoft.Extensions.AI.Abstractions/ChatReduction/IChatReducer.cs Removed experimental attribute and unused imports from interface

Co-authored-by: Copilot <[email protected]>
@jeffhandley jeffhandley requested a review from a team as a code owner February 6, 2026 17:37
@jeffhandley
Copy link
Member Author

@stephentoub This is ready for re-review. Here's the approach taken on the OpenAI diagnostics:

  1. Use pragmas to swallow anything where it's an implementation detail within an otherwise stable API
  2. Apply [Experimental] to APIs where the underlying APIs are experimental, even for private and internal members to force annotation or suppression in calling code
  3. Define granular constants for the OpenAI experiments to provide inventorying for ourselves; e.g., when Responses goes stable we should be able to remove that constant and referencing Experimentals
  4. No project-wide suppressions are used
  5. Tests do have a couple of file-scoped suppressions

@jeffhandley jeffhandley merged commit a144ceb into main Feb 9, 2026
6 checks passed
@jeffhandley jeffhandley deleted the jeffhandley/meai-stabilization branch February 9, 2026 21:37
joperezr pushed a commit that referenced this pull request Feb 10, 2026
* Remove [Experimental] attribute from IChatReducer

* Annotate APIs that use experimental OpenAI APIs. Remove prerelease label.

* Fix typo

Co-authored-by: Copilot <[email protected]>

* Remove project-wide OpenAI experimental suppressions. Finish annotating.

* Use granular constants for openai experimental diagnostics

* Update API baselines

* Remove unused const

* Remove redundant [Experimental] attributes for OpenAI Responses members

* Update ApiChief baselines for MEAI

---------

Co-authored-by: Copilot <[email protected]>
joperezr added a commit that referenced this pull request Feb 11, 2026
* Merged PR 57712: Getting ready for 10.3 release

Getting ready for 10.3 release

----
#### AI description  (iteration 1)
#### PR Classification
This pull request implements release preparation changes for the 10.3 release.

#### PR Summary
The PR bumps dependency versions and adjusts configuration settings to ready the repository for the upcoming release while streamlining build pipeline tasks.
- **`eng/Version.Details.xml` & `eng/Versions.props`**: Update dependency versions from 9.0.12 to 9.0.13 (including net10 and LTS versions) and set release stabilization flags (`StabilizePackageVersion=true`, `DotNetFinalVersionKind=release`).
- **`azure-pipelines.yml`**: Remove the entire code coverage stage and its related dependency from the post-build steps.
- **`.github/skills/prepare-release/SKILL.md`**: Add documentation with instructions for preparing an internal release branch.
- **`Directory.Build.props` & `NuGet.config`**: Add NU1507 warning suppression and remove the package source mapping section to align with internal feed usage.
<!-- GitOpsUserAgent=GitOps.Apps.Server.pullrequestcopilot -->

* Fix OpenAI responses streaming to preserve encrypted reasoning content (#7266)

Co-authored-by: Copilot <[email protected]>

* Update OpenAIResponsesChatClient to handle streaming code interpreter content (#7267)

* Update OpenAIResponsesChatClient to handle streaming code interpreter content

Right now it outputs it but in a bulk fashion only at the end of the response item. This makes it yield the deltas instead.

* Dedup code block

* Update OpenTelemetry semantic convention version references from 1.38 to 1.39 (#7274)

* Initial plan

* Update OpenTelemetry semantic convention version comments from 1.38 to 1.39

Co-authored-by: stephentoub <[email protected]>

---------

Co-authored-by: copilot-swe-agent[bot] <[email protected]>
Co-authored-by: stephentoub <[email protected]>

* MEAI: Update Experimental / Preview Features (#7235)

* Remove [Experimental] attribute from IChatReducer

* Annotate APIs that use experimental OpenAI APIs. Remove prerelease label.

* Fix typo

Co-authored-by: Copilot <[email protected]>

* Remove project-wide OpenAI experimental suppressions. Finish annotating.

* Use granular constants for openai experimental diagnostics

* Update API baselines

* Remove unused const

* Remove redundant [Experimental] attributes for OpenAI Responses members

* Update ApiChief baselines for MEAI

---------

Co-authored-by: Copilot <[email protected]>

* Add ImageGenerationToolCallContent and ImageGenerationToolResultContent to JSON serialization infrastructure (#7275)

Co-authored-by: copilot-swe-agent[bot] <[email protected]>
Co-authored-by: stephentoub <[email protected]>

* Mark all of MicrosoftExtensionsAIChatExtensions as experimental

---------

Co-authored-by: Stephen Toub <[email protected]>
Co-authored-by: Copilot <[email protected]>
Co-authored-by: Copilot <[email protected]>
Co-authored-by: stephentoub <[email protected]>
Co-authored-by: Jeff Handley <[email protected]>
Co-authored-by: Jeff Handley <[email protected]>
@github-actions github-actions bot locked and limited conversation to collaborators Mar 12, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-ai Microsoft.Extensions.AI libraries

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants