-
Notifications
You must be signed in to change notification settings - Fork 849
Inventory MEAI001 experimental APIs into feature-specific diagnostic IDs (MEAI0001-MEAI0008) #7116
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
base: main
Are you sure you want to change the base?
Conversation
Co-authored-by: jeffhandley <[email protected]>
Co-authored-by: jeffhandley <[email protected]>
…iagnosticIds constants Co-authored-by: jeffhandley <[email protected]>
Co-authored-by: jeffhandley <[email protected]>
src/Libraries/Microsoft.Extensions.AI.Abstractions/ChatCompletion/ChatOptions.cs
Outdated
Show resolved
Hide resolved
…operty to MEAI experimental attributes Co-authored-by: jeffhandley <[email protected]>
Co-authored-by: jeffhandley <[email protected]>
...Microsoft.Extensions.AI.Evaluation.Quality/Microsoft.Extensions.AI.Evaluation.Quality.csproj
Outdated
Show resolved
Hide resolved
|
@copilot Instead of a truncated Description column, update the PR description to provide a complete list of all fully-qualified APIs included in each of the Diagnostic ID Assignments. This is important as it will help us find callers of these APIs more easily. |
Co-authored-by: jeffhandley <[email protected]>
Updated the PR description with complete fully-qualified API names for all 8 diagnostic ID groups, including types (classes, interfaces, structs, enums), extension methods, and property-level experimental attributes. |
...Microsoft.Extensions.AI.Abstractions.Tests/Microsoft.Extensions.AI.Abstractions.Tests.csproj
Outdated
Show resolved
Hide resolved
Added |
|
@copilot Additional projects are failing for the ambiguous ExperimentalAttribute problem. It might be best to inject the attribute into all projects. But we can start with the next batch of failures:
|
|
@copilot Address this comment |
…te polyfill Co-authored-by: jeffhandley <[email protected]>
Added |
|
@copilot The error is happening in more projects. We should probably just guard against it in all projects across the solution using the Directory.Build.props files. Example:
|
…ribute polyfill Co-authored-by: jeffhandley <[email protected]>
| #if !NET8_0_OR_GREATER | ||
| #if !NET10_0_OR_GREATER | ||
|
|
||
| #pragma warning disable CS0436 // Type conflicts with imported type |
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.
@copilot The changes needed to get ExperimentalAttribute flowing through everywhere are not worth it.
Revert the changes to the attribute, all places where the new type redefinition suppression was needed, remove the Message definitions for the new diagnostics, and do not inject the experimental attribute anywhere new that is no longer needed.
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.
Reverted the ExperimentalAttribute polyfill changes, removed Message definitions from DiagnosticIds.cs, and removed Message property from all Experimental attributes in cfb2285. The polyfill is now back to targeting !NET8_0_OR_GREATER without the Message property, and the MEAI experimental attributes use only the diagnostic ID and UrlFormat.
Co-authored-by: jeffhandley <[email protected]>
Moved the CS0436 suppression to LegacySupport.props for central handling in fe76059. The suppression is now automatically applied to all projects that use |
|
@jeffhandley, why are we changing diagnostic id's? For all existing users, this only serves to introduce friction, as existing suppression will break for no benefit. And for new consumption, folks are going to need to suppress many diagnostics where previously they'd only need to suppress one. What benefit do we think we're providing by going more fine-grained here? |
…nitions Co-authored-by: jeffhandley <[email protected]>
I am not so sure Agent Framework usage is the only litmus test. That's just a single product using the API - a project which might even have a high tolerance for pain or only use a subset of the API surface. There are plenty of APIs we create that might not be designed for Agent Framework usage. We might have serious flaws in the surface area that Agent Framework happens not to use. I think we need a better measure of usage/ship-readiness. We can look at NuGet ecosystem usage + internal usage + feedback signal (any signal - issues, blog engagement, docs view counts) + time available + adoption in 3rd party providers (when applicable). |
This PR inventories all APIs marked as
[Experimental("MEAI001")]and groups them by feature, assigning each group a specific diagnostic ID. The diagnostic IDs are defined in the shared DiagnosticIds.cs file, and all experimental API attributes have been updated to reference these constants.Changes Made
MEAI Experimental Attributes
[Experimental(DiagnosticIds.Experiments.*, UrlFormat = DiagnosticIds.UrlFormat)]Project Files
MEAI001suppression from all project files (replaced with granular MEAI0001-MEAI0008)Documentation
docs/list-of-diagnostics.mdDiagnostic ID Assignments
MEAI0001 - Image Generation
Microsoft.Extensions.AI.IImageGeneratorMicrosoft.Extensions.AI.DelegatingImageGeneratorMicrosoft.Extensions.AI.ImageGenerationOptionsMicrosoft.Extensions.AI.ImageGenerationResponseFormatMicrosoft.Extensions.AI.ImageGenerationRequestMicrosoft.Extensions.AI.ImageGenerationResponseMicrosoft.Extensions.AI.ImageGeneratorExtensionsMicrosoft.Extensions.AI.ImageGeneratorMetadataMicrosoft.Extensions.AI.ImageGenerationToolCallContentMicrosoft.Extensions.AI.ImageGenerationToolResultContentMicrosoft.Extensions.AI.HostedImageGenerationToolMicrosoft.Extensions.AI.ImageGeneratingChatClientMicrosoft.Extensions.AI.ImageGeneratingChatClientBuilderExtensionsMicrosoft.Extensions.AI.OpenTelemetryImageGeneratorMicrosoft.Extensions.AI.OpenTelemetryImageGeneratorBuilderExtensionsMicrosoft.Extensions.AI.ConfigureOptionsImageGeneratorMicrosoft.Extensions.AI.ConfigureOptionsImageGeneratorBuilderExtensionsMicrosoft.Extensions.AI.ImageGeneratorBuilderMicrosoft.Extensions.AI.ImageGeneratorBuilderImageGeneratorExtensionsMicrosoft.Extensions.AI.LoggingImageGeneratorMicrosoft.Extensions.AI.LoggingImageGeneratorBuilderExtensionsMicrosoft.Extensions.DependencyInjection.ImageGeneratorBuilderServiceCollectionExtensionsMicrosoft.Extensions.AI.OpenAIClientExtensions.AsIImageGenerator(extension method)MEAI0002 - Speech to Text
Microsoft.Extensions.AI.ISpeechToTextClientMicrosoft.Extensions.AI.DelegatingSpeechToTextClientMicrosoft.Extensions.AI.SpeechToTextOptionsMicrosoft.Extensions.AI.SpeechToTextResponseMicrosoft.Extensions.AI.SpeechToTextResponseUpdateMicrosoft.Extensions.AI.SpeechToTextResponseUpdateKindMicrosoft.Extensions.AI.SpeechToTextResponseUpdateExtensionsMicrosoft.Extensions.AI.SpeechToTextClientExtensionsMicrosoft.Extensions.AI.SpeechToTextClientMetadataMicrosoft.Extensions.AI.OpenAISpeechToTextClientMicrosoft.Extensions.AI.SpeechToTextClientBuilderMicrosoft.Extensions.AI.SpeechToTextClientBuilderSpeechToTextClientExtensionsMicrosoft.Extensions.AI.ConfigureOptionsSpeechToTextClientMicrosoft.Extensions.AI.ConfigureOptionsSpeechToTextClientBuilderExtensionsMicrosoft.Extensions.AI.LoggingSpeechToTextClientMicrosoft.Extensions.AI.LoggingSpeechToTextClientBuilderExtensionsMicrosoft.Extensions.AI.OpenTelemetrySpeechToTextClientMicrosoft.Extensions.AI.OpenTelemetrySpeechToTextClientBuilderExtensionsMicrosoft.Extensions.DependencyInjection.SpeechToTextClientBuilderServiceCollectionExtensionsMicrosoft.Extensions.AI.OpenAIClientExtensions.AsISpeechToTextClient(extension method)MEAI0003 - MCP Servers
Microsoft.Extensions.AI.HostedMcpServerToolMicrosoft.Extensions.AI.HostedMcpServerToolApprovalModeMicrosoft.Extensions.AI.HostedMcpServerToolAlwaysRequireApprovalModeMicrosoft.Extensions.AI.HostedMcpServerToolNeverRequireApprovalModeMicrosoft.Extensions.AI.HostedMcpServerToolRequireSpecificApprovalModeMicrosoft.Extensions.AI.McpServerToolCallContentMicrosoft.Extensions.AI.McpServerToolResultContentMicrosoft.Extensions.AI.McpServerToolApprovalRequestContentMicrosoft.Extensions.AI.McpServerToolApprovalResponseContentMEAI0004 - Function Approvals
Microsoft.Extensions.AI.ApprovalRequiredAIFunctionMicrosoft.Extensions.AI.FunctionApprovalRequestContentMicrosoft.Extensions.AI.FunctionApprovalResponseContentMicrosoft.Extensions.AI.UserInputRequestContentMicrosoft.Extensions.AI.UserInputResponseContentMEAI0005 - Tool Reduction
Microsoft.Extensions.AI.IToolReductionStrategyMicrosoft.Extensions.AI.ToolReducingChatClientMicrosoft.Extensions.AI.ChatClientBuilderToolReductionExtensionsMicrosoft.Extensions.AI.EmbeddingToolReductionStrategyMEAI0006 - Chat Reduction
Microsoft.Extensions.AI.IChatReducerMicrosoft.Extensions.AI.MessageCountingChatReducerMicrosoft.Extensions.AI.SummarizingChatReducerMicrosoft.Extensions.AI.ReducingChatClientMicrosoft.Extensions.AI.ReducingChatClientBuilderExtensionsMEAI0007 - Response Continuations
Microsoft.Extensions.AI.ResponseContinuationTokenMicrosoft.Extensions.AI.ChatOptions.AllowBackgroundResponses(property)Microsoft.Extensions.AI.ChatOptions.ContinuationToken(property)Microsoft.Extensions.AI.ChatResponse.ContinuationToken(property)Microsoft.Extensions.AI.ChatResponseUpdate.ContinuationToken(property)MEAI0008 - Code Interpreter
Microsoft.Extensions.AI.CodeInterpreterToolCallContentMicrosoft.Extensions.AI.CodeInterpreterToolResultContentmicrosoft/agent-framework Usage
Function Approvals (MEAI0004) is used in agent-framework samples:
✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.