diff --git a/dd-trace-api/src/main/java/datadog/trace/api/llmobs/LLMObs.java b/dd-trace-api/src/main/java/datadog/trace/api/llmobs/LLMObs.java index 02eb79a7d79..f9d20ff4898 100644 --- a/dd-trace-api/src/main/java/datadog/trace/api/llmobs/LLMObs.java +++ b/dd-trace-api/src/main/java/datadog/trace/api/llmobs/LLMObs.java @@ -1,6 +1,8 @@ package datadog.trace.api.llmobs; import datadog.trace.api.llmobs.noop.NoOpLLMObsSpanFactory; +import java.util.List; +import java.util.Map; import javax.annotation.Nullable; public class LLMObs { @@ -57,4 +59,63 @@ LLMObsSpan startLLMSpan( LLMObsSpan startWorkflowSpan( String spanName, @Nullable String mlApp, @Nullable String sessionID); } + + public static class ToolCall { + private String name; + private String type; + private String toolID; + private Map arguments; + + public ToolCall(String name, String type, String toolID, Map arguments) { + this.name = name; + this.type = type; + this.toolID = toolID; + this.arguments = arguments; + } + + public String getName() { + return name; + } + + public String getType() { + return type; + } + + public String getToolID() { + return toolID; + } + + public Map getArguments() { + return arguments; + } + } + + public static class LLMMessage { + private String role; + private String content; + private List toolCalls; + + public LLMMessage(String role, String content, List toolCalls) { + this.role = role; + this.content = content; + this.toolCalls = toolCalls; + } + + public LLMMessage(String role, String content) { + this.role = role; + this.content = content; + } + + public String getRole() { + return role; + } + + public String getContent() { + return content; + } + + public List getToolCalls() { + return toolCalls; + } + } } diff --git a/dd-trace-api/src/main/java/datadog/trace/api/llmobs/LLMObsSpan.java b/dd-trace-api/src/main/java/datadog/trace/api/llmobs/LLMObsSpan.java index af5eb204937..80668eabd57 100644 --- a/dd-trace-api/src/main/java/datadog/trace/api/llmobs/LLMObsSpan.java +++ b/dd-trace-api/src/main/java/datadog/trace/api/llmobs/LLMObsSpan.java @@ -7,14 +7,12 @@ public interface LLMObsSpan { /** - * Annotate the span with inputs and outputs + * Annotate the span with inputs and outputs for LLM spans * - * @param inputData The input data of the span in the form of a list, for example a list of input - * messages - * @param outputData The output data of the span in the form of a list, for example a list of - * output messages + * @param inputMessages The input messages of the span in the form of a list + * @param outputMessages The output messages of the span in the form of a list */ - void annotateIO(List> inputData, List> outputData); + void annotateIO(List inputMessages, List outputMessages); /** * Annotate the span with inputs and outputs diff --git a/dd-trace-api/src/main/java/datadog/trace/api/llmobs/noop/NoOpLLMObsSpan.java b/dd-trace-api/src/main/java/datadog/trace/api/llmobs/noop/NoOpLLMObsSpan.java index f6752dc92fa..a1b160616e7 100644 --- a/dd-trace-api/src/main/java/datadog/trace/api/llmobs/noop/NoOpLLMObsSpan.java +++ b/dd-trace-api/src/main/java/datadog/trace/api/llmobs/noop/NoOpLLMObsSpan.java @@ -1,5 +1,6 @@ package datadog.trace.api.llmobs.noop; +import datadog.trace.api.llmobs.LLMObs; import datadog.trace.api.llmobs.LLMObsSpan; import java.util.List; import java.util.Map; @@ -8,8 +9,7 @@ public class NoOpLLMObsSpan implements LLMObsSpan { public static final LLMObsSpan INSTANCE = new NoOpLLMObsSpan(); @Override - public void annotateIO( - List> inputData, List> outputData) {} + public void annotateIO(List inputData, List outputData) {} @Override public void annotateIO(String inputData, String outputData) {}