From 5cd257e5f4f10ebca74174165a152cdb65d2a5cd Mon Sep 17 00:00:00 2001 From: Yury Gribkov Date: Thu, 19 Feb 2026 13:44:32 -0800 Subject: [PATCH] llmobs: set model tag even when llmobs disabled --- .../openai_java/ChatCompletionDecorator.java | 12 +++++++----- .../openai_java/CompletionDecorator.java | 13 +++++++------ .../openai_java/EmbeddingDecorator.java | 12 +++++++----- .../openai_java/ResponseDecorator.java | 12 +++++++----- 4 files changed, 28 insertions(+), 21 deletions(-) diff --git a/dd-java-agent/instrumentation/openai-java/openai-java-3.0/src/main/java/datadog/trace/instrumentation/openai_java/ChatCompletionDecorator.java b/dd-java-agent/instrumentation/openai-java/openai-java-3.0/src/main/java/datadog/trace/instrumentation/openai_java/ChatCompletionDecorator.java index 6c9e9cad9d9..5ccb314788c 100644 --- a/dd-java-agent/instrumentation/openai-java/openai-java-3.0/src/main/java/datadog/trace/instrumentation/openai_java/ChatCompletionDecorator.java +++ b/dd-java-agent/instrumentation/openai-java/openai-java-3.0/src/main/java/datadog/trace/instrumentation/openai_java/ChatCompletionDecorator.java @@ -31,6 +31,13 @@ public void withChatCompletionCreateParams( AgentSpan span, ChatCompletionCreateParams params, boolean stream) { span.setResourceName(CHAT_COMPLETIONS_CREATE); span.setTag(CommonTags.OPENAI_REQUEST_ENDPOINT, "/v1/chat/completions"); + if (params != null) { + params + .model() + ._value() + .asString() + .ifPresent(str -> span.setTag(CommonTags.OPENAI_REQUEST_MODEL, str)); + } if (!llmObsEnabled) { return; } @@ -39,11 +46,6 @@ public void withChatCompletionCreateParams( if (params == null) { return; } - params - .model() - ._value() - .asString() - .ifPresent(str -> span.setTag(CommonTags.OPENAI_REQUEST_MODEL, str)); span.setTag( CommonTags.INPUT, diff --git a/dd-java-agent/instrumentation/openai-java/openai-java-3.0/src/main/java/datadog/trace/instrumentation/openai_java/CompletionDecorator.java b/dd-java-agent/instrumentation/openai-java/openai-java-3.0/src/main/java/datadog/trace/instrumentation/openai_java/CompletionDecorator.java index 2291c860d00..c44ec42d1c0 100644 --- a/dd-java-agent/instrumentation/openai-java/openai-java-3.0/src/main/java/datadog/trace/instrumentation/openai_java/CompletionDecorator.java +++ b/dd-java-agent/instrumentation/openai-java/openai-java-3.0/src/main/java/datadog/trace/instrumentation/openai_java/CompletionDecorator.java @@ -23,6 +23,13 @@ public class CompletionDecorator { public void withCompletionCreateParams(AgentSpan span, CompletionCreateParams params) { span.setResourceName(COMPLETIONS_CREATE); span.setTag(CommonTags.OPENAI_REQUEST_ENDPOINT, "/v1/completions"); + if (params != null) { + params + .model() + ._value() + .asString() + .ifPresent(str -> span.setTag(CommonTags.OPENAI_REQUEST_MODEL, str)); + } if (!llmObsEnabled) { return; } @@ -31,12 +38,6 @@ public void withCompletionCreateParams(AgentSpan span, CompletionCreateParams pa if (params == null) { return; } - - params - .model() - ._value() - .asString() - .ifPresent(str -> span.setTag(CommonTags.OPENAI_REQUEST_MODEL, str)); params .prompt() .flatMap(p -> p.string()) diff --git a/dd-java-agent/instrumentation/openai-java/openai-java-3.0/src/main/java/datadog/trace/instrumentation/openai_java/EmbeddingDecorator.java b/dd-java-agent/instrumentation/openai-java/openai-java-3.0/src/main/java/datadog/trace/instrumentation/openai_java/EmbeddingDecorator.java index 88098358ebf..5efcdd096a4 100644 --- a/dd-java-agent/instrumentation/openai-java/openai-java-3.0/src/main/java/datadog/trace/instrumentation/openai_java/EmbeddingDecorator.java +++ b/dd-java-agent/instrumentation/openai-java/openai-java-3.0/src/main/java/datadog/trace/instrumentation/openai_java/EmbeddingDecorator.java @@ -25,6 +25,13 @@ public class EmbeddingDecorator { public void withEmbeddingCreateParams(AgentSpan span, EmbeddingCreateParams params) { span.setResourceName(EMBEDDINGS_CREATE); span.setTag(CommonTags.OPENAI_REQUEST_ENDPOINT, "/v1/embeddings"); + if (params != null) { + params + .model() + ._value() + .asString() + .ifPresent(str -> span.setTag(CommonTags.OPENAI_REQUEST_MODEL, str)); + } if (!llmObsEnabled) { return; } @@ -33,11 +40,6 @@ public void withEmbeddingCreateParams(AgentSpan span, EmbeddingCreateParams para if (params == null) { return; } - params - .model() - ._value() - .asString() - .ifPresent(str -> span.setTag(CommonTags.OPENAI_REQUEST_MODEL, str)); span.setTag(CommonTags.INPUT, embeddingDocuments(params.input())); diff --git a/dd-java-agent/instrumentation/openai-java/openai-java-3.0/src/main/java/datadog/trace/instrumentation/openai_java/ResponseDecorator.java b/dd-java-agent/instrumentation/openai-java/openai-java-3.0/src/main/java/datadog/trace/instrumentation/openai_java/ResponseDecorator.java index 4bc95e32934..5bbade240f5 100644 --- a/dd-java-agent/instrumentation/openai-java/openai-java-3.0/src/main/java/datadog/trace/instrumentation/openai_java/ResponseDecorator.java +++ b/dd-java-agent/instrumentation/openai-java/openai-java-3.0/src/main/java/datadog/trace/instrumentation/openai_java/ResponseDecorator.java @@ -37,6 +37,13 @@ public class ResponseDecorator { public void withResponseCreateParams(AgentSpan span, ResponseCreateParams params) { span.setResourceName(RESPONSES_CREATE); span.setTag(CommonTags.OPENAI_REQUEST_ENDPOINT, "/v1/responses"); + if (params != null) { + // Use ResponseCreateParams._model() b/o ResponseCreateParams.model() changed type from + // ResponsesModel to Optional in + // https://github.com/openai/openai-java/commit/87dd64658da6cec7564f3b571e15ec0e2db0660b + String modelName = extractResponseModel(params._model()); + span.setTag(CommonTags.OPENAI_REQUEST_MODEL, modelName); + } if (!llmObsEnabled) { return; } @@ -45,11 +52,6 @@ public void withResponseCreateParams(AgentSpan span, ResponseCreateParams params if (params == null) { return; } - // Use ResponseCreateParams._model() b/o ResponseCreateParams.model() changed type from - // ResponsesModel to Optional in - // https://github.com/openai/openai-java/commit/87dd64658da6cec7564f3b571e15ec0e2db0660b - String modelName = extractResponseModel(params._model()); - span.setTag(CommonTags.OPENAI_REQUEST_MODEL, modelName); List inputMessages = new ArrayList<>();