Skip to content

Commit 48218a3

Browse files
committed
WIP batch 1 add java sdk examples to docs
1 parent 8937f6b commit 48218a3

15 files changed

+2016
-10
lines changed

src/langsmith/add-metadata-tags.mdx

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,4 +116,61 @@ import { wrapOpenAI } from "langsmith/wrappers";
116116
await traceableCallOpenAI(messages);
117117
```
118118

119+
```java Java
120+
import com.langchain.smith.wrappers.openai.OpenTelemetryConfig;
121+
import com.langchain.smith.wrappers.openai.WrappedOpenAIClient;
122+
import com.openai.models.ChatModel;
123+
import com.openai.models.chat.completions.ChatCompletion;
124+
import com.openai.models.chat.completions.ChatCompletionCreateParams;
125+
import io.opentelemetry.api.GlobalOpenTelemetry;
126+
import io.opentelemetry.api.trace.Span;
127+
import io.opentelemetry.api.trace.Tracer;
128+
import io.opentelemetry.context.Scope;
129+
130+
public class MetadataTagsExample {
131+
public static void main(String[] args) {
132+
// Configure OpenTelemetry
133+
OpenTelemetryConfig.builder()
134+
.fromEnv()
135+
.build();
136+
137+
// Get tracer
138+
Tracer tracer = GlobalOpenTelemetry.get().getTracer("my-app");
139+
WrappedOpenAIClient client = WrappedOpenAIClient.fromEnv();
140+
141+
// Create a span with metadata and tags
142+
Span span = tracer.spanBuilder("openai_call")
143+
.setAttribute("langsmith.span.kind", "llm")
144+
// Add metadata as span attributes
145+
.setAttribute("my-key", "my-value")
146+
.setAttribute("environment", "production")
147+
// Add tags as a comma-separated string
148+
.setAttribute("langsmith.tags", "my-tag,another-tag")
149+
.startSpan();
150+
151+
try (Scope scope = span.makeCurrent()) {
152+
ChatCompletion completion = client.chat().completions().create(
153+
ChatCompletionCreateParams.builder()
154+
.model(ChatModel.GPT_4O_MINI)
155+
.addSystemMessage("You are a helpful assistant.")
156+
.addUserMessage("Hello!")
157+
.build()
158+
);
159+
160+
// Add dynamic metadata during execution
161+
span.setAttribute("response-length",
162+
completion.choices().get(0).message().content().orElse("").length());
163+
span.setAttribute("user-id", "user-123");
164+
165+
System.out.println(completion.choices().get(0).message().content().orElse(""));
166+
} finally {
167+
span.end();
168+
}
169+
170+
client.close();
171+
OpenTelemetryConfig.flush(5, java.util.concurrent.TimeUnit.SECONDS);
172+
}
173+
}
174+
```
175+
119176
</CodeGroup>

src/langsmith/attach-user-feedback.mdx

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,40 @@ await client.createFeedback(
8888
);
8989
```
9090

91+
```java Java
92+
import com.langchain.smith.client.LangsmithClient;
93+
import com.langchain.smith.client.okhttp.LangsmithOkHttpClient;
94+
import com.langchain.smith.models.feedback.FeedbackCreate;
95+
import java.util.UUID;
96+
97+
public class FeedbackExample {
98+
public static void main(String[] args) {
99+
LangsmithClient client = LangsmithOkHttpClient.fromEnv();
100+
101+
// ... Run your application and get the run_id...
102+
UUID runId = UUID.fromString("your-run-id-here");
103+
104+
// Provide feedback for a trace or run
105+
client.feedback().create(FeedbackCreate.builder()
106+
.runId(runId)
107+
.key("user_feedback")
108+
.score(1.0)
109+
.comment("the user said that ...")
110+
.build());
111+
112+
// Provide feedback with additional metadata
113+
client.feedback().create(FeedbackCreate.builder()
114+
.runId(runId)
115+
.key("correctness")
116+
.score(0.0)
117+
.comment("This step needs improvement")
118+
.build());
119+
120+
System.out.println("Feedback logged successfully");
121+
}
122+
}
123+
```
124+
91125
</CodeGroup>
92126

93127
You can even log feedback for in-progress runs using `create_feedback() / createFeedback()`. See [this guide](/langsmith/access-current-span) for how to get the run ID of an in-progress run.

0 commit comments

Comments
 (0)