diff --git a/py/src/braintrust/integrations/pydantic_ai/test_pydantic_ai_integration.py b/py/src/braintrust/integrations/pydantic_ai/test_pydantic_ai_integration.py index e721d0af..42f4052a 100644 --- a/py/src/braintrust/integrations/pydantic_ai/test_pydantic_ai_integration.py +++ b/py/src/braintrust/integrations/pydantic_ai/test_pydantic_ai_integration.py @@ -965,10 +965,13 @@ async def test_agent_with_model_settings_in_metadata(memory_logger): assert chat_settings["max_tokens"] == 100 assert chat_settings["temperature"] == 0.5 - # Verify model_settings is NOT in chat metadata (it's in input) + assert chat_span["span_attributes"]["type"] == SpanTypeAttribute.LLM + invocation_params = chat_span["metadata"]["invocation_params"] + assert invocation_params["max_tokens"] == 100 + assert invocation_params["temperature"] == 0.5 + assert "model_settings" not in chat_span["metadata"], "model_settings should NOT be in chat span metadata" - # Verify other metadata is present assert chat_span["metadata"]["model"] == "gpt-4o-mini" assert chat_span["metadata"]["provider"] == "openai" diff --git a/py/src/braintrust/integrations/pydantic_ai/tracing.py b/py/src/braintrust/integrations/pydantic_ai/tracing.py index 280c0057..3058d104 100644 --- a/py/src/braintrust/integrations/pydantic_ai/tracing.py +++ b/py/src/braintrust/integrations/pydantic_ai/tracing.py @@ -364,6 +364,8 @@ def _build_model_class_input_and_metadata(instance: Any, args: Any, kwargs: Any) input_data["model_settings"] = model_settings metadata = _build_model_metadata(model_name, provider, model_settings=None) + if model_settings is not None: + metadata["invocation_params"] = model_settings return model_name, display_name, input_data, metadata