Orchestrator-Workers Workflow Pattern
This project demonstrates the Orchestrator-Workers workflow pattern for building effective LLM-based systems, as described in Anthropic's research on building effective agents.
Overview
The Orchestrator-Workers pattern is a flexible approach for handling complex tasks that require dynamic task decomposition and specialized processing. It consists of three main components:
- Orchestrator: A central LLM that analyzes tasks and determines required subtasks
- Workers: Specialized LLMs that execute specific subtasks
- Synthesizer: Component that combines worker outputs into a final result
When to Use
This pattern is particularly effective for:
- Complex tasks where subtasks can't be predicted upfront
- Tasks requiring different approaches or perspectives
- Situations needing adaptive problem-solving
- Tasks benefiting from specialized processing
Implementation
The implementation uses Spring AI's ChatClient for LLM interactions and consists of:
public class OrchestratorWorkers {
public WorkerResponse process(String taskDescription) {
// 1. Orchestrator analyzes task and determines subtasks
OrchestratorResponse orchestratorResponse = // ...
// 2. Workers process subtasks in parallel
List<String> workerResponses = // ...
// 3. Results are combined into final response
return new WorkerResponse(/*...*/);
}
}
Usage Example
ChatClient chatClient = // ... initialize chat client
OrchestratorWorkers agent = new OrchestratorWorkers(chatClient);
// Process a task
WorkerResponse response = agent.process(
"Generate both technical and user-friendly documentation for a REST API endpoint"
);
// Access results
System.out.println("Analysis: " + response.analysis());
System.out.println("Worker Outputs: " + response.workerResponses());
Customization
The pattern can be customized through:
- Custom Prompts: Provide specialized prompts for orchestrator and workers
agent = new OrchestratorWorkers(
chatClient,
customOrchestratorPrompt,
customWorkerPrompt
);
- Default Templates: Modify the default prompts for common use cases
DEFAULT_ORCHESTRATOR_PROMPT: Template for task analysisDEFAULT_WORKER_PROMPT: Template for worker processing
Dependencies
- Spring AI
- Spring Boot
- Java 17 or later
