From f680f3c1fa058da27c5560798e9a677b4cf31d97 Mon Sep 17 00:00:00 2001 From: Paul Kompfner Date: Thu, 19 Mar 2026 13:55:26 -0400 Subject: [PATCH] fix: prefer _full_model_name over _settings.model in tracing The API-provided full model name is more specific than the user-provided model name (e.g. includes version/snapshot details). Reorder the lookup in _get_model_name and add a comment where the Responses service sets the field. --- src/pipecat/services/openai/responses/llm.py | 2 ++ src/pipecat/utils/tracing/service_decorators.py | 6 ++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/pipecat/services/openai/responses/llm.py b/src/pipecat/services/openai/responses/llm.py index 4f0c81dc7..8c7269323 100644 --- a/src/pipecat/services/openai/responses/llm.py +++ b/src/pipecat/services/openai/responses/llm.py @@ -292,6 +292,8 @@ class OpenAIResponsesLLMService(LLMService): model = getattr(response, "model", None) if model: + # This field is used by @traced_llm for more detailed + # model name in tracing spans self._full_model_name = model # Process any function calls diff --git a/src/pipecat/utils/tracing/service_decorators.py b/src/pipecat/utils/tracing/service_decorators.py index f4764d248..5292a5d3f 100644 --- a/src/pipecat/utils/tracing/service_decorators.py +++ b/src/pipecat/utils/tracing/service_decorators.py @@ -51,8 +51,10 @@ def _get_model_name(service) -> str: check all the places we used to store it. """ return ( - getattr(getattr(service, "_settings", None), "model", None) - or getattr(service, "_full_model_name", None) + # Some services store an API-response-provided detailed "full" name, + # which is distinct from the user-provided model name + getattr(service, "_full_model_name", None) + or getattr(getattr(service, "_settings", None), "model", None) or getattr(service, "model_name", None) or getattr(service, "_model_name", None) or "unknown"