diff --git a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/AzureAppConfigurationProvider.cs b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/AzureAppConfigurationProvider.cs index fc92d129..36357504 100644 --- a/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/AzureAppConfigurationProvider.cs +++ b/src/Microsoft.Extensions.Configuration.AzureAppConfiguration/AzureAppConfigurationProvider.cs @@ -1396,6 +1396,12 @@ private void EnsureAssemblyInspected() _requestTracingOptions.AspireComponentVersion = TracingUtils.GetAssemblyVersion(RequestTracingConstants.AspireComponentAssemblyName); + if (RequestTracingConstants.AzureAIAssemblyNames + .Any(assemblyName => TracingUtils.GetAssemblyVersion(assemblyName) != null)) + { + _requestTracingOptions.UsesAISdk = true; + } + 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..ac818d3d 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 UsesAISdkTag = "UsesAISdk"; 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..268aeae5 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 any Azure AI SDK assembly is present in the application. + /// + 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 33050b5b..2738df37 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.UsesAISdk) + { + correlationContextTags.Add(RequestTracingConstants.UsesAISdkTag); + } + var sb = new StringBuilder(); foreach (KeyValuePair kvp in correlationContextKeyValues)