diff --git a/docs/list-of-diagnostics.md b/docs/list-of-diagnostics.md
index e38d4905e2b..11363f4d3cd 100644
--- a/docs/list-of-diagnostics.md
+++ b/docs/list-of-diagnostics.md
@@ -41,6 +41,14 @@ if desired.
| `EXTEXP0016` | Hosting integration testing experiments |
| `EXTEXP0017` | Contextual options experiments |
| `EXTEXP0018` | HybridCache experiments |
+| `MEAI0001` | Image generation experiments |
+| `MEAI0002` | Speech-to-text experiments |
+| `MEAI0003` | Hosted MCP server experiments |
+| `MEAI0004` | Function approval experiments |
+| `MEAI0005` | Tool reduction experiments |
+| `MEAI0006` | Chat reduction experiments |
+| `MEAI0007` | Response continuations experiments |
+| `MEAI0008` | Code interpreter experiments |
# Obsoletions
diff --git a/src/Libraries/Microsoft.AspNetCore.Diagnostics.Middleware/Microsoft.AspNetCore.Diagnostics.Middleware.csproj b/src/Libraries/Microsoft.AspNetCore.Diagnostics.Middleware/Microsoft.AspNetCore.Diagnostics.Middleware.csproj
index 2d6e518f1b5..0709f35cd91 100644
--- a/src/Libraries/Microsoft.AspNetCore.Diagnostics.Middleware/Microsoft.AspNetCore.Diagnostics.Middleware.csproj
+++ b/src/Libraries/Microsoft.AspNetCore.Diagnostics.Middleware/Microsoft.AspNetCore.Diagnostics.Middleware.csproj
@@ -14,6 +14,7 @@
$(InterceptorsNamespaces);Microsoft.Extensions.Configuration.Binder.SourceGeneration
true
+ true
true
false
false
diff --git a/src/Libraries/Microsoft.Extensions.AI.Abstractions/ChatCompletion/ChatOptions.cs b/src/Libraries/Microsoft.Extensions.AI.Abstractions/ChatCompletion/ChatOptions.cs
index fe6ef70187c..dbdb09aa071 100644
--- a/src/Libraries/Microsoft.Extensions.AI.Abstractions/ChatCompletion/ChatOptions.cs
+++ b/src/Libraries/Microsoft.Extensions.AI.Abstractions/ChatCompletion/ChatOptions.cs
@@ -5,6 +5,7 @@
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System.Text.Json.Serialization;
+using Microsoft.Shared.DiagnosticIds;
namespace Microsoft.Extensions.AI;
@@ -180,7 +181,7 @@ protected ChatOptions(ChatOptions? other)
/// If the implementation does not support background responses, this property will be ignored.
///
///
- [Experimental("MEAI001")]
+ [Experimental(DiagnosticIds.Experiments.ResponseContinuations, UrlFormat = DiagnosticIds.UrlFormat)]
[JsonIgnore]
public bool? AllowBackgroundResponses { get; set; }
@@ -195,7 +196,7 @@ protected ChatOptions(ChatOptions? other)
/// can be polled for completion by obtaining the token from the property
/// and passing it to this property on subsequent calls to .
///
- [Experimental("MEAI001")]
+ [Experimental(DiagnosticIds.Experiments.ResponseContinuations, UrlFormat = DiagnosticIds.UrlFormat)]
[JsonIgnore]
public ResponseContinuationToken? ContinuationToken { get; set; }
diff --git a/src/Libraries/Microsoft.Extensions.AI.Abstractions/ChatCompletion/ChatResponse.cs b/src/Libraries/Microsoft.Extensions.AI.Abstractions/ChatCompletion/ChatResponse.cs
index 1b535b3a244..dc28f801579 100644
--- a/src/Libraries/Microsoft.Extensions.AI.Abstractions/ChatCompletion/ChatResponse.cs
+++ b/src/Libraries/Microsoft.Extensions.AI.Abstractions/ChatCompletion/ChatResponse.cs
@@ -5,6 +5,7 @@
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System.Text.Json.Serialization;
+using Microsoft.Shared.DiagnosticIds;
using Microsoft.Shared.Diagnostics;
namespace Microsoft.Extensions.AI;
@@ -100,7 +101,7 @@ public IList Messages
/// to poll for completion.
///
///
- [Experimental("MEAI001")]
+ [Experimental(DiagnosticIds.Experiments.ResponseContinuations, UrlFormat = DiagnosticIds.UrlFormat)]
[JsonIgnore]
public ResponseContinuationToken? ContinuationToken { get; set; }
diff --git a/src/Libraries/Microsoft.Extensions.AI.Abstractions/ChatCompletion/ChatResponseUpdate.cs b/src/Libraries/Microsoft.Extensions.AI.Abstractions/ChatCompletion/ChatResponseUpdate.cs
index 22f0dde1530..11e2a8872d4 100644
--- a/src/Libraries/Microsoft.Extensions.AI.Abstractions/ChatCompletion/ChatResponseUpdate.cs
+++ b/src/Libraries/Microsoft.Extensions.AI.Abstractions/ChatCompletion/ChatResponseUpdate.cs
@@ -6,6 +6,7 @@
using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using System.Text.Json.Serialization;
+using Microsoft.Shared.DiagnosticIds;
namespace Microsoft.Extensions.AI;
@@ -170,7 +171,7 @@ public IList Contents
/// to resume streaming from the point of interruption.
///
///
- [Experimental("MEAI001")]
+ [Experimental(DiagnosticIds.Experiments.ResponseContinuations, UrlFormat = DiagnosticIds.UrlFormat)]
[JsonIgnore]
public ResponseContinuationToken? ContinuationToken { get; set; }
diff --git a/src/Libraries/Microsoft.Extensions.AI.Abstractions/ChatReduction/IChatReducer.cs b/src/Libraries/Microsoft.Extensions.AI.Abstractions/ChatReduction/IChatReducer.cs
index 5d85924f251..94d50507c34 100644
--- a/src/Libraries/Microsoft.Extensions.AI.Abstractions/ChatReduction/IChatReducer.cs
+++ b/src/Libraries/Microsoft.Extensions.AI.Abstractions/ChatReduction/IChatReducer.cs
@@ -5,13 +5,14 @@
using System.Diagnostics.CodeAnalysis;
using System.Threading;
using System.Threading.Tasks;
+using Microsoft.Shared.DiagnosticIds;
namespace Microsoft.Extensions.AI;
///
/// Represents a reducer capable of shrinking the size of a list of chat messages.
///
-[Experimental("MEAI001")]
+[Experimental(DiagnosticIds.Experiments.ChatReduction, UrlFormat = DiagnosticIds.UrlFormat)]
public interface IChatReducer
{
/// Reduces the size of a list of chat messages.
diff --git a/src/Libraries/Microsoft.Extensions.AI.Abstractions/Contents/CodeInterpreterToolCallContent.cs b/src/Libraries/Microsoft.Extensions.AI.Abstractions/Contents/CodeInterpreterToolCallContent.cs
index 31681b171be..c77b8509ec8 100644
--- a/src/Libraries/Microsoft.Extensions.AI.Abstractions/Contents/CodeInterpreterToolCallContent.cs
+++ b/src/Libraries/Microsoft.Extensions.AI.Abstractions/Contents/CodeInterpreterToolCallContent.cs
@@ -3,6 +3,7 @@
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
+using Microsoft.Shared.DiagnosticIds;
namespace Microsoft.Extensions.AI;
@@ -13,7 +14,7 @@ namespace Microsoft.Extensions.AI;
/// This content type represents when a hosted AI service invokes a code interpreter tool.
/// It is informational only and represents the call itself, not the result.
///
-[Experimental("MEAI001")]
+[Experimental(DiagnosticIds.Experiments.CodeInterpreter, UrlFormat = DiagnosticIds.UrlFormat)]
public sealed class CodeInterpreterToolCallContent : AIContent
{
///
diff --git a/src/Libraries/Microsoft.Extensions.AI.Abstractions/Contents/CodeInterpreterToolResultContent.cs b/src/Libraries/Microsoft.Extensions.AI.Abstractions/Contents/CodeInterpreterToolResultContent.cs
index 486ee7072ea..d07b00c401d 100644
--- a/src/Libraries/Microsoft.Extensions.AI.Abstractions/Contents/CodeInterpreterToolResultContent.cs
+++ b/src/Libraries/Microsoft.Extensions.AI.Abstractions/Contents/CodeInterpreterToolResultContent.cs
@@ -3,13 +3,14 @@
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
+using Microsoft.Shared.DiagnosticIds;
namespace Microsoft.Extensions.AI;
///
/// Represents the result of a code interpreter tool invocation by a hosted service.
///
-[Experimental("MEAI001")]
+[Experimental(DiagnosticIds.Experiments.CodeInterpreter, UrlFormat = DiagnosticIds.UrlFormat)]
public sealed class CodeInterpreterToolResultContent : AIContent
{
///
diff --git a/src/Libraries/Microsoft.Extensions.AI.Abstractions/Contents/FunctionApprovalRequestContent.cs b/src/Libraries/Microsoft.Extensions.AI.Abstractions/Contents/FunctionApprovalRequestContent.cs
index d3ec7ab8f0b..236bc873c79 100644
--- a/src/Libraries/Microsoft.Extensions.AI.Abstractions/Contents/FunctionApprovalRequestContent.cs
+++ b/src/Libraries/Microsoft.Extensions.AI.Abstractions/Contents/FunctionApprovalRequestContent.cs
@@ -3,6 +3,7 @@
using System;
using System.Diagnostics.CodeAnalysis;
+using Microsoft.Shared.DiagnosticIds;
using Microsoft.Shared.Diagnostics;
namespace Microsoft.Extensions.AI;
@@ -10,7 +11,7 @@ namespace Microsoft.Extensions.AI;
///
/// Represents a request for user approval of a function call.
///
-[Experimental("MEAI001")]
+[Experimental(DiagnosticIds.Experiments.FunctionApprovals, UrlFormat = DiagnosticIds.UrlFormat)]
public sealed class FunctionApprovalRequestContent : UserInputRequestContent
{
///
diff --git a/src/Libraries/Microsoft.Extensions.AI.Abstractions/Contents/FunctionApprovalResponseContent.cs b/src/Libraries/Microsoft.Extensions.AI.Abstractions/Contents/FunctionApprovalResponseContent.cs
index 948dc6a1347..b14b3ebdbe1 100644
--- a/src/Libraries/Microsoft.Extensions.AI.Abstractions/Contents/FunctionApprovalResponseContent.cs
+++ b/src/Libraries/Microsoft.Extensions.AI.Abstractions/Contents/FunctionApprovalResponseContent.cs
@@ -3,6 +3,7 @@
using System;
using System.Diagnostics.CodeAnalysis;
+using Microsoft.Shared.DiagnosticIds;
using Microsoft.Shared.Diagnostics;
namespace Microsoft.Extensions.AI;
@@ -10,7 +11,7 @@ namespace Microsoft.Extensions.AI;
///
/// Represents a response to a function approval request.
///
-[Experimental("MEAI001")]
+[Experimental(DiagnosticIds.Experiments.FunctionApprovals, UrlFormat = DiagnosticIds.UrlFormat)]
public sealed class FunctionApprovalResponseContent : UserInputResponseContent
{
///
diff --git a/src/Libraries/Microsoft.Extensions.AI.Abstractions/Contents/ImageGenerationToolCallContent.cs b/src/Libraries/Microsoft.Extensions.AI.Abstractions/Contents/ImageGenerationToolCallContent.cs
index f5703a39e69..6feea667a30 100644
--- a/src/Libraries/Microsoft.Extensions.AI.Abstractions/Contents/ImageGenerationToolCallContent.cs
+++ b/src/Libraries/Microsoft.Extensions.AI.Abstractions/Contents/ImageGenerationToolCallContent.cs
@@ -2,13 +2,14 @@
// The .NET Foundation licenses this file to you under the MIT license.
using System.Diagnostics.CodeAnalysis;
+using Microsoft.Shared.DiagnosticIds;
namespace Microsoft.Extensions.AI;
///
/// Represents the invocation of an image generation tool call by a hosted service.
///
-[Experimental("MEAI001")]
+[Experimental(DiagnosticIds.Experiments.ImageGeneration, UrlFormat = DiagnosticIds.UrlFormat)]
public sealed class ImageGenerationToolCallContent : AIContent
{
///
diff --git a/src/Libraries/Microsoft.Extensions.AI.Abstractions/Contents/ImageGenerationToolResultContent.cs b/src/Libraries/Microsoft.Extensions.AI.Abstractions/Contents/ImageGenerationToolResultContent.cs
index 2ce6d5045f7..3ff31e6d855 100644
--- a/src/Libraries/Microsoft.Extensions.AI.Abstractions/Contents/ImageGenerationToolResultContent.cs
+++ b/src/Libraries/Microsoft.Extensions.AI.Abstractions/Contents/ImageGenerationToolResultContent.cs
@@ -3,6 +3,7 @@
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
+using Microsoft.Shared.DiagnosticIds;
namespace Microsoft.Extensions.AI;
@@ -13,7 +14,7 @@ namespace Microsoft.Extensions.AI;
/// This content type represents when a hosted AI service invokes an image generation tool.
/// It is informational only and represents the call itself, not the result.
///
-[Experimental("MEAI001")]
+[Experimental(DiagnosticIds.Experiments.ImageGeneration, UrlFormat = DiagnosticIds.UrlFormat)]
public sealed class ImageGenerationToolResultContent : AIContent
{
///
diff --git a/src/Libraries/Microsoft.Extensions.AI.Abstractions/Contents/McpServerToolApprovalRequestContent.cs b/src/Libraries/Microsoft.Extensions.AI.Abstractions/Contents/McpServerToolApprovalRequestContent.cs
index 8f302d901b4..e5d81c89a72 100644
--- a/src/Libraries/Microsoft.Extensions.AI.Abstractions/Contents/McpServerToolApprovalRequestContent.cs
+++ b/src/Libraries/Microsoft.Extensions.AI.Abstractions/Contents/McpServerToolApprovalRequestContent.cs
@@ -3,6 +3,7 @@
using System;
using System.Diagnostics.CodeAnalysis;
+using Microsoft.Shared.DiagnosticIds;
using Microsoft.Shared.Diagnostics;
namespace Microsoft.Extensions.AI;
@@ -10,7 +11,7 @@ namespace Microsoft.Extensions.AI;
///
/// Represents a request for user approval of an MCP server tool call.
///
-[Experimental("MEAI001")]
+[Experimental(DiagnosticIds.Experiments.McpServers, UrlFormat = DiagnosticIds.UrlFormat)]
public sealed class McpServerToolApprovalRequestContent : UserInputRequestContent
{
///
diff --git a/src/Libraries/Microsoft.Extensions.AI.Abstractions/Contents/McpServerToolApprovalResponseContent.cs b/src/Libraries/Microsoft.Extensions.AI.Abstractions/Contents/McpServerToolApprovalResponseContent.cs
index 0e239a79d7f..0ec3e9eb433 100644
--- a/src/Libraries/Microsoft.Extensions.AI.Abstractions/Contents/McpServerToolApprovalResponseContent.cs
+++ b/src/Libraries/Microsoft.Extensions.AI.Abstractions/Contents/McpServerToolApprovalResponseContent.cs
@@ -3,13 +3,14 @@
using System;
using System.Diagnostics.CodeAnalysis;
+using Microsoft.Shared.DiagnosticIds;
namespace Microsoft.Extensions.AI;
///
/// Represents a response to an MCP server tool approval request.
///
-[Experimental("MEAI001")]
+[Experimental(DiagnosticIds.Experiments.McpServers, UrlFormat = DiagnosticIds.UrlFormat)]
public sealed class McpServerToolApprovalResponseContent : UserInputResponseContent
{
///
diff --git a/src/Libraries/Microsoft.Extensions.AI.Abstractions/Contents/McpServerToolCallContent.cs b/src/Libraries/Microsoft.Extensions.AI.Abstractions/Contents/McpServerToolCallContent.cs
index 3283c09a7ee..a2e42b23da8 100644
--- a/src/Libraries/Microsoft.Extensions.AI.Abstractions/Contents/McpServerToolCallContent.cs
+++ b/src/Libraries/Microsoft.Extensions.AI.Abstractions/Contents/McpServerToolCallContent.cs
@@ -4,6 +4,7 @@
using System;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
+using Microsoft.Shared.DiagnosticIds;
using Microsoft.Shared.Diagnostics;
namespace Microsoft.Extensions.AI;
@@ -15,7 +16,7 @@ namespace Microsoft.Extensions.AI;
/// This content type is used to represent an invocation of an MCP server tool by a hosted service.
/// It is informational only.
///
-[Experimental("MEAI001")]
+[Experimental(DiagnosticIds.Experiments.McpServers, UrlFormat = DiagnosticIds.UrlFormat)]
public sealed class McpServerToolCallContent : AIContent
{
///
diff --git a/src/Libraries/Microsoft.Extensions.AI.Abstractions/Contents/McpServerToolResultContent.cs b/src/Libraries/Microsoft.Extensions.AI.Abstractions/Contents/McpServerToolResultContent.cs
index b8329c74d99..3292463719c 100644
--- a/src/Libraries/Microsoft.Extensions.AI.Abstractions/Contents/McpServerToolResultContent.cs
+++ b/src/Libraries/Microsoft.Extensions.AI.Abstractions/Contents/McpServerToolResultContent.cs
@@ -4,6 +4,7 @@
using System;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
+using Microsoft.Shared.DiagnosticIds;
using Microsoft.Shared.Diagnostics;
namespace Microsoft.Extensions.AI;
@@ -15,7 +16,7 @@ namespace Microsoft.Extensions.AI;
/// This content type is used to represent the result of an invocation of an MCP server tool by a hosted service.
/// It is informational only.
///
-[Experimental("MEAI001")]
+[Experimental(DiagnosticIds.Experiments.McpServers, UrlFormat = DiagnosticIds.UrlFormat)]
public sealed class McpServerToolResultContent : AIContent
{
///
diff --git a/src/Libraries/Microsoft.Extensions.AI.Abstractions/Contents/UserInputRequestContent.cs b/src/Libraries/Microsoft.Extensions.AI.Abstractions/Contents/UserInputRequestContent.cs
index b2a2e0e6e95..185bea8369c 100644
--- a/src/Libraries/Microsoft.Extensions.AI.Abstractions/Contents/UserInputRequestContent.cs
+++ b/src/Libraries/Microsoft.Extensions.AI.Abstractions/Contents/UserInputRequestContent.cs
@@ -4,6 +4,7 @@
using System;
using System.Diagnostics.CodeAnalysis;
using System.Text.Json.Serialization;
+using Microsoft.Shared.DiagnosticIds;
using Microsoft.Shared.Diagnostics;
namespace Microsoft.Extensions.AI;
@@ -11,7 +12,7 @@ namespace Microsoft.Extensions.AI;
///
/// Represents a request for user input.
///
-[Experimental("MEAI001")]
+[Experimental(DiagnosticIds.Experiments.FunctionApprovals, UrlFormat = DiagnosticIds.UrlFormat)]
[JsonPolymorphic(TypeDiscriminatorPropertyName = "$type")]
[JsonDerivedType(typeof(FunctionApprovalRequestContent), "functionApprovalRequest")]
[JsonDerivedType(typeof(McpServerToolApprovalRequestContent), "mcpServerToolApprovalRequest")]
diff --git a/src/Libraries/Microsoft.Extensions.AI.Abstractions/Contents/UserInputResponseContent.cs b/src/Libraries/Microsoft.Extensions.AI.Abstractions/Contents/UserInputResponseContent.cs
index 6902f047282..9aba34524ac 100644
--- a/src/Libraries/Microsoft.Extensions.AI.Abstractions/Contents/UserInputResponseContent.cs
+++ b/src/Libraries/Microsoft.Extensions.AI.Abstractions/Contents/UserInputResponseContent.cs
@@ -4,6 +4,7 @@
using System;
using System.Diagnostics.CodeAnalysis;
using System.Text.Json.Serialization;
+using Microsoft.Shared.DiagnosticIds;
using Microsoft.Shared.Diagnostics;
namespace Microsoft.Extensions.AI;
@@ -11,7 +12,7 @@ namespace Microsoft.Extensions.AI;
///
/// Represents the response to a request for user input.
///
-[Experimental("MEAI001")]
+[Experimental(DiagnosticIds.Experiments.FunctionApprovals, UrlFormat = DiagnosticIds.UrlFormat)]
[JsonPolymorphic(TypeDiscriminatorPropertyName = "$type")]
[JsonDerivedType(typeof(FunctionApprovalResponseContent), "functionApprovalResponse")]
[JsonDerivedType(typeof(McpServerToolApprovalResponseContent), "mcpServerToolApprovalResponse")]
diff --git a/src/Libraries/Microsoft.Extensions.AI.Abstractions/Functions/ApprovalRequiredAIFunction.cs b/src/Libraries/Microsoft.Extensions.AI.Abstractions/Functions/ApprovalRequiredAIFunction.cs
index 994e4660ac1..12ef5aa34ec 100644
--- a/src/Libraries/Microsoft.Extensions.AI.Abstractions/Functions/ApprovalRequiredAIFunction.cs
+++ b/src/Libraries/Microsoft.Extensions.AI.Abstractions/Functions/ApprovalRequiredAIFunction.cs
@@ -3,6 +3,7 @@
using System;
using System.Diagnostics.CodeAnalysis;
+using Microsoft.Shared.DiagnosticIds;
namespace Microsoft.Extensions.AI;
@@ -14,7 +15,7 @@ namespace Microsoft.Extensions.AI;
/// This class simply augments an with an indication that approval is required before invocation.
/// It does not enforce the requirement for user approval; it is the responsibility of the invoker to obtain that approval before invoking the function.
///
-[Experimental("MEAI001")]
+[Experimental(DiagnosticIds.Experiments.FunctionApprovals, UrlFormat = DiagnosticIds.UrlFormat)]
public sealed class ApprovalRequiredAIFunction : DelegatingAIFunction
{
///
diff --git a/src/Libraries/Microsoft.Extensions.AI.Abstractions/HostedMcpServerToolAlwaysRequireApprovalMode.cs b/src/Libraries/Microsoft.Extensions.AI.Abstractions/HostedMcpServerToolAlwaysRequireApprovalMode.cs
index 388ffbc2f7f..a035377e363 100644
--- a/src/Libraries/Microsoft.Extensions.AI.Abstractions/HostedMcpServerToolAlwaysRequireApprovalMode.cs
+++ b/src/Libraries/Microsoft.Extensions.AI.Abstractions/HostedMcpServerToolAlwaysRequireApprovalMode.cs
@@ -3,6 +3,7 @@
using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
+using Microsoft.Shared.DiagnosticIds;
namespace Microsoft.Extensions.AI;
@@ -12,7 +13,7 @@ namespace Microsoft.Extensions.AI;
///
/// Use to get an instance of .
///
-[Experimental("MEAI001")]
+[Experimental(DiagnosticIds.Experiments.McpServers, UrlFormat = DiagnosticIds.UrlFormat)]
[DebuggerDisplay(nameof(AlwaysRequire))]
public sealed class HostedMcpServerToolAlwaysRequireApprovalMode : HostedMcpServerToolApprovalMode
{
diff --git a/src/Libraries/Microsoft.Extensions.AI.Abstractions/HostedMcpServerToolApprovalMode.cs b/src/Libraries/Microsoft.Extensions.AI.Abstractions/HostedMcpServerToolApprovalMode.cs
index 9bc1a7e6423..25af6482603 100644
--- a/src/Libraries/Microsoft.Extensions.AI.Abstractions/HostedMcpServerToolApprovalMode.cs
+++ b/src/Libraries/Microsoft.Extensions.AI.Abstractions/HostedMcpServerToolApprovalMode.cs
@@ -4,6 +4,7 @@
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System.Text.Json.Serialization;
+using Microsoft.Shared.DiagnosticIds;
namespace Microsoft.Extensions.AI;
@@ -14,7 +15,7 @@ namespace Microsoft.Extensions.AI;
/// The predefined values , and are provided to specify handling for all tools.
/// To specify approval behavior for individual tool names, use .
///
-[Experimental("MEAI001")]
+[Experimental(DiagnosticIds.Experiments.McpServers, UrlFormat = DiagnosticIds.UrlFormat)]
[JsonPolymorphic(TypeDiscriminatorPropertyName = "$type")]
[JsonDerivedType(typeof(HostedMcpServerToolNeverRequireApprovalMode), typeDiscriminator: "never")]
[JsonDerivedType(typeof(HostedMcpServerToolAlwaysRequireApprovalMode), typeDiscriminator: "always")]
diff --git a/src/Libraries/Microsoft.Extensions.AI.Abstractions/HostedMcpServerToolNeverRequireApprovalMode.cs b/src/Libraries/Microsoft.Extensions.AI.Abstractions/HostedMcpServerToolNeverRequireApprovalMode.cs
index bca80649f0d..1448051cd84 100644
--- a/src/Libraries/Microsoft.Extensions.AI.Abstractions/HostedMcpServerToolNeverRequireApprovalMode.cs
+++ b/src/Libraries/Microsoft.Extensions.AI.Abstractions/HostedMcpServerToolNeverRequireApprovalMode.cs
@@ -3,6 +3,7 @@
using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
+using Microsoft.Shared.DiagnosticIds;
namespace Microsoft.Extensions.AI;
@@ -12,7 +13,7 @@ namespace Microsoft.Extensions.AI;
///
/// Use to get an instance of .
///
-[Experimental("MEAI001")]
+[Experimental(DiagnosticIds.Experiments.McpServers, UrlFormat = DiagnosticIds.UrlFormat)]
[DebuggerDisplay(nameof(NeverRequire))]
public sealed class HostedMcpServerToolNeverRequireApprovalMode : HostedMcpServerToolApprovalMode
{
diff --git a/src/Libraries/Microsoft.Extensions.AI.Abstractions/HostedMcpServerToolRequireSpecificApprovalMode.cs b/src/Libraries/Microsoft.Extensions.AI.Abstractions/HostedMcpServerToolRequireSpecificApprovalMode.cs
index 267b25334e1..1134f0734f4 100644
--- a/src/Libraries/Microsoft.Extensions.AI.Abstractions/HostedMcpServerToolRequireSpecificApprovalMode.cs
+++ b/src/Libraries/Microsoft.Extensions.AI.Abstractions/HostedMcpServerToolRequireSpecificApprovalMode.cs
@@ -5,13 +5,14 @@
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System.Linq;
+using Microsoft.Shared.DiagnosticIds;
namespace Microsoft.Extensions.AI;
///
/// Represents a mode where approval behavior is specified for individual tool names.
///
-[Experimental("MEAI001")]
+[Experimental(DiagnosticIds.Experiments.McpServers, UrlFormat = DiagnosticIds.UrlFormat)]
public sealed class HostedMcpServerToolRequireSpecificApprovalMode : HostedMcpServerToolApprovalMode
{
///
diff --git a/src/Libraries/Microsoft.Extensions.AI.Abstractions/Image/DelegatingImageGenerator.cs b/src/Libraries/Microsoft.Extensions.AI.Abstractions/Image/DelegatingImageGenerator.cs
index 91ffb136af5..d973c427ba9 100644
--- a/src/Libraries/Microsoft.Extensions.AI.Abstractions/Image/DelegatingImageGenerator.cs
+++ b/src/Libraries/Microsoft.Extensions.AI.Abstractions/Image/DelegatingImageGenerator.cs
@@ -5,6 +5,7 @@
using System.Diagnostics.CodeAnalysis;
using System.Threading;
using System.Threading.Tasks;
+using Microsoft.Shared.DiagnosticIds;
using Microsoft.Shared.Diagnostics;
namespace Microsoft.Extensions.AI;
@@ -16,7 +17,7 @@ namespace Microsoft.Extensions.AI;
/// This is recommended as a base type when building generators that can be chained in any order around an underlying .
/// The default implementation simply passes each call to the inner generator instance.
///
-[Experimental("MEAI001")]
+[Experimental(DiagnosticIds.Experiments.ImageGeneration, UrlFormat = DiagnosticIds.UrlFormat)]
public class DelegatingImageGenerator : IImageGenerator
{
///
diff --git a/src/Libraries/Microsoft.Extensions.AI.Abstractions/Image/IImageGenerator.cs b/src/Libraries/Microsoft.Extensions.AI.Abstractions/Image/IImageGenerator.cs
index e630ecff8e9..6f8b48ddf3d 100644
--- a/src/Libraries/Microsoft.Extensions.AI.Abstractions/Image/IImageGenerator.cs
+++ b/src/Libraries/Microsoft.Extensions.AI.Abstractions/Image/IImageGenerator.cs
@@ -5,13 +5,14 @@
using System.Diagnostics.CodeAnalysis;
using System.Threading;
using System.Threading.Tasks;
+using Microsoft.Shared.DiagnosticIds;
namespace Microsoft.Extensions.AI;
///
/// Represents a generator of images.
///
-[Experimental("MEAI001")]
+[Experimental(DiagnosticIds.Experiments.ImageGeneration, UrlFormat = DiagnosticIds.UrlFormat)]
public interface IImageGenerator : IDisposable
{
///
diff --git a/src/Libraries/Microsoft.Extensions.AI.Abstractions/Image/ImageGenerationOptions.cs b/src/Libraries/Microsoft.Extensions.AI.Abstractions/Image/ImageGenerationOptions.cs
index 586fbcc8bbe..38abfdbeb2d 100644
--- a/src/Libraries/Microsoft.Extensions.AI.Abstractions/Image/ImageGenerationOptions.cs
+++ b/src/Libraries/Microsoft.Extensions.AI.Abstractions/Image/ImageGenerationOptions.cs
@@ -5,11 +5,12 @@
using System.Diagnostics.CodeAnalysis;
using System.Drawing;
using System.Text.Json.Serialization;
+using Microsoft.Shared.DiagnosticIds;
namespace Microsoft.Extensions.AI;
/// Represents the options for an image generation request.
-[Experimental("MEAI001")]
+[Experimental(DiagnosticIds.Experiments.ImageGeneration, UrlFormat = DiagnosticIds.UrlFormat)]
public class ImageGenerationOptions
{
/// Initializes a new instance of the class.
@@ -100,7 +101,7 @@ protected ImageGenerationOptions(ImageGenerationOptions? other)
///
/// Not all implementations support all response formats and this value might be ignored by the implementation if not supported.
///
-[Experimental("MEAI001")]
+[Experimental(DiagnosticIds.Experiments.ImageGeneration, UrlFormat = DiagnosticIds.UrlFormat)]
public enum ImageGenerationResponseFormat
{
///
diff --git a/src/Libraries/Microsoft.Extensions.AI.Abstractions/Image/ImageGenerationRequest.cs b/src/Libraries/Microsoft.Extensions.AI.Abstractions/Image/ImageGenerationRequest.cs
index d519d08c731..4de522d2c6e 100644
--- a/src/Libraries/Microsoft.Extensions.AI.Abstractions/Image/ImageGenerationRequest.cs
+++ b/src/Libraries/Microsoft.Extensions.AI.Abstractions/Image/ImageGenerationRequest.cs
@@ -3,11 +3,12 @@
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
+using Microsoft.Shared.DiagnosticIds;
namespace Microsoft.Extensions.AI;
/// Represents a request for image generation.
-[Experimental("MEAI001")]
+[Experimental(DiagnosticIds.Experiments.ImageGeneration, UrlFormat = DiagnosticIds.UrlFormat)]
public class ImageGenerationRequest
{
/// Initializes a new instance of the class.
diff --git a/src/Libraries/Microsoft.Extensions.AI.Abstractions/Image/ImageGenerationResponse.cs b/src/Libraries/Microsoft.Extensions.AI.Abstractions/Image/ImageGenerationResponse.cs
index 8f093634783..facac3d3dc0 100644
--- a/src/Libraries/Microsoft.Extensions.AI.Abstractions/Image/ImageGenerationResponse.cs
+++ b/src/Libraries/Microsoft.Extensions.AI.Abstractions/Image/ImageGenerationResponse.cs
@@ -4,11 +4,12 @@
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System.Text.Json.Serialization;
+using Microsoft.Shared.DiagnosticIds;
namespace Microsoft.Extensions.AI;
/// Represents the result of an image generation request.
-[Experimental("MEAI001")]
+[Experimental(DiagnosticIds.Experiments.ImageGeneration, UrlFormat = DiagnosticIds.UrlFormat)]
public class ImageGenerationResponse
{
/// Initializes a new instance of the class.
diff --git a/src/Libraries/Microsoft.Extensions.AI.Abstractions/Image/ImageGeneratorExtensions.cs b/src/Libraries/Microsoft.Extensions.AI.Abstractions/Image/ImageGeneratorExtensions.cs
index fe976231635..803d1001eb4 100644
--- a/src/Libraries/Microsoft.Extensions.AI.Abstractions/Image/ImageGeneratorExtensions.cs
+++ b/src/Libraries/Microsoft.Extensions.AI.Abstractions/Image/ImageGeneratorExtensions.cs
@@ -7,12 +7,13 @@
using System.IO;
using System.Threading;
using System.Threading.Tasks;
+using Microsoft.Shared.DiagnosticIds;
using Microsoft.Shared.Diagnostics;
namespace Microsoft.Extensions.AI;
/// Provides extension methods for .
-[Experimental("MEAI001")]
+[Experimental(DiagnosticIds.Experiments.ImageGeneration, UrlFormat = DiagnosticIds.UrlFormat)]
public static class ImageGeneratorExtensions
{
private static readonly Dictionary _extensionToMimeType = new(StringComparer.OrdinalIgnoreCase)
diff --git a/src/Libraries/Microsoft.Extensions.AI.Abstractions/Image/ImageGeneratorMetadata.cs b/src/Libraries/Microsoft.Extensions.AI.Abstractions/Image/ImageGeneratorMetadata.cs
index c5604155285..057b7a8abbe 100644
--- a/src/Libraries/Microsoft.Extensions.AI.Abstractions/Image/ImageGeneratorMetadata.cs
+++ b/src/Libraries/Microsoft.Extensions.AI.Abstractions/Image/ImageGeneratorMetadata.cs
@@ -3,11 +3,12 @@
using System;
using System.Diagnostics.CodeAnalysis;
+using Microsoft.Shared.DiagnosticIds;
namespace Microsoft.Extensions.AI;
/// Provides metadata about an .
-[Experimental("MEAI001")]
+[Experimental(DiagnosticIds.Experiments.ImageGeneration, UrlFormat = DiagnosticIds.UrlFormat)]
public class ImageGeneratorMetadata
{
/// Initializes a new instance of the class.
diff --git a/src/Libraries/Microsoft.Extensions.AI.Abstractions/Microsoft.Extensions.AI.Abstractions.csproj b/src/Libraries/Microsoft.Extensions.AI.Abstractions/Microsoft.Extensions.AI.Abstractions.csproj
index 99340a1d2e9..1095c7c991d 100644
--- a/src/Libraries/Microsoft.Extensions.AI.Abstractions/Microsoft.Extensions.AI.Abstractions.csproj
+++ b/src/Libraries/Microsoft.Extensions.AI.Abstractions/Microsoft.Extensions.AI.Abstractions.csproj
@@ -15,7 +15,7 @@
$(TargetFrameworks);netstandard2.0
- $(NoWarn);MEAI001
+ $(NoWarn);MEAI0001;MEAI0002;MEAI0003;MEAI0004;MEAI0005;MEAI0006;MEAI0007;MEAI0008
true
true
@@ -23,6 +23,7 @@
true
true
+ true
true
true
true
diff --git a/src/Libraries/Microsoft.Extensions.AI.Abstractions/ResponseContinuationToken.cs b/src/Libraries/Microsoft.Extensions.AI.Abstractions/ResponseContinuationToken.cs
index cf73130be10..e0b17d18b95 100644
--- a/src/Libraries/Microsoft.Extensions.AI.Abstractions/ResponseContinuationToken.cs
+++ b/src/Libraries/Microsoft.Extensions.AI.Abstractions/ResponseContinuationToken.cs
@@ -6,6 +6,7 @@
using System.Diagnostics.CodeAnalysis;
using System.Text.Json;
using System.Text.Json.Serialization;
+using Microsoft.Shared.DiagnosticIds;
using Microsoft.Shared.Diagnostics;
namespace Microsoft.Extensions.AI;
@@ -16,7 +17,7 @@ namespace Microsoft.Extensions.AI;
/// Subclasses of this class encapsulate all necessary information within the token to facilitate these actions.
///
[JsonConverter(typeof(Converter))]
-[Experimental("MEAI001")]
+[Experimental(DiagnosticIds.Experiments.ResponseContinuations, UrlFormat = DiagnosticIds.UrlFormat)]
public class ResponseContinuationToken
{
/// Bytes representing this token.
@@ -47,7 +48,7 @@ protected ResponseContinuationToken(ReadOnlyMemory bytes)
/// Provides a for serializing instances.
[EditorBrowsable(EditorBrowsableState.Never)]
- [Experimental("MEAI001")]
+ [Experimental(DiagnosticIds.Experiments.ResponseContinuations, UrlFormat = DiagnosticIds.UrlFormat)]
public sealed class Converter : JsonConverter
{
///
diff --git a/src/Libraries/Microsoft.Extensions.AI.Abstractions/SpeechToText/DelegatingSpeechToTextClient.cs b/src/Libraries/Microsoft.Extensions.AI.Abstractions/SpeechToText/DelegatingSpeechToTextClient.cs
index 6cbe2392e4c..ae68c7317e8 100644
--- a/src/Libraries/Microsoft.Extensions.AI.Abstractions/SpeechToText/DelegatingSpeechToTextClient.cs
+++ b/src/Libraries/Microsoft.Extensions.AI.Abstractions/SpeechToText/DelegatingSpeechToTextClient.cs
@@ -7,6 +7,7 @@
using System.IO;
using System.Threading;
using System.Threading.Tasks;
+using Microsoft.Shared.DiagnosticIds;
using Microsoft.Shared.Diagnostics;
namespace Microsoft.Extensions.AI;
@@ -18,7 +19,7 @@ namespace Microsoft.Extensions.AI;
/// This is recommended as a base type when building clients that can be chained in any order around an underlying .
/// The default implementation simply passes each call to the inner client instance.
///
-[Experimental("MEAI001")]
+[Experimental(DiagnosticIds.Experiments.SpeechToText, UrlFormat = DiagnosticIds.UrlFormat)]
public class DelegatingSpeechToTextClient : ISpeechToTextClient
{
///
diff --git a/src/Libraries/Microsoft.Extensions.AI.Abstractions/SpeechToText/ISpeechToTextClient.cs b/src/Libraries/Microsoft.Extensions.AI.Abstractions/SpeechToText/ISpeechToTextClient.cs
index 65458d6602c..a4ca76fc2de 100644
--- a/src/Libraries/Microsoft.Extensions.AI.Abstractions/SpeechToText/ISpeechToTextClient.cs
+++ b/src/Libraries/Microsoft.Extensions.AI.Abstractions/SpeechToText/ISpeechToTextClient.cs
@@ -7,6 +7,7 @@
using System.IO;
using System.Threading;
using System.Threading.Tasks;
+using Microsoft.Shared.DiagnosticIds;
namespace Microsoft.Extensions.AI;
@@ -25,7 +26,7 @@ namespace Microsoft.Extensions.AI;
/// The audio speech stream passed to these methods will not be closed or disposed by the implementation.
///
///
-[Experimental("MEAI001")]
+[Experimental(DiagnosticIds.Experiments.SpeechToText, UrlFormat = DiagnosticIds.UrlFormat)]
public interface ISpeechToTextClient : IDisposable
{
/// Sends audio speech content to the model and returns the generated text.
diff --git a/src/Libraries/Microsoft.Extensions.AI.Abstractions/SpeechToText/SpeechToTextClientExtensions.cs b/src/Libraries/Microsoft.Extensions.AI.Abstractions/SpeechToText/SpeechToTextClientExtensions.cs
index d8ca62f34ea..f90176adc78 100644
--- a/src/Libraries/Microsoft.Extensions.AI.Abstractions/SpeechToText/SpeechToTextClientExtensions.cs
+++ b/src/Libraries/Microsoft.Extensions.AI.Abstractions/SpeechToText/SpeechToTextClientExtensions.cs
@@ -7,12 +7,13 @@
using System.Runtime.InteropServices;
using System.Threading;
using System.Threading.Tasks;
+using Microsoft.Shared.DiagnosticIds;
using Microsoft.Shared.Diagnostics;
namespace Microsoft.Extensions.AI;
/// Extensions for .
-[Experimental("MEAI001")]
+[Experimental(DiagnosticIds.Experiments.SpeechToText, UrlFormat = DiagnosticIds.UrlFormat)]
public static class SpeechToTextClientExtensions
{
/// Asks the for an object of type .
diff --git a/src/Libraries/Microsoft.Extensions.AI.Abstractions/SpeechToText/SpeechToTextClientMetadata.cs b/src/Libraries/Microsoft.Extensions.AI.Abstractions/SpeechToText/SpeechToTextClientMetadata.cs
index df39fb7facc..e830b461494 100644
--- a/src/Libraries/Microsoft.Extensions.AI.Abstractions/SpeechToText/SpeechToTextClientMetadata.cs
+++ b/src/Libraries/Microsoft.Extensions.AI.Abstractions/SpeechToText/SpeechToTextClientMetadata.cs
@@ -3,11 +3,12 @@
using System;
using System.Diagnostics.CodeAnalysis;
+using Microsoft.Shared.DiagnosticIds;
namespace Microsoft.Extensions.AI;
/// Provides metadata about an .
-[Experimental("MEAI001")]
+[Experimental(DiagnosticIds.Experiments.SpeechToText, UrlFormat = DiagnosticIds.UrlFormat)]
public class SpeechToTextClientMetadata
{
/// Initializes a new instance of the class.
diff --git a/src/Libraries/Microsoft.Extensions.AI.Abstractions/SpeechToText/SpeechToTextOptions.cs b/src/Libraries/Microsoft.Extensions.AI.Abstractions/SpeechToText/SpeechToTextOptions.cs
index 0e93a9bb1af..4a68a3c7cce 100644
--- a/src/Libraries/Microsoft.Extensions.AI.Abstractions/SpeechToText/SpeechToTextOptions.cs
+++ b/src/Libraries/Microsoft.Extensions.AI.Abstractions/SpeechToText/SpeechToTextOptions.cs
@@ -4,11 +4,12 @@
using System;
using System.Diagnostics.CodeAnalysis;
using System.Text.Json.Serialization;
+using Microsoft.Shared.DiagnosticIds;
namespace Microsoft.Extensions.AI;
/// Represents the options for an speech to text request.
-[Experimental("MEAI001")]
+[Experimental(DiagnosticIds.Experiments.SpeechToText, UrlFormat = DiagnosticIds.UrlFormat)]
public class SpeechToTextOptions
{
/// Initializes a new instance of the class.
diff --git a/src/Libraries/Microsoft.Extensions.AI.Abstractions/SpeechToText/SpeechToTextResponse.cs b/src/Libraries/Microsoft.Extensions.AI.Abstractions/SpeechToText/SpeechToTextResponse.cs
index a63d5cf2d63..10af715676b 100644
--- a/src/Libraries/Microsoft.Extensions.AI.Abstractions/SpeechToText/SpeechToTextResponse.cs
+++ b/src/Libraries/Microsoft.Extensions.AI.Abstractions/SpeechToText/SpeechToTextResponse.cs
@@ -5,12 +5,13 @@
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System.Text.Json.Serialization;
+using Microsoft.Shared.DiagnosticIds;
using Microsoft.Shared.Diagnostics;
namespace Microsoft.Extensions.AI;
/// Represents the result of an speech to text request.
-[Experimental("MEAI001")]
+[Experimental(DiagnosticIds.Experiments.SpeechToText, UrlFormat = DiagnosticIds.UrlFormat)]
public class SpeechToTextResponse
{
/// The content items in the generated text response.
diff --git a/src/Libraries/Microsoft.Extensions.AI.Abstractions/SpeechToText/SpeechToTextResponseUpdate.cs b/src/Libraries/Microsoft.Extensions.AI.Abstractions/SpeechToText/SpeechToTextResponseUpdate.cs
index e65dd7dcbe7..275d03e8abf 100644
--- a/src/Libraries/Microsoft.Extensions.AI.Abstractions/SpeechToText/SpeechToTextResponseUpdate.cs
+++ b/src/Libraries/Microsoft.Extensions.AI.Abstractions/SpeechToText/SpeechToTextResponseUpdate.cs
@@ -5,6 +5,7 @@
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System.Text.Json.Serialization;
+using Microsoft.Shared.DiagnosticIds;
using Microsoft.Shared.Diagnostics;
namespace Microsoft.Extensions.AI;
@@ -28,7 +29,7 @@ namespace Microsoft.Extensions.AI;
/// only one slot for such an object available in .
///
///
-[Experimental("MEAI001")]
+[Experimental(DiagnosticIds.Experiments.SpeechToText, UrlFormat = DiagnosticIds.UrlFormat)]
public class SpeechToTextResponseUpdate
{
private IList? _contents;
diff --git a/src/Libraries/Microsoft.Extensions.AI.Abstractions/SpeechToText/SpeechToTextResponseUpdateExtensions.cs b/src/Libraries/Microsoft.Extensions.AI.Abstractions/SpeechToText/SpeechToTextResponseUpdateExtensions.cs
index 67272761ceb..e5e722afd5d 100644
--- a/src/Libraries/Microsoft.Extensions.AI.Abstractions/SpeechToText/SpeechToTextResponseUpdateExtensions.cs
+++ b/src/Libraries/Microsoft.Extensions.AI.Abstractions/SpeechToText/SpeechToTextResponseUpdateExtensions.cs
@@ -5,6 +5,7 @@
using System.Diagnostics.CodeAnalysis;
using System.Threading;
using System.Threading.Tasks;
+using Microsoft.Shared.DiagnosticIds;
using Microsoft.Shared.Diagnostics;
namespace Microsoft.Extensions.AI;
@@ -12,7 +13,7 @@ namespace Microsoft.Extensions.AI;
///
/// Provides extension methods for working with instances.
///
-[Experimental("MEAI001")]
+[Experimental(DiagnosticIds.Experiments.SpeechToText, UrlFormat = DiagnosticIds.UrlFormat)]
public static class SpeechToTextResponseUpdateExtensions
{
/// Combines instances into a single .
diff --git a/src/Libraries/Microsoft.Extensions.AI.Abstractions/SpeechToText/SpeechToTextResponseUpdateKind.cs b/src/Libraries/Microsoft.Extensions.AI.Abstractions/SpeechToText/SpeechToTextResponseUpdateKind.cs
index 1a3d7b0a474..1a2afb00bac 100644
--- a/src/Libraries/Microsoft.Extensions.AI.Abstractions/SpeechToText/SpeechToTextResponseUpdateKind.cs
+++ b/src/Libraries/Microsoft.Extensions.AI.Abstractions/SpeechToText/SpeechToTextResponseUpdateKind.cs
@@ -6,6 +6,7 @@
using System.Diagnostics.CodeAnalysis;
using System.Text.Json;
using System.Text.Json.Serialization;
+using Microsoft.Shared.DiagnosticIds;
using Microsoft.Shared.Diagnostics;
namespace Microsoft.Extensions.AI;
@@ -13,7 +14,7 @@ namespace Microsoft.Extensions.AI;
///
/// Describes the intended purpose of a specific update during streaming of speech to text updates.
///
-[Experimental("MEAI001")]
+[Experimental(DiagnosticIds.Experiments.SpeechToText, UrlFormat = DiagnosticIds.UrlFormat)]
[JsonConverter(typeof(Converter))]
public readonly struct SpeechToTextResponseUpdateKind : IEquatable
{
diff --git a/src/Libraries/Microsoft.Extensions.AI.Abstractions/ToolReduction/IToolReductionStrategy.cs b/src/Libraries/Microsoft.Extensions.AI.Abstractions/ToolReduction/IToolReductionStrategy.cs
index 029eeae47a1..ee4d2dbb0dd 100644
--- a/src/Libraries/Microsoft.Extensions.AI.Abstractions/ToolReduction/IToolReductionStrategy.cs
+++ b/src/Libraries/Microsoft.Extensions.AI.Abstractions/ToolReduction/IToolReductionStrategy.cs
@@ -5,6 +5,7 @@
using System.Diagnostics.CodeAnalysis;
using System.Threading;
using System.Threading.Tasks;
+using Microsoft.Shared.DiagnosticIds;
namespace Microsoft.Extensions.AI;
@@ -21,7 +22,7 @@ namespace Microsoft.Extensions.AI;
/// the caller may replace the existing tool list.
///
///
-[Experimental("MEAI001")]
+[Experimental(DiagnosticIds.Experiments.ToolReduction, UrlFormat = DiagnosticIds.UrlFormat)]
public interface IToolReductionStrategy
{
///
diff --git a/src/Libraries/Microsoft.Extensions.AI.Abstractions/Tools/HostedImageGenerationTool.cs b/src/Libraries/Microsoft.Extensions.AI.Abstractions/Tools/HostedImageGenerationTool.cs
index aca072653ab..93b3f7eee21 100644
--- a/src/Libraries/Microsoft.Extensions.AI.Abstractions/Tools/HostedImageGenerationTool.cs
+++ b/src/Libraries/Microsoft.Extensions.AI.Abstractions/Tools/HostedImageGenerationTool.cs
@@ -2,6 +2,7 @@
// The .NET Foundation licenses this file to you under the MIT license.
using System.Diagnostics.CodeAnalysis;
+using Microsoft.Shared.DiagnosticIds;
namespace Microsoft.Extensions.AI;
@@ -10,7 +11,7 @@ namespace Microsoft.Extensions.AI;
/// This tool does not itself implement image generation. It is a marker that can be used to inform a service
/// that the service is allowed to perform image generation if the service is capable of doing so.
///
-[Experimental("MEAI001")]
+[Experimental(DiagnosticIds.Experiments.ImageGeneration, UrlFormat = DiagnosticIds.UrlFormat)]
public class HostedImageGenerationTool : AITool
{
///
diff --git a/src/Libraries/Microsoft.Extensions.AI.Abstractions/Tools/HostedMcpServerTool.cs b/src/Libraries/Microsoft.Extensions.AI.Abstractions/Tools/HostedMcpServerTool.cs
index aa33a581710..c01ff58f12c 100644
--- a/src/Libraries/Microsoft.Extensions.AI.Abstractions/Tools/HostedMcpServerTool.cs
+++ b/src/Libraries/Microsoft.Extensions.AI.Abstractions/Tools/HostedMcpServerTool.cs
@@ -4,6 +4,7 @@
using System;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
+using Microsoft.Shared.DiagnosticIds;
using Microsoft.Shared.Diagnostics;
namespace Microsoft.Extensions.AI;
@@ -11,7 +12,7 @@ namespace Microsoft.Extensions.AI;
///
/// Represents a hosted MCP server tool that can be specified to an AI service.
///
-[Experimental("MEAI001")]
+[Experimental(DiagnosticIds.Experiments.McpServers, UrlFormat = DiagnosticIds.UrlFormat)]
public class HostedMcpServerTool : AITool
{
///
diff --git a/src/Libraries/Microsoft.Extensions.AI.OpenAI/Microsoft.Extensions.AI.OpenAI.csproj b/src/Libraries/Microsoft.Extensions.AI.OpenAI/Microsoft.Extensions.AI.OpenAI.csproj
index 3401a510e01..4296cf6d86c 100644
--- a/src/Libraries/Microsoft.Extensions.AI.OpenAI/Microsoft.Extensions.AI.OpenAI.csproj
+++ b/src/Libraries/Microsoft.Extensions.AI.OpenAI/Microsoft.Extensions.AI.OpenAI.csproj
@@ -16,8 +16,7 @@
$(TargetFrameworks);netstandard2.0
- $(NoWarn);CA1063
- $(NoWarn);OPENAI001;OPENAI002;MEAI001;SCME0001
+ $(NoWarn);CA1063;OPENAI001;OPENAI002;MEAI0001;MEAI0002;MEAI0003;MEAI0004;MEAI0005;MEAI0006;MEAI0007;MEAI0008;SCME0001
true
true
true
@@ -27,6 +26,7 @@
true
true
true
+ true
true
diff --git a/src/Libraries/Microsoft.Extensions.AI.OpenAI/OpenAIClientExtensions.cs b/src/Libraries/Microsoft.Extensions.AI.OpenAI/OpenAIClientExtensions.cs
index 285b2c1e7ae..7776ec64edb 100644
--- a/src/Libraries/Microsoft.Extensions.AI.OpenAI/OpenAIClientExtensions.cs
+++ b/src/Libraries/Microsoft.Extensions.AI.OpenAI/OpenAIClientExtensions.cs
@@ -9,6 +9,7 @@
using System.Text.Json;
using System.Text.Json.Nodes;
using System.Text.Json.Serialization;
+using Microsoft.Shared.DiagnosticIds;
using OpenAI;
using OpenAI.Assistants;
using OpenAI.Audio;
@@ -151,7 +152,7 @@ public static IChatClient AsIChatClient(this AssistantClient assistantClient, As
/// The client.
/// An that can be used to transcribe audio via the .
/// is .
- [Experimental("MEAI001")]
+ [Experimental(DiagnosticIds.Experiments.SpeechToText, UrlFormat = DiagnosticIds.UrlFormat)]
public static ISpeechToTextClient AsISpeechToTextClient(this AudioClient audioClient) =>
new OpenAISpeechToTextClient(audioClient);
@@ -159,7 +160,7 @@ public static ISpeechToTextClient AsISpeechToTextClient(this AudioClient audioCl
/// The client.
/// An that can be used to generate images via the .
/// is .
- [Experimental("MEAI001")]
+ [Experimental(DiagnosticIds.Experiments.ImageGeneration, UrlFormat = DiagnosticIds.UrlFormat)]
public static IImageGenerator AsIImageGenerator(this ImageClient imageClient) =>
new OpenAIImageGenerator(imageClient);
diff --git a/src/Libraries/Microsoft.Extensions.AI.OpenAI/OpenAISpeechToTextClient.cs b/src/Libraries/Microsoft.Extensions.AI.OpenAI/OpenAISpeechToTextClient.cs
index fb0901eeb0d..2470d8e9bcf 100644
--- a/src/Libraries/Microsoft.Extensions.AI.OpenAI/OpenAISpeechToTextClient.cs
+++ b/src/Libraries/Microsoft.Extensions.AI.OpenAI/OpenAISpeechToTextClient.cs
@@ -8,6 +8,7 @@
using System.Runtime.CompilerServices;
using System.Threading;
using System.Threading.Tasks;
+using Microsoft.Shared.DiagnosticIds;
using Microsoft.Shared.Diagnostics;
using OpenAI;
using OpenAI.Audio;
@@ -18,7 +19,7 @@
namespace Microsoft.Extensions.AI;
/// Represents an for an OpenAI or .
-[Experimental("MEAI001")]
+[Experimental(DiagnosticIds.Experiments.SpeechToText, UrlFormat = DiagnosticIds.UrlFormat)]
internal sealed class OpenAISpeechToTextClient : ISpeechToTextClient
{
/// Filename to use when audio lacks a name.
diff --git a/src/Libraries/Microsoft.Extensions.AI/ChatCompletion/ImageGeneratingChatClient.cs b/src/Libraries/Microsoft.Extensions.AI/ChatCompletion/ImageGeneratingChatClient.cs
index 436adeb2295..f31aea99a3d 100644
--- a/src/Libraries/Microsoft.Extensions.AI/ChatCompletion/ImageGeneratingChatClient.cs
+++ b/src/Libraries/Microsoft.Extensions.AI/ChatCompletion/ImageGeneratingChatClient.cs
@@ -9,6 +9,7 @@
using System.Runtime.CompilerServices;
using System.Threading;
using System.Threading.Tasks;
+using Microsoft.Shared.DiagnosticIds;
using Microsoft.Shared.Diagnostics;
namespace Microsoft.Extensions.AI;
@@ -24,7 +25,7 @@ namespace Microsoft.Extensions.AI;
/// and replaces them with equivalent function tools that the chat client can invoke to perform image generation and editing operations.
///
///
-[Experimental("MEAI001")]
+[Experimental(DiagnosticIds.Experiments.ImageGeneration, UrlFormat = DiagnosticIds.UrlFormat)]
public sealed class ImageGeneratingChatClient : DelegatingChatClient
{
///
diff --git a/src/Libraries/Microsoft.Extensions.AI/ChatCompletion/ImageGeneratingChatClientBuilderExtensions.cs b/src/Libraries/Microsoft.Extensions.AI/ChatCompletion/ImageGeneratingChatClientBuilderExtensions.cs
index 241c851fd4e..68e8ed8d99e 100644
--- a/src/Libraries/Microsoft.Extensions.AI/ChatCompletion/ImageGeneratingChatClientBuilderExtensions.cs
+++ b/src/Libraries/Microsoft.Extensions.AI/ChatCompletion/ImageGeneratingChatClientBuilderExtensions.cs
@@ -4,12 +4,13 @@
using System;
using System.Diagnostics.CodeAnalysis;
using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Shared.DiagnosticIds;
using Microsoft.Shared.Diagnostics;
namespace Microsoft.Extensions.AI;
/// Provides extensions for configuring instances.
-[Experimental("MEAI001")]
+[Experimental(DiagnosticIds.Experiments.ImageGeneration, UrlFormat = DiagnosticIds.UrlFormat)]
public static class ImageGeneratingChatClientBuilderExtensions
{
/// Adds image generation capabilities to the chat client pipeline.
diff --git a/src/Libraries/Microsoft.Extensions.AI/ChatCompletion/OpenTelemetryImageGenerator.cs b/src/Libraries/Microsoft.Extensions.AI/ChatCompletion/OpenTelemetryImageGenerator.cs
index aadf5f3fed6..af355f5fdbe 100644
--- a/src/Libraries/Microsoft.Extensions.AI/ChatCompletion/OpenTelemetryImageGenerator.cs
+++ b/src/Libraries/Microsoft.Extensions.AI/ChatCompletion/OpenTelemetryImageGenerator.cs
@@ -10,6 +10,7 @@
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Extensions.Logging;
+using Microsoft.Shared.DiagnosticIds;
using Microsoft.Shared.Diagnostics;
#pragma warning disable SA1111 // Closing parenthesis should be on line of last parameter
@@ -22,7 +23,7 @@ namespace Microsoft.Extensions.AI;
/// This class provides an implementation of the Semantic Conventions for Generative AI systems v1.38, defined at .
/// The specification is still experimental and subject to change; as such, the telemetry output by this client is also subject to change.
///
-[Experimental("MEAI001")]
+[Experimental(DiagnosticIds.Experiments.ImageGeneration, UrlFormat = DiagnosticIds.UrlFormat)]
public sealed class OpenTelemetryImageGenerator : DelegatingImageGenerator
{
private readonly ActivitySource _activitySource;
diff --git a/src/Libraries/Microsoft.Extensions.AI/ChatCompletion/OpenTelemetryImageGeneratorBuilderExtensions.cs b/src/Libraries/Microsoft.Extensions.AI/ChatCompletion/OpenTelemetryImageGeneratorBuilderExtensions.cs
index 63919505590..8086a40d999 100644
--- a/src/Libraries/Microsoft.Extensions.AI/ChatCompletion/OpenTelemetryImageGeneratorBuilderExtensions.cs
+++ b/src/Libraries/Microsoft.Extensions.AI/ChatCompletion/OpenTelemetryImageGeneratorBuilderExtensions.cs
@@ -5,12 +5,13 @@
using System.Diagnostics.CodeAnalysis;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
+using Microsoft.Shared.DiagnosticIds;
using Microsoft.Shared.Diagnostics;
namespace Microsoft.Extensions.AI;
/// Provides extensions for configuring instances.
-[Experimental("MEAI001")]
+[Experimental(DiagnosticIds.Experiments.ImageGeneration, UrlFormat = DiagnosticIds.UrlFormat)]
public static class OpenTelemetryImageGeneratorBuilderExtensions
{
///
diff --git a/src/Libraries/Microsoft.Extensions.AI/ChatCompletion/ReducingChatClient.cs b/src/Libraries/Microsoft.Extensions.AI/ChatCompletion/ReducingChatClient.cs
index afe56eddbd8..3eefc96223e 100644
--- a/src/Libraries/Microsoft.Extensions.AI/ChatCompletion/ReducingChatClient.cs
+++ b/src/Libraries/Microsoft.Extensions.AI/ChatCompletion/ReducingChatClient.cs
@@ -6,6 +6,7 @@
using System.Runtime.CompilerServices;
using System.Threading;
using System.Threading.Tasks;
+using Microsoft.Shared.DiagnosticIds;
using Microsoft.Shared.Diagnostics;
namespace Microsoft.Extensions.AI;
@@ -13,7 +14,7 @@ namespace Microsoft.Extensions.AI;
///
/// A chat client that reduces the size of a message list.
///
-[Experimental("MEAI001")]
+[Experimental(DiagnosticIds.Experiments.ChatReduction, UrlFormat = DiagnosticIds.UrlFormat)]
public sealed class ReducingChatClient : DelegatingChatClient
{
private readonly IChatReducer _reducer;
diff --git a/src/Libraries/Microsoft.Extensions.AI/ChatCompletion/ReducingChatClientBuilderExtensions.cs b/src/Libraries/Microsoft.Extensions.AI/ChatCompletion/ReducingChatClientBuilderExtensions.cs
index 2f13d3e3cea..aed1de5de38 100644
--- a/src/Libraries/Microsoft.Extensions.AI/ChatCompletion/ReducingChatClientBuilderExtensions.cs
+++ b/src/Libraries/Microsoft.Extensions.AI/ChatCompletion/ReducingChatClientBuilderExtensions.cs
@@ -4,6 +4,7 @@
using System;
using System.Diagnostics.CodeAnalysis;
using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Shared.DiagnosticIds;
using Microsoft.Shared.Diagnostics;
namespace Microsoft.Extensions.AI;
@@ -11,7 +12,7 @@ namespace Microsoft.Extensions.AI;
///
/// Provides extension methods for attaching a to a chat pipeline.
///
-[Experimental("MEAI001")]
+[Experimental(DiagnosticIds.Experiments.ChatReduction, UrlFormat = DiagnosticIds.UrlFormat)]
public static class ReducingChatClientBuilderExtensions
{
///
diff --git a/src/Libraries/Microsoft.Extensions.AI/ChatReduction/MessageCountingChatReducer.cs b/src/Libraries/Microsoft.Extensions.AI/ChatReduction/MessageCountingChatReducer.cs
index 5ba48617355..aba88f88001 100644
--- a/src/Libraries/Microsoft.Extensions.AI/ChatReduction/MessageCountingChatReducer.cs
+++ b/src/Libraries/Microsoft.Extensions.AI/ChatReduction/MessageCountingChatReducer.cs
@@ -6,6 +6,7 @@
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
+using Microsoft.Shared.DiagnosticIds;
using Microsoft.Shared.Diagnostics;
namespace Microsoft.Extensions.AI;
@@ -21,7 +22,7 @@ namespace Microsoft.Extensions.AI;
/// messages. Messages containing function call or function result content are excluded from the reduced
/// output.
///
-[Experimental("MEAI001")]
+[Experimental(DiagnosticIds.Experiments.ChatReduction, UrlFormat = DiagnosticIds.UrlFormat)]
public sealed class MessageCountingChatReducer : IChatReducer
{
private readonly int _targetCount;
diff --git a/src/Libraries/Microsoft.Extensions.AI/ChatReduction/SummarizingChatReducer.cs b/src/Libraries/Microsoft.Extensions.AI/ChatReduction/SummarizingChatReducer.cs
index 28f05ed9e5f..2439b5e386b 100644
--- a/src/Libraries/Microsoft.Extensions.AI/ChatReduction/SummarizingChatReducer.cs
+++ b/src/Libraries/Microsoft.Extensions.AI/ChatReduction/SummarizingChatReducer.cs
@@ -7,6 +7,7 @@
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
+using Microsoft.Shared.DiagnosticIds;
using Microsoft.Shared.Diagnostics;
namespace Microsoft.Extensions.AI;
@@ -21,7 +22,7 @@ namespace Microsoft.Extensions.AI;
/// count. The reducer maintains system messages and excludes messages containing function call or function
/// result content from summarization.
///
-[Experimental("MEAI001")]
+[Experimental(DiagnosticIds.Experiments.ChatReduction, UrlFormat = DiagnosticIds.UrlFormat)]
public sealed class SummarizingChatReducer : IChatReducer
{
private const string SummaryKey = "__summary__";
diff --git a/src/Libraries/Microsoft.Extensions.AI/Image/ConfigureOptionsImageGenerator.cs b/src/Libraries/Microsoft.Extensions.AI/Image/ConfigureOptionsImageGenerator.cs
index b9e698a33f6..bec41306695 100644
--- a/src/Libraries/Microsoft.Extensions.AI/Image/ConfigureOptionsImageGenerator.cs
+++ b/src/Libraries/Microsoft.Extensions.AI/Image/ConfigureOptionsImageGenerator.cs
@@ -5,12 +5,13 @@
using System.Diagnostics.CodeAnalysis;
using System.Threading;
using System.Threading.Tasks;
+using Microsoft.Shared.DiagnosticIds;
using Microsoft.Shared.Diagnostics;
namespace Microsoft.Extensions.AI;
/// Represents a delegating image generator that configures a instance used by the remainder of the pipeline.
-[Experimental("MEAI001")]
+[Experimental(DiagnosticIds.Experiments.ImageGeneration, UrlFormat = DiagnosticIds.UrlFormat)]
public sealed class ConfigureOptionsImageGenerator : DelegatingImageGenerator
{
/// The callback delegate used to configure options.
diff --git a/src/Libraries/Microsoft.Extensions.AI/Image/ConfigureOptionsImageGeneratorBuilderExtensions.cs b/src/Libraries/Microsoft.Extensions.AI/Image/ConfigureOptionsImageGeneratorBuilderExtensions.cs
index 52c953fba77..ab804d71991 100644
--- a/src/Libraries/Microsoft.Extensions.AI/Image/ConfigureOptionsImageGeneratorBuilderExtensions.cs
+++ b/src/Libraries/Microsoft.Extensions.AI/Image/ConfigureOptionsImageGeneratorBuilderExtensions.cs
@@ -3,12 +3,13 @@
using System;
using System.Diagnostics.CodeAnalysis;
+using Microsoft.Shared.DiagnosticIds;
using Microsoft.Shared.Diagnostics;
namespace Microsoft.Extensions.AI;
/// Provides extensions for configuring instances.
-[Experimental("MEAI001")]
+[Experimental(DiagnosticIds.Experiments.ImageGeneration, UrlFormat = DiagnosticIds.UrlFormat)]
public static class ConfigureOptionsImageGeneratorBuilderExtensions
{
///
diff --git a/src/Libraries/Microsoft.Extensions.AI/Image/ImageGeneratorBuilder.cs b/src/Libraries/Microsoft.Extensions.AI/Image/ImageGeneratorBuilder.cs
index 9070ed8a59c..ad154b171f1 100644
--- a/src/Libraries/Microsoft.Extensions.AI/Image/ImageGeneratorBuilder.cs
+++ b/src/Libraries/Microsoft.Extensions.AI/Image/ImageGeneratorBuilder.cs
@@ -4,12 +4,13 @@
using System;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
+using Microsoft.Shared.DiagnosticIds;
using Microsoft.Shared.Diagnostics;
namespace Microsoft.Extensions.AI;
/// A builder for creating pipelines of .
-[Experimental("MEAI001")]
+[Experimental(DiagnosticIds.Experiments.ImageGeneration, UrlFormat = DiagnosticIds.UrlFormat)]
public sealed class ImageGeneratorBuilder
{
private readonly Func _innerGeneratorFactory;
diff --git a/src/Libraries/Microsoft.Extensions.AI/Image/ImageGeneratorBuilderImageGeneratorExtensions.cs b/src/Libraries/Microsoft.Extensions.AI/Image/ImageGeneratorBuilderImageGeneratorExtensions.cs
index e8242287b68..98a0ff134e4 100644
--- a/src/Libraries/Microsoft.Extensions.AI/Image/ImageGeneratorBuilderImageGeneratorExtensions.cs
+++ b/src/Libraries/Microsoft.Extensions.AI/Image/ImageGeneratorBuilderImageGeneratorExtensions.cs
@@ -3,12 +3,13 @@
using System;
using System.Diagnostics.CodeAnalysis;
+using Microsoft.Shared.DiagnosticIds;
using Microsoft.Shared.Diagnostics;
namespace Microsoft.Extensions.AI;
/// Provides extension methods for working with in the context of .
-[Experimental("MEAI001")]
+[Experimental(DiagnosticIds.Experiments.ImageGeneration, UrlFormat = DiagnosticIds.UrlFormat)]
public static class ImageGeneratorBuilderImageGeneratorExtensions
{
/// Creates a new using as its inner generator.
diff --git a/src/Libraries/Microsoft.Extensions.AI/Image/ImageGeneratorBuilderServiceCollectionExtensions.cs b/src/Libraries/Microsoft.Extensions.AI/Image/ImageGeneratorBuilderServiceCollectionExtensions.cs
index 7868adf2eb3..a390a180d2f 100644
--- a/src/Libraries/Microsoft.Extensions.AI/Image/ImageGeneratorBuilderServiceCollectionExtensions.cs
+++ b/src/Libraries/Microsoft.Extensions.AI/Image/ImageGeneratorBuilderServiceCollectionExtensions.cs
@@ -4,12 +4,13 @@
using System;
using System.Diagnostics.CodeAnalysis;
using Microsoft.Extensions.AI;
+using Microsoft.Shared.DiagnosticIds;
using Microsoft.Shared.Diagnostics;
namespace Microsoft.Extensions.DependencyInjection;
/// Provides extension methods for registering with a .
-[Experimental("MEAI001")]
+[Experimental(DiagnosticIds.Experiments.ImageGeneration, UrlFormat = DiagnosticIds.UrlFormat)]
public static class ImageGeneratorBuilderServiceCollectionExtensions
{
/// Registers a singleton in the .
diff --git a/src/Libraries/Microsoft.Extensions.AI/Image/LoggingImageGenerator.cs b/src/Libraries/Microsoft.Extensions.AI/Image/LoggingImageGenerator.cs
index f74701d766e..1353db698ae 100644
--- a/src/Libraries/Microsoft.Extensions.AI/Image/LoggingImageGenerator.cs
+++ b/src/Libraries/Microsoft.Extensions.AI/Image/LoggingImageGenerator.cs
@@ -8,6 +8,7 @@
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Extensions.Logging;
+using Microsoft.Shared.DiagnosticIds;
using Microsoft.Shared.Diagnostics;
namespace Microsoft.Extensions.AI;
@@ -25,7 +26,7 @@ namespace Microsoft.Extensions.AI;
/// Prompts and options are not logged at other logging levels.
///
///
-[Experimental("MEAI001")]
+[Experimental(DiagnosticIds.Experiments.ImageGeneration, UrlFormat = DiagnosticIds.UrlFormat)]
public partial class LoggingImageGenerator : DelegatingImageGenerator
{
/// An instance used for all logging.
diff --git a/src/Libraries/Microsoft.Extensions.AI/Image/LoggingImageGeneratorBuilderExtensions.cs b/src/Libraries/Microsoft.Extensions.AI/Image/LoggingImageGeneratorBuilderExtensions.cs
index ece65d942ed..376988b1397 100644
--- a/src/Libraries/Microsoft.Extensions.AI/Image/LoggingImageGeneratorBuilderExtensions.cs
+++ b/src/Libraries/Microsoft.Extensions.AI/Image/LoggingImageGeneratorBuilderExtensions.cs
@@ -6,12 +6,13 @@
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Logging.Abstractions;
+using Microsoft.Shared.DiagnosticIds;
using Microsoft.Shared.Diagnostics;
namespace Microsoft.Extensions.AI;
/// Provides extensions for configuring instances.
-[Experimental("MEAI001")]
+[Experimental(DiagnosticIds.Experiments.ImageGeneration, UrlFormat = DiagnosticIds.UrlFormat)]
public static class LoggingImageGeneratorBuilderExtensions
{
/// Adds logging to the image generator pipeline.
diff --git a/src/Libraries/Microsoft.Extensions.AI/Microsoft.Extensions.AI.csproj b/src/Libraries/Microsoft.Extensions.AI/Microsoft.Extensions.AI.csproj
index 380d9617c8e..6736f67a636 100644
--- a/src/Libraries/Microsoft.Extensions.AI/Microsoft.Extensions.AI.csproj
+++ b/src/Libraries/Microsoft.Extensions.AI/Microsoft.Extensions.AI.csproj
@@ -15,7 +15,7 @@
$(TargetFrameworks);netstandard2.0
- $(NoWarn);MEAI001
+ $(NoWarn);MEAI0001;MEAI0002;MEAI0003;MEAI0004;MEAI0005;MEAI0006;MEAI0007;MEAI0008