Skip to content

Commit dd637fd

Browse files
committed
add APIs for llm obs
1 parent 36b653b commit dd637fd

File tree

4 files changed

+107
-0
lines changed

4 files changed

+107
-0
lines changed
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
package datadog.trace.api.llmobs;
2+
3+
import datadog.trace.api.llmobs.noop.NoOpLLMObsSpanFactory;
4+
import javax.annotation.Nullable;
5+
6+
public class LLMObs {
7+
private static LLMObsSpanFactory SPAN_FACTORY = NoOpLLMObsSpanFactory.INSTANCE;
8+
9+
/**
10+
* This a hook for injecting SpanFactory implementation. It should only be used internally by
11+
* the tracer logic
12+
*
13+
* @param spanFactory span factory instance
14+
*/
15+
public static void registerSpanFactory(LLMObsSpanFactory spanFactory) {
16+
SPAN_FACTORY = spanFactory;
17+
}
18+
19+
public static LLMObsSpan startLLMSpan(
20+
String spanName,String modelName, String modelProvider, @Nullable String mlApp, @Nullable String sessionID) {
21+
22+
return SPAN_FACTORY.startLLMSpan(spanName, modelName, modelProvider, sessionID, mlApp);
23+
}
24+
25+
public static LLMObsSpan startAgentSpan(
26+
String spanName, @Nullable String mlApp, @Nullable String sessionID) {
27+
28+
return SPAN_FACTORY.startAgentSpan(spanName, sessionID, mlApp);
29+
}
30+
31+
public static LLMObsSpan startToolSpan(
32+
String spanName, @Nullable String mlApp, @Nullable String sessionID) {
33+
34+
return SPAN_FACTORY.startToolSpan(spanName, sessionID, mlApp);
35+
}
36+
37+
public static LLMObsSpan startTaskSpan(
38+
String spanName, @Nullable String mlApp, @Nullable String sessionID) {
39+
40+
return SPAN_FACTORY.startTaskSpan(spanName, sessionID, mlApp);
41+
}
42+
43+
public static LLMObsSpan startWorkflowSpan(
44+
String spanName, @Nullable String mlApp, @Nullable String sessionID) {
45+
46+
return SPAN_FACTORY.startWorkflowSpan(spanName, sessionID, mlApp);
47+
}
48+
49+
public interface LLMObsSpanFactory {
50+
LLMObsSpan startLLMSpan(String spanName, String modelName, String modelProvider, @Nullable String mlApp, @Nullable String sessionID);
51+
LLMObsSpan startAgentSpan(String spanName, @Nullable String mlApp, @Nullable String sessionID);
52+
LLMObsSpan startToolSpan(String spanName, @Nullable String mlApp, @Nullable String sessionID);
53+
LLMObsSpan startTaskSpan(String spanName, @Nullable String mlApp, @Nullable String sessionID);
54+
LLMObsSpan startWorkflowSpan(String spanName, @Nullable String mlApp, @Nullable String sessionID);
55+
}
56+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package datadog.trace.api.llmobs;
2+
3+
/**
4+
* This interface represent an individual LLM Obs span.
5+
*/
6+
public interface LLMObsSpan {
7+
8+
/**
9+
* Annotate spans with inputs, outputs, and metadata.
10+
*
11+
* @param key The name of the tag
12+
* @param value The value of the tag
13+
*/
14+
void annotate(String key, Object value);
15+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package datadog.trace.api.llmobs.noop;
2+
3+
import datadog.trace.api.llmobs.LLMObsSpan;
4+
5+
public class NoOpLLMObsSpan implements LLMObsSpan {
6+
public static final LLMObsSpan INSTANCE = new NoOpLLMObsSpan();
7+
8+
@Override
9+
public void annotate(String key, Object value) {}
10+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package datadog.trace.api.llmobs.noop;
2+
3+
import datadog.trace.api.llmobs.LLMObs;
4+
import datadog.trace.api.llmobs.LLMObsSpan;
5+
import javax.annotation.Nullable;
6+
7+
public class NoOpLLMObsSpanFactory implements LLMObs.LLMObsSpanFactory {
8+
public static final NoOpLLMObsSpanFactory INSTANCE = new NoOpLLMObsSpanFactory();
9+
10+
public LLMObsSpan startLLMSpan(String spanName, String modelName, String modelProvider, @Nullable String mlApp, @Nullable String sessionID) {
11+
return NoOpLLMObsSpan.INSTANCE;
12+
}
13+
public LLMObsSpan startAgentSpan(String spanName, @Nullable String mlApp, @Nullable String sessionID) {
14+
return NoOpLLMObsSpan.INSTANCE;
15+
}
16+
public LLMObsSpan startToolSpan(String spanName, @Nullable String mlApp, @Nullable String sessionID) {
17+
return NoOpLLMObsSpan.INSTANCE;
18+
}
19+
public LLMObsSpan startTaskSpan(String spanName, @Nullable String mlApp, @Nullable String sessionID) {
20+
return NoOpLLMObsSpan.INSTANCE;
21+
}
22+
public LLMObsSpan startWorkflowSpan(String spanName, @Nullable String mlApp, @Nullable String sessionID){
23+
return NoOpLLMObsSpan.INSTANCE;
24+
}
25+
}
26+

0 commit comments

Comments
 (0)