From 801a18f42d930862bdea0271d7d3c68b3e6541df Mon Sep 17 00:00:00 2001 From: "Lingling Ye (from Dev Box)" Date: Thu, 22 Jan 2026 13:39:30 +0800 Subject: [PATCH 1/5] track AI usage --- .../AzureAppConfigurationProvider.cs | 9 +++++++++ .../Constants/RequestTracingConstants.cs | 9 +++++++++ .../RequestTracingOptions.cs | 5 +++++ .../TracingUtils.cs | 5 +++++ 4 files changed, 28 insertions(+) diff --git a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/AzureAppConfigurationProvider.cs b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/AzureAppConfigurationProvider.cs index fc92d129..d9b29056 100644 --- a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/AzureAppConfigurationProvider.cs +++ b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/AzureAppConfigurationProvider.cs @@ -1396,6 +1396,15 @@ private void EnsureAssemblyInspected() _requestTracingOptions.AspireComponentVersion = TracingUtils.GetAssemblyVersion(RequestTracingConstants.AspireComponentAssemblyName); + foreach (string assemblyName in RequestTracingConstants.AzureAIAssemblyNames) + { + if (TracingUtils.GetAssemblyVersion(assemblyName) != null) + { + _requestTracingOptions.IsAzureAIProjects = true; + break; + } + } + if (TracingUtils.GetAssemblyVersion(RequestTracingConstants.SignalRAssemblyName) != null) { _requestTracingOptions.IsSignalRUsed = true; diff --git a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/Constants/RequestTracingConstants.cs b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/Constants/RequestTracingConstants.cs index 5c4df33e..5323ad1c 100644 --- a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/Constants/RequestTracingConstants.cs +++ b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/Constants/RequestTracingConstants.cs @@ -33,6 +33,7 @@ internal class RequestTracingConstants public const string LoadBalancingEnabledTag = "LB"; public const string AIConfigurationTag = "AI"; public const string AIChatCompletionConfigurationTag = "AICC"; + public const string AIProjectsTag = "AzureAIProjects"; public const string SnapshotReferenceTag = "SnapshotRef"; public const string SignalRUsedTag = "SignalR"; public const string FailoverRequestTag = "Failover"; @@ -57,6 +58,14 @@ internal class RequestTracingConstants public const string AspireComponentAssemblyName = "Aspire.Microsoft.Extensions.Configuration.AzureAppConfiguration"; public const string SignalRAssemblyName = "Microsoft.AspNetCore.SignalR"; + public static readonly string[] AzureAIAssemblyNames = new string[] + { + "Azure.AI.Projects", + "Azure.AI.Inference", + "Azure.AI.OpenAI", + "Azure.AI.Projects.OpenAI" + }; + public const string Delimiter = "+"; public const string AIMimeProfile = "https://azconfig.io/mime-profiles/ai"; diff --git a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/RequestTracingOptions.cs b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/RequestTracingOptions.cs index 2f50a385..26a30c83 100644 --- a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/RequestTracingOptions.cs +++ b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/RequestTracingOptions.cs @@ -56,6 +56,11 @@ internal class RequestTracingOptions /// public string AspireComponentVersion { get; set; } + /// + /// Flag to indicate whether Azure AI SDK is present in the application. + /// + public bool IsAzureAIProjects { get; set; } = false; + /// /// Flag to indicate whether Microsoft.AspNetCore.SignalR assembly is present in the application. /// diff --git a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/TracingUtils.cs b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/TracingUtils.cs index 33050b5b..f42d7faa 100644 --- a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/TracingUtils.cs +++ b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/TracingUtils.cs @@ -211,6 +211,11 @@ private static string CreateCorrelationContextHeader(RequestType requestType, Re correlationContextTags.Add(RequestTracingConstants.PushRefreshTag); } + if (requestTracingOptions.IsAzureAIProjects) + { + correlationContextTags.Add(RequestTracingConstants.AIProjectsTag); + } + var sb = new StringBuilder(); foreach (KeyValuePair kvp in correlationContextKeyValues) From 0f836048c9de62a54d175262b8b7524b4e83b7cf Mon Sep 17 00:00:00 2001 From: "Lingling Ye (from Dev Box)" Date: Thu, 22 Jan 2026 13:51:56 +0800 Subject: [PATCH 2/5] update --- .../AzureAppConfigurationProvider.cs | 9 +++------ .../Constants/RequestTracingConstants.cs | 6 +++--- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/AzureAppConfigurationProvider.cs b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/AzureAppConfigurationProvider.cs index d9b29056..168c8f13 100644 --- a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/AzureAppConfigurationProvider.cs +++ b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/AzureAppConfigurationProvider.cs @@ -1396,13 +1396,10 @@ private void EnsureAssemblyInspected() _requestTracingOptions.AspireComponentVersion = TracingUtils.GetAssemblyVersion(RequestTracingConstants.AspireComponentAssemblyName); - foreach (string assemblyName in RequestTracingConstants.AzureAIAssemblyNames) + if (RequestTracingConstants.AzureAIAssemblyNames + .Any(assemblyName => TracingUtils.GetAssemblyVersion(assemblyName) != null)) { - if (TracingUtils.GetAssemblyVersion(assemblyName) != null) - { - _requestTracingOptions.IsAzureAIProjects = true; - break; - } + _requestTracingOptions.IsAzureAIProjects = true; } if (TracingUtils.GetAssemblyVersion(RequestTracingConstants.SignalRAssemblyName) != null) diff --git a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/Constants/RequestTracingConstants.cs b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/Constants/RequestTracingConstants.cs index 5323ad1c..b8c517fb 100644 --- a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/Constants/RequestTracingConstants.cs +++ b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/Constants/RequestTracingConstants.cs @@ -58,13 +58,13 @@ internal class RequestTracingConstants public const string AspireComponentAssemblyName = "Aspire.Microsoft.Extensions.Configuration.AzureAppConfiguration"; public const string SignalRAssemblyName = "Microsoft.AspNetCore.SignalR"; - public static readonly string[] AzureAIAssemblyNames = new string[] - { + public static readonly string[] AzureAIAssemblyNames = + [ "Azure.AI.Projects", "Azure.AI.Inference", "Azure.AI.OpenAI", "Azure.AI.Projects.OpenAI" - }; + ]; public const string Delimiter = "+"; From 108e706f4b06687738937bfa5380451650062f54 Mon Sep 17 00:00:00 2001 From: "Lingling Ye (from Dev Box)" Date: Thu, 22 Jan 2026 14:16:07 +0800 Subject: [PATCH 3/5] update --- .../AzureAppConfigurationProvider.cs | 2 +- .../Constants/RequestTracingConstants.cs | 2 +- .../RequestTracingOptions.cs | 4 ++-- .../TracingUtils.cs | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/AzureAppConfigurationProvider.cs b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/AzureAppConfigurationProvider.cs index 168c8f13..0c7784ff 100644 --- a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/AzureAppConfigurationProvider.cs +++ b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/AzureAppConfigurationProvider.cs @@ -1399,7 +1399,7 @@ private void EnsureAssemblyInspected() if (RequestTracingConstants.AzureAIAssemblyNames .Any(assemblyName => TracingUtils.GetAssemblyVersion(assemblyName) != null)) { - _requestTracingOptions.IsAzureAIProjects = true; + _requestTracingOptions.UsesAzureAI = true; } if (TracingUtils.GetAssemblyVersion(RequestTracingConstants.SignalRAssemblyName) != null) diff --git a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/Constants/RequestTracingConstants.cs b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/Constants/RequestTracingConstants.cs index b8c517fb..9ed82f4d 100644 --- a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/Constants/RequestTracingConstants.cs +++ b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/Constants/RequestTracingConstants.cs @@ -33,7 +33,7 @@ internal class RequestTracingConstants public const string LoadBalancingEnabledTag = "LB"; public const string AIConfigurationTag = "AI"; public const string AIChatCompletionConfigurationTag = "AICC"; - public const string AIProjectsTag = "AzureAIProjects"; + public const string AzureAISDKTag = "AzureAI"; public const string SnapshotReferenceTag = "SnapshotRef"; public const string SignalRUsedTag = "SignalR"; public const string FailoverRequestTag = "Failover"; diff --git a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/RequestTracingOptions.cs b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/RequestTracingOptions.cs index 26a30c83..8039cb5e 100644 --- a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/RequestTracingOptions.cs +++ b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/RequestTracingOptions.cs @@ -57,9 +57,9 @@ internal class RequestTracingOptions public string AspireComponentVersion { get; set; } /// - /// Flag to indicate whether Azure AI SDK is present in the application. + /// Flag to indicate whether any Azure AI SDK assembly is present in the application. /// - public bool IsAzureAIProjects { get; set; } = false; + public bool UsesAzureAI { get; set; } = false; /// /// Flag to indicate whether Microsoft.AspNetCore.SignalR assembly is present in the application. diff --git a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/TracingUtils.cs b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/TracingUtils.cs index f42d7faa..70164096 100644 --- a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/TracingUtils.cs +++ b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/TracingUtils.cs @@ -211,9 +211,9 @@ private static string CreateCorrelationContextHeader(RequestType requestType, Re correlationContextTags.Add(RequestTracingConstants.PushRefreshTag); } - if (requestTracingOptions.IsAzureAIProjects) + if (requestTracingOptions.UsesAzureAI) { - correlationContextTags.Add(RequestTracingConstants.AIProjectsTag); + correlationContextTags.Add(RequestTracingConstants.AzureAISDKTag); } var sb = new StringBuilder(); From b05830f4b72a9bf22594f06e1cd492e8117d351e Mon Sep 17 00:00:00 2001 From: "Lingling Ye (from Dev Box)" Date: Thu, 22 Jan 2026 14:34:16 +0800 Subject: [PATCH 4/5] update --- .../Constants/RequestTracingConstants.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/Constants/RequestTracingConstants.cs b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/Constants/RequestTracingConstants.cs index 9ed82f4d..46b56a2a 100644 --- a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/Constants/RequestTracingConstants.cs +++ b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/Constants/RequestTracingConstants.cs @@ -58,13 +58,13 @@ internal class RequestTracingConstants public const string AspireComponentAssemblyName = "Aspire.Microsoft.Extensions.Configuration.AzureAppConfiguration"; public const string SignalRAssemblyName = "Microsoft.AspNetCore.SignalR"; - public static readonly string[] AzureAIAssemblyNames = - [ + public static readonly string[] AzureAIAssemblyNames = new string[] + { "Azure.AI.Projects", "Azure.AI.Inference", "Azure.AI.OpenAI", "Azure.AI.Projects.OpenAI" - ]; + }; public const string Delimiter = "+"; From 233e9850ecc7001a281fca480e597112500acc61 Mon Sep 17 00:00:00 2001 From: "Lingling Ye (from Dev Box)" Date: Tue, 27 Jan 2026 15:15:42 +0800 Subject: [PATCH 5/5] update tracing tag --- .../AzureAppConfigurationProvider.cs | 2 +- .../Constants/RequestTracingConstants.cs | 2 +- .../RequestTracingOptions.cs | 2 +- .../TracingUtils.cs | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/AzureAppConfigurationProvider.cs b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/AzureAppConfigurationProvider.cs index 0c7784ff..36357504 100644 --- a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/AzureAppConfigurationProvider.cs +++ b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/AzureAppConfigurationProvider.cs @@ -1399,7 +1399,7 @@ private void EnsureAssemblyInspected() if (RequestTracingConstants.AzureAIAssemblyNames .Any(assemblyName => TracingUtils.GetAssemblyVersion(assemblyName) != null)) { - _requestTracingOptions.UsesAzureAI = true; + _requestTracingOptions.UsesAISdk = true; } if (TracingUtils.GetAssemblyVersion(RequestTracingConstants.SignalRAssemblyName) != null) diff --git a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/Constants/RequestTracingConstants.cs b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/Constants/RequestTracingConstants.cs index 46b56a2a..ac818d3d 100644 --- a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/Constants/RequestTracingConstants.cs +++ b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/Constants/RequestTracingConstants.cs @@ -33,7 +33,7 @@ internal class RequestTracingConstants public const string LoadBalancingEnabledTag = "LB"; public const string AIConfigurationTag = "AI"; public const string AIChatCompletionConfigurationTag = "AICC"; - public const string AzureAISDKTag = "AzureAI"; + public const string UsesAISdkTag = "UsesAISdk"; public const string SnapshotReferenceTag = "SnapshotRef"; public const string SignalRUsedTag = "SignalR"; public const string FailoverRequestTag = "Failover"; diff --git a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/RequestTracingOptions.cs b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/RequestTracingOptions.cs index 8039cb5e..268aeae5 100644 --- a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/RequestTracingOptions.cs +++ b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/RequestTracingOptions.cs @@ -59,7 +59,7 @@ internal class RequestTracingOptions /// /// Flag to indicate whether any Azure AI SDK assembly is present in the application. /// - public bool UsesAzureAI { get; set; } = false; + public bool UsesAISdk { get; set; } = false; /// /// Flag to indicate whether Microsoft.AspNetCore.SignalR assembly is present in the application. diff --git a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/TracingUtils.cs b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/TracingUtils.cs index 70164096..2738df37 100644 --- a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/TracingUtils.cs +++ b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/TracingUtils.cs @@ -211,9 +211,9 @@ private static string CreateCorrelationContextHeader(RequestType requestType, Re correlationContextTags.Add(RequestTracingConstants.PushRefreshTag); } - if (requestTracingOptions.UsesAzureAI) + if (requestTracingOptions.UsesAISdk) { - correlationContextTags.Add(RequestTracingConstants.AzureAISDKTag); + correlationContextTags.Add(RequestTracingConstants.UsesAISdkTag); } var sb = new StringBuilder();