From 786a928c62eb91e9d7a04117b29cd02944c2fffe Mon Sep 17 00:00:00 2001 From: Fouad Wahabi Date: Wed, 30 Sep 2026 12:06:53 +0200 Subject: [PATCH] fix(llmobs): apply tracer.set_tags() tags to LLM Observability spans LLM Obs span tags were seeded from config.tags, which only holds DD_TAGS. Tags added later with tracer.set_tags() live in tracer._tags and reached APM spans but not LLM Obs spans. Seed from tracer._tags, which already includes DD_TAGS. --- ddtrace/llmobs/_llmobs.py | 2 +- .../notes/llmobs-tracer-set-tags-fae850aeca55cdb5.yaml | 4 ++++ tests/llmobs/test_llmobs_service.py | 8 ++++++++ 3 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 releasenotes/notes/llmobs-tracer-set-tags-fae850aeca55cdb5.yaml diff --git a/ddtrace/llmobs/_llmobs.py b/ddtrace/llmobs/_llmobs.py index 3b725baa495..f4a54b2c3f1 100644 --- a/ddtrace/llmobs/_llmobs.py +++ b/ddtrace/llmobs/_llmobs.py @@ -2573,7 +2573,7 @@ def _activate_llmobs_span(self, span: Span) -> None: resolved_name = span.resource initial_tags = { - **config.tags, + **self.tracer._tags, "version": config.version or "", "env": config.env or "", "service": span.service or "", diff --git a/releasenotes/notes/llmobs-tracer-set-tags-fae850aeca55cdb5.yaml b/releasenotes/notes/llmobs-tracer-set-tags-fae850aeca55cdb5.yaml new file mode 100644 index 00000000000..b4706eee1ea --- /dev/null +++ b/releasenotes/notes/llmobs-tracer-set-tags-fae850aeca55cdb5.yaml @@ -0,0 +1,4 @@ +--- +fixes: + - | + LLM Observability: Tags set with ``tracer.set_tags()`` are now applied to LLM Observability spans. Previously only tags from ``DD_TAGS`` were applied. diff --git a/tests/llmobs/test_llmobs_service.py b/tests/llmobs/test_llmobs_service.py index b229a22d753..52faa4f350a 100644 --- a/tests/llmobs/test_llmobs_service.py +++ b/tests/llmobs/test_llmobs_service.py @@ -1312,6 +1312,14 @@ def test_tags(ddtrace_global_config, llmobs, monkeypatch): ) +def test_tracer_set_tags_applied_to_llmobs_spans(llmobs, tracer, monkeypatch): + monkeypatch.setattr(tracer, "_tags", {}) + tracer.set_tags({"airid": "air-123"}) + with llmobs.workflow(name="test_workflow") as span: + pass + assert get_llmobs_tags(span)["airid"] == "air-123" + + @pytest.mark.subprocess( env={ "DD_API_KEY": "",