Class ObservableLLMClient

java.lang.Object
com.tnsai.llm.observability.ObservableLLMClient
All Implemented Interfaces:
com.tnsai.llm.LLMClient

public class ObservableLLMClient extends Object implements com.tnsai.llm.LLMClient
Wrapper that adds observability to any LLMClient.

ObservableLLMClient wraps an existing LLMClient and notifies registered observers about all requests, responses, and errors. This enables non-invasive monitoring of LLM operations.

Usage Example


 // Create base client
 LLMClient baseClient = new OpenAIClient("gpt-4o");

 // Create metrics collector
 LLMMetrics metrics = new LLMMetrics();

 // Wrap with observability
 LLMClient observedClient = new ObservableLLMClient(baseClient, metrics);

 // Use normally - all calls are tracked
 observedClient.chat("Hello!");

 // Get metrics
 LLMMetrics.Report report = metrics.getReport();
 System.out.println("Requests: " + report.totalRequests());
 System.out.println("Avg latency: " + report.avgLatencyMs() + "ms");
 

Multiple Observers


 // Create multiple observers
 LLMMetrics metrics = new LLMMetrics();
 LoggingObserver logger = new LoggingObserver();

 // Combine into one
 LLMObserver combined = CompositeObserver.of(metrics, logger);

 // Wrap client
 LLMClient client = new ObservableLLMClient(baseClient, combined);
 

Custom Logging


 LLMObserver customObserver = new LLMObserver() {
     @Override
     public void onRequest(LLMClient client, String message, ...) {
         System.out.println("[" + Instant.now() + "] Request: " + message);
     }

     @Override
     public void onResponse(LLMClient client, ChatResponse response, long latencyMs) {
         System.out.println("[" + Instant.now() + "] Response (" + latencyMs + "ms)");
     }
 };

 LLMClient client = new ObservableLLMClient(baseClient, customObserver);
 
See Also:
  • Constructor Details

    • ObservableLLMClient

      public ObservableLLMClient(com.tnsai.llm.LLMClient delegate, LLMObserver observer)
      Creates an observable client with a single observer.
      Parameters:
      delegate - The underlying LLM client
      observer - The observer to notify
    • ObservableLLMClient

      public ObservableLLMClient(com.tnsai.llm.LLMClient delegate, LLMObserver... observers)
      Creates an observable client with multiple observers.
      Parameters:
      delegate - The underlying LLM client
      observers - The observers to notify
  • Method Details