MEAI: Update Experimental / Preview Features#7235
Conversation
There was a problem hiding this comment.
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]fromIChatReducerinterface 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]>
|
@stephentoub This is ready for re-review. Here's the approach taken on the OpenAI diagnostics:
|
src/Libraries/Microsoft.Extensions.AI.OpenAI/OpenAIResponsesChatClient.cs
Outdated
Show resolved
Hide resolved
* 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]>
* 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]>
[Experimental]fromIChatReducerinterface, leaving the attribute on the concrete chat reducer implementations[Experimental]to the MEAI.OpenAI APIs that utilize experimental OpenAI APIs (Responses, Assistants, and Real-Time). Those attribute propagate theOPENAI001andOPENAI002diagnostic Ids rather than requiring consumers to suppress both andOPENAIdiagnostic and anMEAIdiagnostic.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:
[Experimental]?OPENAI001andOPENAI002or useMEAI001.Microsoft Reviewers: Open in CodeFlow