Class ParallelizationWorkflowAgent<Request,Response>

java.lang.Object
com.javaaidev.agenticpatterns.core.Agent
com.javaaidev.agenticpatterns.taskexecution.TaskExecutionAgent<Request,Response>
com.javaaidev.agenticpatterns.parallelizationworkflow.ParallelizationWorkflowAgent<Request,Response>
Type Parameters:
Request -
Response -
All Implemented Interfaces:
Function<Request,Response>
Direct Known Subclasses:
DirectAssembling, PromptBasedAssembling

public abstract class ParallelizationWorkflowAgent<Request,Response> extends TaskExecutionAgent<Request,Response>
Parallelization Workflow agent, refer to doc
  • Field Details

  • Constructor Details

    • ParallelizationWorkflowAgent

      public ParallelizationWorkflowAgent(org.springframework.ai.chat.client.ChatClient chatClient, @Nullable io.micrometer.observation.ObservationRegistry observationRegistry)
    • ParallelizationWorkflowAgent

      public ParallelizationWorkflowAgent(org.springframework.ai.chat.client.ChatClient chatClient, @Nullable Type responseType, @Nullable io.micrometer.observation.ObservationRegistry observationRegistry)
  • Method Details

    • addSubtask

      protected <TaskRequest, TaskResponse> void addSubtask(String taskId, TaskExecutionAgent<TaskRequest,TaskResponse> subtask, Function<Request,TaskRequest> requestTransformer)
      Add new subtask
      Type Parameters:
      TaskRequest - Task input type
      TaskResponse - Task output type
      Parameters:
      taskId - Task id
      subtask - Subtask implemented as TaskExecutionAgent
      requestTransformer - Transform request to task's input
    • getMaxTaskExecutionDuration

      protected Duration getMaxTaskExecutionDuration()
      Max duration of a subtask execution
      Returns:
      Max duration
    • createTasks

      protected @Nullable List<SubtaskCreationRequest<Request>> createTasks(@Nullable Request request)
      Create a list of subtasks from request. Subtasks added by addSubtask(String, TaskExecutionAgent, Function) will be merged into this list.
      Parameters:
      request - Request
      Returns:
      Subtasks
    • getTaskExecutorService

      protected ExecutorService getTaskExecutorService()
      Create the ExecutorService to execute subtasks.

      The default executor service uses virtual threads.

      Returns:
      executor service
    • runSubtasks

      protected TaskExecutionResults runSubtasks(@Nullable Request request)