From c123f09520071acc8705b2632f84abf2fd9600ec Mon Sep 17 00:00:00 2001 From: poshinchen Date: Mon, 20 Oct 2025 16:50:05 -0400 Subject: [PATCH 1/2] fix(telemetry): make strands agent invoke_agent span as INTERNAL spanKind --- src/strands/telemetry/tracer.py | 2 +- tests/strands/telemetry/test_tracer.py | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strands/telemetry/tracer.py b/src/strands/telemetry/tracer.py index 907fd454a..aa4890b5e 100644 --- a/src/strands/telemetry/tracer.py +++ b/src/strands/telemetry/tracer.py @@ -588,7 +588,7 @@ def start_agent_span( attributes.update({k: v for k, v in kwargs.items() if isinstance(v, (str, int, float, bool))}) span = self._start_span( - f"invoke_agent {agent_name}", attributes=attributes, span_kind=trace_api.SpanKind.CLIENT + f"invoke_agent {agent_name}", attributes=attributes, span_kind=trace_api.SpanKind.INTERNAL ) self._add_event_messages(span, messages) diff --git a/tests/strands/telemetry/test_tracer.py b/tests/strands/telemetry/test_tracer.py index de677c2cc..10ad91c58 100644 --- a/tests/strands/telemetry/test_tracer.py +++ b/tests/strands/telemetry/test_tracer.py @@ -670,6 +670,7 @@ def test_start_agent_span(mock_tracer): mock_tracer.start_span.assert_called_once() assert mock_tracer.start_span.call_args[1]["name"] == "invoke_agent WeatherAgent" + assert mock_tracer.start_span.call_args[1]["kind"] == SpanKind.INTERNAL mock_span.set_attribute.assert_any_call("gen_ai.system", "strands-agents") mock_span.set_attribute.assert_any_call("gen_ai.agent.name", "WeatherAgent") mock_span.set_attribute.assert_any_call("gen_ai.request.model", model_id) From 96bf1b5cb0160fca9b85f7c4ce55b86c055afa57 Mon Sep 17 00:00:00 2001 From: poshinchen Date: Mon, 20 Oct 2025 16:50:05 -0400 Subject: [PATCH 2/2] fix(telemetry): make strands agent invoke_agent and chat span as INTERNAL spanKind --- src/strands/telemetry/tracer.py | 2 +- tests/strands/telemetry/test_tracer.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/strands/telemetry/tracer.py b/src/strands/telemetry/tracer.py index aa4890b5e..9cefc6911 100644 --- a/src/strands/telemetry/tracer.py +++ b/src/strands/telemetry/tracer.py @@ -293,7 +293,7 @@ def start_model_invoke_span( # Add additional kwargs as attributes attributes.update({k: v for k, v in kwargs.items() if isinstance(v, (str, int, float, bool))}) - span = self._start_span("chat", parent_span, attributes=attributes, span_kind=trace_api.SpanKind.CLIENT) + span = self._start_span("chat", parent_span, attributes=attributes, span_kind=trace_api.SpanKind.INTERNAL) self._add_event_messages(span, messages) return span diff --git a/tests/strands/telemetry/test_tracer.py b/tests/strands/telemetry/test_tracer.py index 10ad91c58..05dbe387f 100644 --- a/tests/strands/telemetry/test_tracer.py +++ b/tests/strands/telemetry/test_tracer.py @@ -153,7 +153,7 @@ def test_start_model_invoke_span(mock_tracer): mock_tracer.start_span.assert_called_once() assert mock_tracer.start_span.call_args[1]["name"] == "chat" - assert mock_tracer.start_span.call_args[1]["kind"] == SpanKind.CLIENT + assert mock_tracer.start_span.call_args[1]["kind"] == SpanKind.INTERNAL mock_span.set_attribute.assert_any_call("gen_ai.system", "strands-agents") mock_span.set_attribute.assert_any_call("gen_ai.operation.name", "chat") mock_span.set_attribute.assert_any_call("gen_ai.request.model", model_id) @@ -188,7 +188,7 @@ def test_start_model_invoke_span_latest_conventions(mock_tracer): mock_tracer.start_span.assert_called_once() assert mock_tracer.start_span.call_args[1]["name"] == "chat" - assert mock_tracer.start_span.call_args[1]["kind"] == SpanKind.CLIENT + assert mock_tracer.start_span.call_args[1]["kind"] == SpanKind.INTERNAL mock_span.set_attribute.assert_any_call("gen_ai.provider.name", "strands-agents") mock_span.set_attribute.assert_any_call("gen_ai.operation.name", "chat") mock_span.set_attribute.assert_any_call("gen_ai.request.model", model_id)