diff --git a/sentry_sdk/integrations/openai_agents/patches/models.py b/sentry_sdk/integrations/openai_agents/patches/models.py index 634c9fdca1..8f708dafce 100644 --- a/sentry_sdk/integrations/openai_agents/patches/models.py +++ b/sentry_sdk/integrations/openai_agents/patches/models.py @@ -17,7 +17,7 @@ from ..spans import ai_client_span, update_ai_client_span if TYPE_CHECKING: - from typing import Any, Callable, Optional, Union + from typing import Any, Callable, Union from sentry_sdk.tracing import Span @@ -28,19 +28,6 @@ raise DidNotEnable("OpenAI Agents not installed") -def _set_response_model_on_agent_span( - agent: "agents.Agent", response_model: "Optional[str]" -) -> None: - """Set the response model on the agent's invoke_agent span if available.""" - if response_model: - agent_span = getattr(agent, "_sentry_agent_span", None) - if agent_span: - if isinstance(agent_span, StreamedSpan): - agent_span.set_attribute(SPANDATA.GEN_AI_RESPONSE_MODEL, response_model) - else: - agent_span.set_data(SPANDATA.GEN_AI_RESPONSE_MODEL, response_model) - - def _inject_trace_propagation_headers( hosted_tool: "HostedMCPTool", span: "Union[Span, StreamedSpan]" ) -> None: @@ -123,7 +110,6 @@ async def wrapped_get_response(*args: "Any", **kwargs: "Any") -> "Any": if response_model: delattr(agent, "_sentry_response_model") - _set_response_model_on_agent_span(agent, response_model) update_ai_client_span(span, result, response_model, agent) return result @@ -187,7 +173,6 @@ async def wrapped_stream_response(*args: "Any", **kwargs: "Any") -> "Any": and streaming_response.model else None ) - _set_response_model_on_agent_span(agent, response_model) update_ai_client_span( span, streaming_response, response_model, agent ) diff --git a/tests/integrations/openai_agents/test_openai_agents.py b/tests/integrations/openai_agents/test_openai_agents.py index a27921a628..525a4ec30f 100644 --- a/tests/integrations/openai_agents/test_openai_agents.py +++ b/tests/integrations/openai_agents/test_openai_agents.py @@ -4881,23 +4881,10 @@ async def test_invoke_agent_span_includes_response_model( sentry_sdk.flush() spans = [item.payload for item in items if item.type == "span"] - invoke_agent_span = next( - span - for span in spans - if span["attributes"]["sentry.op"] == OP.GEN_AI_INVOKE_AGENT - ) ai_client_span = next( span for span in spans if span["attributes"]["sentry.op"] == OP.GEN_AI_CHAT ) - # Verify invoke_agent span has response model from API - assert invoke_agent_span["name"] == "invoke_agent test_agent" - assert "gen_ai.response.model" in invoke_agent_span["attributes"] - assert ( - invoke_agent_span["attributes"]["gen_ai.response.model"] - == "gpt-4.1-2025-04-14" - ) - # Also verify ai_client span has it assert "gen_ai.response.model" in ai_client_span["attributes"] assert ( @@ -4926,18 +4913,8 @@ async def test_invoke_agent_span_includes_response_model( (transaction,) = events spans = transaction["spans"] - invoke_agent_span = next( - span for span in spans if span["op"] == OP.GEN_AI_INVOKE_AGENT - ) ai_client_span = next(span for span in spans if span["op"] == OP.GEN_AI_CHAT) - # Verify invoke_agent span has response model from API - assert invoke_agent_span["description"] == "invoke_agent test_agent" - assert "gen_ai.response.model" in invoke_agent_span["data"] - assert ( - invoke_agent_span["data"]["gen_ai.response.model"] == "gpt-4.1-2025-04-14" - ) - # Also verify ai_client span has it assert "gen_ai.response.model" in ai_client_span["data"] assert ai_client_span["data"]["gen_ai.response.model"] == "gpt-4.1-2025-04-14" @@ -5071,17 +5048,9 @@ def calculator(a: int, b: int) -> int: sentry_sdk.flush() spans = [item.payload for item in items] - invoke_agent_span = spans[3] first_ai_client_span = spans[0] second_ai_client_span = spans[2] # After tool span - # Invoke_agent span uses the LAST response model - assert "gen_ai.response.model" in invoke_agent_span["attributes"] - assert ( - invoke_agent_span["attributes"]["gen_ai.response.model"] - == "gpt-4.1-2025-04-14" - ) - # Each ai_client span has its own response model from the API assert ( first_ai_client_span["attributes"]["gen_ai.response.model"] == "gpt-4-0613" @@ -5115,17 +5084,9 @@ def calculator(a: int, b: int) -> int: spans = [item.payload for item in items if item.type == "span"] - invoke_agent_span = spans[0] first_ai_client_span = spans[1] second_ai_client_span = spans[3] # After tool span - # Invoke_agent span uses the LAST response model - assert "gen_ai.response.model" in invoke_agent_span["attributes"] - assert ( - invoke_agent_span["attributes"]["gen_ai.response.model"] - == "gpt-4.1-2025-04-14" - ) - # Each ai_client span has its own response model from the API assert ( first_ai_client_span["attributes"]["gen_ai.response.model"] == "gpt-4-0613" @@ -5159,16 +5120,9 @@ def calculator(a: int, b: int) -> int: (transaction,) = events spans = transaction["spans"] - invoke_agent_span = spans[0] first_ai_client_span = spans[1] second_ai_client_span = spans[3] # After tool span - # Invoke_agent span uses the LAST response model - assert "gen_ai.response.model" in invoke_agent_span["data"] - assert ( - invoke_agent_span["data"]["gen_ai.response.model"] == "gpt-4.1-2025-04-14" - ) - # Each ai_client span has its own response model from the API assert first_ai_client_span["data"]["gen_ai.response.model"] == "gpt-4-0613" assert (