```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> 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, 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 parseOutput = Tracing.traceFunction( response -> response.choices().get(0).message().content().orElse(""), TraceConfig.builder().name("parse_output").build()); private final Function runPipeline = Tracing.traceFunction( subject -> parseOutput.apply(invokeLlm.apply(formatPrompt.apply(subject))), TraceConfig.builder().name("run_pipeline").build()); void run() { runPipeline.apply("colorful socks"); } } } ```