Class AgentEnsembleExecutor

java.lang.Object
com.tnsai.agents.ensemble.AgentEnsembleExecutor

public class AgentEnsembleExecutor extends Object
Handles multi-LLM ensemble operations for an Agent.

This class extracts ensemble/parallel LLM concerns from the Agent class:

  • Parallel fan-out to multiple LLMs
  • Race pattern (first response wins)
  • Consensus/scoring based selection
  • Majority voting
  • Ensemble synthesis with aggregator LLM
  • Constructor Details

    • AgentEnsembleExecutor

      public AgentEnsembleExecutor()
  • Method Details

    • parallelChat

      public ParallelLLM.ParallelResults parallelChat(String message, List<LLMClient> llms)
      Sends message to multiple LLMs in parallel and collects all responses.
      Parameters:
      message - The message to send
      llms - List of LLM clients to query in parallel
      Returns:
      Aggregated results from all LLMs
    • raceChat

      public Optional<ParallelLLM.LLMResult> raceChat(String message, List<LLMClient> llms, long timeoutSeconds)
      Sends message to multiple LLMs and returns the first successful response.
      Parameters:
      message - The message to send
      llms - List of LLM clients to race
      timeoutSeconds - Timeout in seconds
      Returns:
      First successful response, or empty if all fail
    • consensusChat

      public Optional<ParallelLLM.LLMResult> consensusChat(String message, List<LLMClient> llms, Function<String,Double> scorer)
      Sends message to multiple LLMs and selects the best response using a scoring function.
      Parameters:
      message - The message to send
      llms - List of LLM clients
      scorer - Function to score each response (higher is better)
      Returns:
      Best response based on scoring
    • majorityVoteChat

      public Optional<ParallelLLM.LLMResult> majorityVoteChat(String message, List<LLMClient> llms)
      Sends message to multiple LLMs and selects by majority voting.
      Parameters:
      message - The message to send
      llms - List of LLM clients
      Returns:
      Most common response pattern
    • ensembleChat

      public Optional<String> ensembleChat(String message, List<LLMClient> llms, LLMClient aggregator)
      Sends message to multiple LLMs and combines responses using an aggregator LLM.
      Parameters:
      message - The message to send
      llms - List of LLM clients for initial responses
      aggregator - LLM client to synthesize final response
      Returns:
      Synthesized response combining best elements