Files
docs/build/snippets/python/code-samples/traceable-pipeline-java.mdx
T
2026-07-29 10:28:19 +00:00

68 lines
2.8 KiB
Plaintext

```java Java
import com.langchain.smith.tracing.RunType;
import com.langchain.smith.tracing.TraceConfig;
import com.langchain.smith.tracing.Tracing;
import com.openai.client.OpenAIClient;
import com.openai.client.okhttp.OpenAIOkHttpClient;
import com.openai.models.ChatModel;
import com.openai.models.chat.completions.ChatCompletion;
import com.openai.models.chat.completions.ChatCompletionCreateParams;
import com.openai.models.chat.completions.ChatCompletionMessageParam;
import com.openai.models.chat.completions.ChatCompletionSystemMessageParam;
import com.openai.models.chat.completions.ChatCompletionUserMessageParam;
import java.util.Arrays;
import java.util.List;
import java.util.function.Function;
public class TraceablePipeline {
public static void main(String[] args) {
new TraceablePipelineRunner().run();
}
private static final class TraceablePipelineRunner {
private final OpenAIClient openai = OpenAIOkHttpClient.fromEnv();
private final Function<String, List<ChatCompletionMessageParam>> formatPrompt =
Tracing.traceFunction(
subject ->
Arrays.asList(
ChatCompletionMessageParam.ofSystem(
ChatCompletionSystemMessageParam.builder()
.content("You are a helpful assistant.")
.build()),
ChatCompletionMessageParam.ofUser(
ChatCompletionUserMessageParam.builder()
.content("What's a good name for a store that sells " + subject + "?")
.build())),
TraceConfig.builder().name("format_prompt").build());
private final Function<List<ChatCompletionMessageParam>, ChatCompletion> invokeLlm =
Tracing.traceFunction(
messages ->
openai.chat()
.completions()
.create(
ChatCompletionCreateParams.builder()
.model(ChatModel.GPT_5_CHAT_LATEST)
.messages(messages)
.temperature(0.0)
.build()),
TraceConfig.builder().name("invoke_llm").runType(RunType.LLM).build());
private final Function<ChatCompletion, String> parseOutput =
Tracing.traceFunction(
response -> response.choices().get(0).message().content().orElse(""),
TraceConfig.builder().name("parse_output").build());
private final Function<String, String> runPipeline =
Tracing.traceFunction(
subject -> parseOutput.apply(invokeLlm.apply(formatPrompt.apply(subject))),
TraceConfig.builder().name("run_pipeline").build());
void run() {
runPipeline.apply("colorful socks");
}
}
}
```