diff --git a/sentry_sdk/integrations/pydantic_ai/__init__.py b/sentry_sdk/integrations/pydantic_ai/__init__.py index 5b9dcc0717..a2f29f90c7 100644 --- a/sentry_sdk/integrations/pydantic_ai/__init__.py +++ b/sentry_sdk/integrations/pydantic_ai/__init__.py @@ -127,7 +127,6 @@ async def sentry_wrap_run( with sentry_sdk.isolation_scope(), invoke_agent_span( user_prompt=ctx.prompt, agent=ctx.agent, - model=ctx.model, model_settings=ctx.model_settings, ) as span: try: diff --git a/sentry_sdk/integrations/pydantic_ai/spans/ai_client.py b/sentry_sdk/integrations/pydantic_ai/spans/ai_client.py index ac2489a4bd..1f2b0f06f5 100644 --- a/sentry_sdk/integrations/pydantic_ai/spans/ai_client.py +++ b/sentry_sdk/integrations/pydantic_ai/spans/ai_client.py @@ -301,7 +301,12 @@ def ai_client_context( if hasattr(model_obj, "system"): context.span.set_attribute(SPANDATA.GEN_AI_PROVIDER_NAME, model_obj.system) - _set_model_data(context.span, agent, model, model_settings) + # Set model name + model_name = _get_model_name(model_obj) + if model_name: + context.span.set_attribute(SPANDATA.GEN_AI_REQUEST_MODEL, model_name) + + _set_model_data(context.span, agent, model_settings) _set_available_tools(context.span, agent) # Set input messages (full conversation history) diff --git a/sentry_sdk/integrations/pydantic_ai/spans/invoke_agent.py b/sentry_sdk/integrations/pydantic_ai/spans/invoke_agent.py index f1aff085a6..e1786a7736 100644 --- a/sentry_sdk/integrations/pydantic_ai/spans/invoke_agent.py +++ b/sentry_sdk/integrations/pydantic_ai/spans/invoke_agent.py @@ -22,7 +22,6 @@ from typing import Any, Optional, Sequence, Union from pydantic_ai import Agent, UserContent - from pydantic_ai.models import AbstractModel from pydantic_ai.realtime.settings import RealtimeModelSettings from pydantic_ai.settings import ModelSettings @@ -36,7 +35,6 @@ def invoke_agent_span( user_prompt: "Optional[Union[str, Sequence[UserContent]]]", agent: "Optional[Agent]", - model: "AbstractModel", model_settings: "Optional[Union[ModelSettings, RealtimeModelSettings]]", ) -> "Span": """Create a span for invoking the agent.""" @@ -55,7 +53,7 @@ def invoke_agent_span( ) _set_agent_data(span, agent) - _set_model_data(span, agent, model, model_settings) + _set_model_data(span, agent, model_settings) # Add user prompt and system prompts if available and prompts are enabled if not sentry_sdk.get_client().options["data_collection"]["gen_ai"]["inputs"]: diff --git a/sentry_sdk/integrations/pydantic_ai/utils.py b/sentry_sdk/integrations/pydantic_ai/utils.py index 235dc58ae2..fc27d72903 100644 --- a/sentry_sdk/integrations/pydantic_ai/utils.py +++ b/sentry_sdk/integrations/pydantic_ai/utils.py @@ -58,7 +58,6 @@ def _get_model_name( def _set_model_data( span: "Span", agent: "Optional[Agent]", - model: "Union[Model, AbstractModel]", model_settings: "Optional[Union[ModelSettings, RealtimeModelSettings]]", ) -> None: """Set model-related data on a span. @@ -68,17 +67,6 @@ def _set_model_data( model: Model object (can be None, will try to get from agent if not provided) model_settings: Model settings (can be None, will try to get from agent if not provided) """ - # Extract model information - model_obj = model - if not model_obj and agent and hasattr(agent, "model"): - model_obj = agent.model - - if model_obj: - # Set model name - model_name = _get_model_name(model_obj) - if model_name: - span.set_attribute(SPANDATA.GEN_AI_REQUEST_MODEL, model_name) - # Extract model settings settings = model_settings if not settings and agent and hasattr(agent, "model_settings"): diff --git a/tests/integrations/pydantic_ai/test_pydantic_ai.py b/tests/integrations/pydantic_ai/test_pydantic_ai.py index 9c1871790c..fa0d3f748f 100644 --- a/tests/integrations/pydantic_ai/test_pydantic_ai.py +++ b/tests/integrations/pydantic_ai/test_pydantic_ai.py @@ -2452,7 +2452,7 @@ async def test_invoke_agent_span_with_callable_instruction( mock_agent._instructions = ["Static instruction", mock_callable] # Create span - span = invoke_agent_span("Test prompt", mock_agent, None, None) + span = invoke_agent_span("Test prompt", mock_agent, None) span.end() @@ -2485,7 +2485,7 @@ async def test_invoke_agent_span_with_string_instructions( mock_agent._instructions = "Single instruction string" # Create span - span = invoke_agent_span("Test prompt", mock_agent, None, None) + span = invoke_agent_span("Test prompt", mock_agent, None) span.end()