From 61da9378416e7dcbdb2f6b2b56a7e2f3aafc924e Mon Sep 17 00:00:00 2001 From: Kian Jones <11655409+kianjones9@users.noreply.github.com> Date: Thu, 18 Dec 2025 21:54:29 -0500 Subject: [PATCH] feat: enable differentiation between providers using the openai client (#7539) enable differentiation between providers using the llm client base class --- letta/server/rest_api/app.py | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/letta/server/rest_api/app.py b/letta/server/rest_api/app.py index b40e9c52..17089dbf 100644 --- a/letta/server/rest_api/app.py +++ b/letta/server/rest_api/app.py @@ -252,6 +252,40 @@ def create_application() -> "FastAPI": llmobs_flag = os.getenv("DD_LLMOBS_ENABLED", "") from ddtrace.llmobs import LLMObs + try: + from ddtrace.llmobs._constants import MODEL_PROVIDER + from ddtrace.llmobs._integrations.openai import OpenAIIntegration + + if not getattr(OpenAIIntegration, "_letta_provider_patch_done", False): + original_set_tags = OpenAIIntegration._llmobs_set_tags + + def _letta_set_tags(self, span, args, kwargs, response=None, operation=""): + original_set_tags(self, span, args, kwargs, response=response, operation=operation) + + base_url = span.get_tag("openai.api_base") + if not base_url: + try: + client = getattr(self, "_client", None) + base_url = str(getattr(client, "_base_url", "") or "") + except Exception: + base_url = "" + + u = (base_url or "").lower() + provider = None + if "openrouter" in u: + provider = "openrouter" + elif "groq" in u: + provider = "groq" + + if provider: + span._set_ctx_item(MODEL_PROVIDER, provider) + span._set_tag_str("openai.request.provider", provider) + + OpenAIIntegration._llmobs_set_tags = _letta_set_tags + OpenAIIntegration._letta_provider_patch_done = True + except Exception: + logger.exception("Failed to patch ddtrace OpenAI LLMObs provider detection") + if llmobs_flag: LLMObs.enable( ml_app=os.getenv("DD_LLMOBS_ML_APP") or telemetry_settings.datadog_service_name,