From 8408209c7063984a33b67d197076facc6ce05985 Mon Sep 17 00:00:00 2001 From: Stephen Toub Date: Mon, 27 Oct 2025 21:45:09 -0400 Subject: [PATCH] Fix gen_ai.operation.name to be invoke_agent (#1729) --- dotnet/src/Microsoft.Agents.AI/OpenTelemetryAgent.cs | 3 ++- dotnet/src/Microsoft.Agents.AI/OpenTelemetryConsts.cs | 5 +++++ .../Microsoft.Agents.AI.UnitTests/OpenTelemetryAgentTests.cs | 2 ++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/dotnet/src/Microsoft.Agents.AI/OpenTelemetryAgent.cs b/dotnet/src/Microsoft.Agents.AI/OpenTelemetryAgent.cs index e7b3f42bb9..7cd3c27b70 100644 --- a/dotnet/src/Microsoft.Agents.AI/OpenTelemetryAgent.cs +++ b/dotnet/src/Microsoft.Agents.AI/OpenTelemetryAgent.cs @@ -114,7 +114,8 @@ public sealed class OpenTelemetryAgent : DelegatingAIAgent, IDisposable // Override information set by OpenTelemetryChatClient to make it specific to invoke_agent. - activity.DisplayName = $"invoke_agent {this.DisplayName}"; + activity.DisplayName = $"{OpenTelemetryConsts.GenAI.InvokeAgent} {this.DisplayName}"; + activity.SetTag(OpenTelemetryConsts.GenAI.Operation.Name, OpenTelemetryConsts.GenAI.InvokeAgent); if (!string.IsNullOrWhiteSpace(this._providerName)) { diff --git a/dotnet/src/Microsoft.Agents.AI/OpenTelemetryConsts.cs b/dotnet/src/Microsoft.Agents.AI/OpenTelemetryConsts.cs index ac84dc00da..b130e16165 100644 --- a/dotnet/src/Microsoft.Agents.AI/OpenTelemetryConsts.cs +++ b/dotnet/src/Microsoft.Agents.AI/OpenTelemetryConsts.cs @@ -18,6 +18,11 @@ internal static class OpenTelemetryConsts public const string Description = "gen_ai.agent.description"; } + public static class Operation + { + public const string Name = "gen_ai.operation.name"; + } + public static class Provider { public const string Name = "gen_ai.provider.name"; diff --git a/dotnet/tests/Microsoft.Agents.AI.UnitTests/OpenTelemetryAgentTests.cs b/dotnet/tests/Microsoft.Agents.AI.UnitTests/OpenTelemetryAgentTests.cs index 2b68cd41a2..b9b04b7228 100644 --- a/dotnet/tests/Microsoft.Agents.AI.UnitTests/OpenTelemetryAgentTests.cs +++ b/dotnet/tests/Microsoft.Agents.AI.UnitTests/OpenTelemetryAgentTests.cs @@ -171,6 +171,7 @@ public class OpenTelemetryAgentTests Assert.Equal(12345, (int)activity.GetTagItem("server.port")!); Assert.Equal("invoke_agent TestAgent", activity.DisplayName); + Assert.Equal("invoke_agent", activity.GetTagItem("gen_ai.operation.name")); Assert.Equal("TestAgentProviderFromAIAgentMetadata", activity.GetTagItem("gen_ai.provider.name")); Assert.Equal(innerAgent.Name, activity.GetTagItem("gen_ai.agent.name")); Assert.Equal(innerAgent.Id, activity.GetTagItem("gen_ai.agent.id")); @@ -431,6 +432,7 @@ public class OpenTelemetryAgentTests Assert.Equal(12345, (int)activity.GetTagItem("server.port")!); Assert.Equal($"invoke_agent {innerAgent.DisplayName}", activity.DisplayName); + Assert.Equal("invoke_agent", activity.GetTagItem("gen_ai.operation.name")); Assert.Equal("TestAgentProviderFromAIAgentMetadata", activity.GetTagItem("gen_ai.provider.name")); Assert.Equal(innerAgent.Name, activity.GetTagItem("gen_ai.agent.name")); Assert.Equal(innerAgent.Id, activity.GetTagItem("gen_ai.agent.id"));