diff --git a/py/src/braintrust/wrappers/agno/model.py b/py/src/braintrust/wrappers/agno/model.py index 8b789bc3..3e474b44 100644 --- a/py/src/braintrust/wrappers/agno/model.py +++ b/py/src/braintrust/wrappers/agno/model.py @@ -310,6 +310,9 @@ async def _trace_astream(): def _get_model_name(instance: Any) -> str: + provider = getattr(instance, "provider", None) + if provider: + return str(provider) if hasattr(instance, "get_provider") and callable(instance.get_provider): return str(instance.get_provider()) return getattr(instance.__class__, "__name__", "Model") diff --git a/py/src/braintrust/wrappers/agno/test_agno.py b/py/src/braintrust/wrappers/agno/test_agno.py index 81f6110d..8db8d0f8 100644 --- a/py/src/braintrust/wrappers/agno/test_agno.py +++ b/py/src/braintrust/wrappers/agno/test_agno.py @@ -11,6 +11,7 @@ from braintrust.logger import start_span from braintrust.test_helpers import init_test_logger from braintrust.wrappers.agno import agent as agno_agent_module +from braintrust.wrappers.agno import model as agno_model_module from braintrust.wrappers.agno import run_helpers as agno_run_helpers_module from braintrust.wrappers.agno import setup_agno from braintrust.wrappers.agno import team as agno_team_module @@ -112,6 +113,16 @@ def test_agno_simple_agent_execution(memory_logger): assert llm_span["metrics"]["tokens"] == 42 +def test_get_model_name_prefers_stable_provider_attribute(): + class FakeModel: + provider = "OpenAI" + + def get_provider(self): + return "OpenAI Chat" + + assert agno_model_module._get_model_name(FakeModel()) == "OpenAI" + + class TestAutoInstrumentAgno: def test_auto_instrument_agno(self): verify_autoinstrument_script("test_auto_agno.py")