Skip to content

Commit d7684b9

Browse files
authored
Added embedding and retrieval spans (#9297)
1 parent 3eab825 commit d7684b9

File tree

4 files changed

+65
-1
lines changed

4 files changed

+65
-1
lines changed

dd-java-agent/agent-llmobs/src/main/java/datadog/trace/llmobs/LLMObsSystem.java

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
import java.lang.instrument.Instrumentation;
1313
import java.util.Map;
1414
import java.util.concurrent.TimeUnit;
15-
import org.jetbrains.annotations.Nullable;
15+
import javax.annotation.Nullable;
1616
import org.slf4j.Logger;
1717
import org.slf4j.LoggerFactory;
1818

@@ -189,6 +189,30 @@ public LLMObsSpan startWorkflowSpan(
189189
Tags.LLMOBS_WORKFLOW_SPAN_KIND, spanName, getMLApp(mlApp), sessionId, serviceName);
190190
}
191191

192+
@Override
193+
public LLMObsSpan startEmbeddingSpan(
194+
String spanName,
195+
@Nullable String mlApp,
196+
@Nullable String modelProvider,
197+
@Nullable String modelName,
198+
@Nullable String sessionId) {
199+
if (modelProvider == null) {
200+
modelProvider = "custom";
201+
}
202+
DDLLMObsSpan embeddingSpan =
203+
new DDLLMObsSpan(
204+
Tags.LLMOBS_EMBEDDING_SPAN_KIND, spanName, getMLApp(mlApp), sessionId, serviceName);
205+
embeddingSpan.setTag(LLMObsTags.MODEL_PROVIDER, modelProvider);
206+
embeddingSpan.setTag(LLMObsTags.MODEL_NAME, modelName);
207+
return embeddingSpan;
208+
}
209+
210+
public LLMObsSpan startRetrievalSpan(
211+
String spanName, @Nullable String mlApp, @Nullable String sessionId) {
212+
return new DDLLMObsSpan(
213+
Tags.LLMOBS_RETRIEVAL_SPAN_KIND, spanName, getMLApp(mlApp), sessionId, serviceName);
214+
}
215+
192216
private String getMLApp(String mlApp) {
193217
if (mlApp == null || mlApp.isEmpty()) {
194218
return defaultMLApp;

dd-trace-api/src/main/java/datadog/trace/api/llmobs/LLMObs.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,20 @@ public static LLMObsSpan startWorkflowSpan(
4646
return SPAN_FACTORY.startWorkflowSpan(spanName, mlApp, sessionId);
4747
}
4848

49+
public LLMObsSpan startEmbeddingSpan(
50+
String spanName,
51+
@Nullable String mlApp,
52+
@Nullable String modelProvider,
53+
@Nullable String modelName,
54+
@Nullable String sessionId) {
55+
return SPAN_FACTORY.startEmbeddingSpan(spanName, mlApp, modelProvider, modelName, sessionId);
56+
}
57+
58+
public LLMObsSpan startRetrievalSpan(
59+
String spanName, @Nullable String mlApp, @Nullable String sessionId) {
60+
return SPAN_FACTORY.startRetrievalSpan(spanName, mlApp, sessionId);
61+
}
62+
4963
public static void SubmitEvaluation(
5064
LLMObsSpan llmObsSpan, String label, String categoricalValue, Map<String, Object> tags) {
5165
EVAL_PROCESSOR.SubmitEvaluation(llmObsSpan, label, categoricalValue, tags);
@@ -90,6 +104,16 @@ LLMObsSpan startLLMSpan(
90104

91105
LLMObsSpan startWorkflowSpan(
92106
String spanName, @Nullable String mlApp, @Nullable String sessionId);
107+
108+
LLMObsSpan startEmbeddingSpan(
109+
String spanName,
110+
@Nullable String mlApp,
111+
@Nullable String modelProvider,
112+
@Nullable String modelName,
113+
@Nullable String sessionId);
114+
115+
LLMObsSpan startRetrievalSpan(
116+
String spanName, @Nullable String mlApp, @Nullable String sessionId);
93117
}
94118

95119
public interface LLMObsEvalProcessor {

dd-trace-api/src/main/java/datadog/trace/api/llmobs/noop/NoOpLLMObsSpanFactory.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,4 +35,18 @@ public LLMObsSpan startWorkflowSpan(
3535
String spanName, @Nullable String mlApp, @Nullable String sessionId) {
3636
return NoOpLLMObsSpan.INSTANCE;
3737
}
38+
39+
public LLMObsSpan startEmbeddingSpan(
40+
String spanName,
41+
@Nullable String mlApp,
42+
@Nullable String modelProvider,
43+
@Nullable String modelName,
44+
@Nullable String sessionId) {
45+
return NoOpLLMObsSpan.INSTANCE;
46+
}
47+
48+
public LLMObsSpan startRetrievalSpan(
49+
String spanName, @Nullable String mlApp, @Nullable String sessionId) {
50+
return NoOpLLMObsSpan.INSTANCE;
51+
}
3852
}

internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/Tags.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,4 +169,6 @@ public class Tags {
169169
public static final String LLMOBS_TASK_SPAN_KIND = "task";
170170
public static final String LLMOBS_AGENT_SPAN_KIND = "agent";
171171
public static final String LLMOBS_TOOL_SPAN_KIND = "tool";
172+
public static final String LLMOBS_EMBEDDING_SPAN_KIND = "embedding";
173+
public static final String LLMOBS_RETRIEVAL_SPAN_KIND = "retrieval";
172174
}

0 commit comments

Comments
 (0)