diff --git a/agentic-patterns/README.md b/agentic-patterns/README.md
index c2e846b..6d81015 100644
--- a/agentic-patterns/README.md
+++ b/agentic-patterns/README.md
@@ -55,8 +55,8 @@ Implements a classification system that directs input to specialized followup ta
- Content moderation systems
- Query optimization based on complexity
-### 4. Orchestrator-Workers Workflow
-[orchestrator-workers-workflow/](orchestrator-workers-workflow/)
+### 4. Orchestrator-Workers
+[orchestrator-workers/](orchestrator-workers/)
Implements a flexible system where a central LLM orchestrates task decomposition and delegates to specialized worker LLMs.
@@ -70,8 +70,8 @@ Implements a flexible system where a central LLM orchestrates task decomposition
- Multi-source research tasks
- Adaptive content creation
-### 5. Evaluator-Optimizer Workflow
-[evaluator-optimizer-workflow/](evaluator-optimizer-workflow/)
+### 5. Evaluator-Optimizer
+[evaluator-optimizer/](evaluator-optimizer/)
Implements an iterative refinement process where one LLM generates solutions while another provides evaluation and feedback.
diff --git a/agentic-patterns/evaluator-optimizer-workflow/.mvn/wrapper/maven-wrapper.properties b/agentic-patterns/evaluator-optimizer/.mvn/wrapper/maven-wrapper.properties
similarity index 100%
rename from agentic-patterns/evaluator-optimizer-workflow/.mvn/wrapper/maven-wrapper.properties
rename to agentic-patterns/evaluator-optimizer/.mvn/wrapper/maven-wrapper.properties
diff --git a/agentic-patterns/evaluator-optimizer-workflow/README.md b/agentic-patterns/evaluator-optimizer/README.md
similarity index 82%
rename from agentic-patterns/evaluator-optimizer-workflow/README.md
rename to agentic-patterns/evaluator-optimizer/README.md
index 08a574b..b22d353 100644
--- a/agentic-patterns/evaluator-optimizer-workflow/README.md
+++ b/agentic-patterns/evaluator-optimizer/README.md
@@ -1,8 +1,8 @@
-# Evaluator-Optimizer Workflow Pattern
+# Evaluator-Optimizer Pattern
-This project demonstrates the Evaluator-Optimizer workflow pattern for building effective LLM-based systems, as described in [Anthropic's research on building effective agents](https://www.anthropic.com/research/building-effective-agents).
+This project demonstrates the Evaluator-Optimizer pattern for building effective LLM-based systems, as described in [Anthropic's research on building effective agents](https://www.anthropic.com/research/building-effective-agents).
-
+
## Overview
@@ -48,7 +48,7 @@ This pattern is particularly effective when:
The implementation uses Spring AI's ChatClient for LLM interactions and consists of:
```java
-public class EvaluatorOptimizerWorkflow {
+public class EvaluatorOptimizer {
public RefinedResponse loop(String task) {
// 1. Generate initial solution
Generation generation = generate(task, context);
@@ -68,10 +68,10 @@ public class EvaluatorOptimizerWorkflow {
```java
ChatClient chatClient = // ... initialize chat client
-EvaluatorOptimizerWorkflow workflow = new EvaluatorOptimizerWorkflow(chatClient);
+EvaluatorOptimizer agent = new EvaluatorOptimizer(chatClient);
// Process a task
-RefinedResponse response = workflow.loop(
+RefinedResponse response = agent.loop(
"Create a Java class implementing a thread-safe counter"
);
@@ -82,11 +82,11 @@ System.out.println("Evolution: " + response.chainOfThought());
## Customization
-The workflow can be customized through:
+The pattern can be customized through:
1. **Custom Prompts**: Provide specialized prompts for generator and evaluator
```java
-workflow = new EvaluatorOptimizerWorkflow(
+agent = new EvaluatorOptimizer(
chatClient,
customGeneratorPrompt,
customEvaluatorPrompt
diff --git a/agentic-patterns/evaluator-optimizer-workflow/mvnw b/agentic-patterns/evaluator-optimizer/mvnw
similarity index 100%
rename from agentic-patterns/evaluator-optimizer-workflow/mvnw
rename to agentic-patterns/evaluator-optimizer/mvnw
diff --git a/agentic-patterns/evaluator-optimizer-workflow/mvnw.cmd b/agentic-patterns/evaluator-optimizer/mvnw.cmd
similarity index 100%
rename from agentic-patterns/evaluator-optimizer-workflow/mvnw.cmd
rename to agentic-patterns/evaluator-optimizer/mvnw.cmd
diff --git a/agentic-patterns/evaluator-optimizer-workflow/pom.xml b/agentic-patterns/evaluator-optimizer/pom.xml
similarity index 95%
rename from agentic-patterns/evaluator-optimizer-workflow/pom.xml
rename to agentic-patterns/evaluator-optimizer/pom.xml
index 870512d..b63a79e 100644
--- a/agentic-patterns/evaluator-optimizer-workflow/pom.xml
+++ b/agentic-patterns/evaluator-optimizer/pom.xml
@@ -10,9 +10,9 @@
com.example.spring.ai
- evaluator-optimizer-workflow
+ evaluator-optimizer
0.0.1-SNAPSHOT
- evaluator-optimizer-workflow
+ evaluator-optimizer
Demo project for Spring Boot
17
@@ -25,10 +25,10 @@
-
+
-
+
org.springframework.boot
diff --git a/agentic-patterns/evaluator-optimizer-workflow/src/main/java/com/example/agentic/Application.java b/agentic-patterns/evaluator-optimizer/src/main/java/com/example/agentic/Application.java
similarity index 88%
rename from agentic-patterns/evaluator-optimizer-workflow/src/main/java/com/example/agentic/Application.java
rename to agentic-patterns/evaluator-optimizer/src/main/java/com/example/agentic/Application.java
index 09862bd..00783f6 100644
--- a/agentic-patterns/evaluator-optimizer-workflow/src/main/java/com/example/agentic/Application.java
+++ b/agentic-patterns/evaluator-optimizer/src/main/java/com/example/agentic/Application.java
@@ -16,7 +16,7 @@
*/
package com.example.agentic;
-import com.example.agentic.EvaluatorOptimizerWorkflow.RefinedResponse;
+import com.example.agentic.EvaluatorOptimizer.RefinedResponse;
import org.springframework.ai.chat.client.ChatClient;
import org.springframework.boot.CommandLineRunner;
@@ -25,7 +25,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
// ------------------------------------------------------------
-// EVALUATION WORKFLOW
+// EVALUATOR-OPTIMIZER
// ------------------------------------------------------------
@SpringBootApplication
@@ -39,7 +39,7 @@ public class Application {
public CommandLineRunner commandLineRunner(ChatClient.Builder chatClientBuilder) {
var chatClient = chatClientBuilder.build();
return args -> {
- RefinedResponse refinedResponse = new EvaluatorOptimizerWorkflow(chatClient).loop("""
+ RefinedResponse refinedResponse = new EvaluatorOptimizer(chatClient).loop("""
Implement a Stack in Java with:
1. push(x)
@@ -47,7 +47,6 @@ public class Application {
3. getMin()
All operations should be O(1).
All inner fields should be private and when used should be prefixed with 'this.'.
- Add inline code documentation.
""");
diff --git a/agentic-patterns/evaluator-optimizer-workflow/src/main/java/com/example/agentic/EvaluatorOptimizerWorkflow.java b/agentic-patterns/evaluator-optimizer/src/main/java/com/example/agentic/EvaluatorOptimizer.java
similarity index 97%
rename from agentic-patterns/evaluator-optimizer-workflow/src/main/java/com/example/agentic/EvaluatorOptimizerWorkflow.java
rename to agentic-patterns/evaluator-optimizer/src/main/java/com/example/agentic/EvaluatorOptimizer.java
index 95d656f..f58df00 100644
--- a/agentic-patterns/evaluator-optimizer-workflow/src/main/java/com/example/agentic/EvaluatorOptimizerWorkflow.java
+++ b/agentic-patterns/evaluator-optimizer/src/main/java/com/example/agentic/EvaluatorOptimizer.java
@@ -74,7 +74,7 @@ import org.springframework.util.Assert;
* effective agents
*/
@SuppressWarnings("null")
-public class EvaluatorOptimizerWorkflow {
+public class EvaluatorOptimizer {
public static final String DEFAULT_GENERATOR_PROMPT = """
Your goal is to complete the task based on the input. If there are feedback
@@ -101,6 +101,7 @@ public class EvaluatorOptimizerWorkflow {
public static final String DEFAULT_EVALUATOR_PROMPT = """
Evaluate this code implementation for correctness, time complexity, and best practices.
+ Ensure the code have proper javadoc documentation.
Respond with EXACTLY this JSON format on a single line:
{"evaluation":"PASS, NEEDS_IMPROVEMENT, or FAIL", "feedback":"Your feedback here"}
@@ -150,11 +151,11 @@ public class EvaluatorOptimizerWorkflow {
private final String evaluatorPrompt;
- public EvaluatorOptimizerWorkflow(ChatClient chatClient) {
+ public EvaluatorOptimizer(ChatClient chatClient) {
this(chatClient, DEFAULT_GENERATOR_PROMPT, DEFAULT_EVALUATOR_PROMPT);
}
- public EvaluatorOptimizerWorkflow(ChatClient chatClient, String generatorPrompt, String evaluatorPrompt) {
+ public EvaluatorOptimizer(ChatClient chatClient, String generatorPrompt, String evaluatorPrompt) {
Assert.notNull(chatClient, "ChatClient must not be null");
Assert.hasText(generatorPrompt, "Generator prompt must not be empty");
Assert.hasText(evaluatorPrompt, "Evaluator prompt must not be empty");
diff --git a/agentic-patterns/evaluator-optimizer-workflow/src/main/resources/application.properties b/agentic-patterns/evaluator-optimizer/src/main/resources/application.properties
similarity index 100%
rename from agentic-patterns/evaluator-optimizer-workflow/src/main/resources/application.properties
rename to agentic-patterns/evaluator-optimizer/src/main/resources/application.properties
diff --git a/agentic-patterns/orchestrator-workers-workflow/.mvn/wrapper/maven-wrapper.properties b/agentic-patterns/orchestrator-workers/.mvn/wrapper/maven-wrapper.properties
similarity index 100%
rename from agentic-patterns/orchestrator-workers-workflow/.mvn/wrapper/maven-wrapper.properties
rename to agentic-patterns/orchestrator-workers/.mvn/wrapper/maven-wrapper.properties
diff --git a/agentic-patterns/orchestrator-workers-workflow/README.md b/agentic-patterns/orchestrator-workers/README.md
similarity index 91%
rename from agentic-patterns/orchestrator-workers-workflow/README.md
rename to agentic-patterns/orchestrator-workers/README.md
index 1f1b9cd..331b01d 100644
--- a/agentic-patterns/orchestrator-workers-workflow/README.md
+++ b/agentic-patterns/orchestrator-workers/README.md
@@ -27,7 +27,7 @@ This pattern is particularly effective for:
The implementation uses Spring AI's ChatClient for LLM interactions and consists of:
```java
-public class OrchestratorWorkersWorkflow {
+public class OrchestratorWorkers {
public WorkerResponse process(String taskDescription) {
// 1. Orchestrator analyzes task and determines subtasks
OrchestratorResponse orchestratorResponse = // ...
@@ -45,10 +45,10 @@ public class OrchestratorWorkersWorkflow {
```java
ChatClient chatClient = // ... initialize chat client
-OrchestratorWorkersWorkflow workflow = new OrchestratorWorkersWorkflow(chatClient);
+OrchestratorWorkers agent = new OrchestratorWorkers(chatClient);
// Process a task
-WorkerResponse response = workflow.process(
+WorkerResponse response = agent.process(
"Generate both technical and user-friendly documentation for a REST API endpoint"
);
@@ -59,11 +59,11 @@ System.out.println("Worker Outputs: " + response.workerResponses());
## Customization
-The workflow can be customized through:
+The pattern can be customized through:
1. **Custom Prompts**: Provide specialized prompts for orchestrator and workers
```java
-workflow = new OrchestratorWorkersWorkflow(
+agent = new OrchestratorWorkers(
chatClient,
customOrchestratorPrompt,
customWorkerPrompt
diff --git a/agentic-patterns/orchestrator-workers-workflow/mvnw b/agentic-patterns/orchestrator-workers/mvnw
similarity index 100%
rename from agentic-patterns/orchestrator-workers-workflow/mvnw
rename to agentic-patterns/orchestrator-workers/mvnw
diff --git a/agentic-patterns/orchestrator-workers-workflow/mvnw.cmd b/agentic-patterns/orchestrator-workers/mvnw.cmd
similarity index 100%
rename from agentic-patterns/orchestrator-workers-workflow/mvnw.cmd
rename to agentic-patterns/orchestrator-workers/mvnw.cmd
diff --git a/agentic-patterns/orchestrator-workers-workflow/pom.xml b/agentic-patterns/orchestrator-workers/pom.xml
similarity index 95%
rename from agentic-patterns/orchestrator-workers-workflow/pom.xml
rename to agentic-patterns/orchestrator-workers/pom.xml
index 680143b..305be27 100644
--- a/agentic-patterns/orchestrator-workers-workflow/pom.xml
+++ b/agentic-patterns/orchestrator-workers/pom.xml
@@ -10,9 +10,9 @@
com.example.spring.ai
- orchestrator-workers-workflow
+ orchestrator-workers
0.0.1-SNAPSHOT
- orchestrator-workers-workflow
+ orchestrator-workers
Demo project for Spring Boot
17
diff --git a/agentic-patterns/orchestrator-workers-workflow/src/main/java/com/example/agentic/Application.java b/agentic-patterns/orchestrator-workers/src/main/java/com/example/agentic/Application.java
similarity index 95%
rename from agentic-patterns/orchestrator-workers-workflow/src/main/java/com/example/agentic/Application.java
rename to agentic-patterns/orchestrator-workers/src/main/java/com/example/agentic/Application.java
index 074952d..bd1c384 100644
--- a/agentic-patterns/orchestrator-workers-workflow/src/main/java/com/example/agentic/Application.java
+++ b/agentic-patterns/orchestrator-workers/src/main/java/com/example/agentic/Application.java
@@ -23,7 +23,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
// ------------------------------------------------------------
-// ORCHESTRATOR WORKFLOW
+// ORCHESTRATOR WORKERS
// ------------------------------------------------------------
@SpringBootApplication
@@ -38,7 +38,7 @@ public class Application {
var chatClient = chatClientBuilder.build();
return args -> {
- new OrchestratorWorkersWorkflow(chatClient)
+ new OrchestratorWorkers(chatClient)
.process("Write a product description for a new eco-friendly water bottle");
};
diff --git a/agentic-patterns/orchestrator-workers-workflow/src/main/java/com/example/agentic/OrchestratorWorkersWorkflow.java b/agentic-patterns/orchestrator-workers/src/main/java/com/example/agentic/OrchestratorWorkers.java
similarity index 91%
rename from agentic-patterns/orchestrator-workers-workflow/src/main/java/com/example/agentic/OrchestratorWorkersWorkflow.java
rename to agentic-patterns/orchestrator-workers/src/main/java/com/example/agentic/OrchestratorWorkers.java
index 8e49f39..52fea28 100644
--- a/agentic-patterns/orchestrator-workers-workflow/src/main/java/com/example/agentic/OrchestratorWorkersWorkflow.java
+++ b/agentic-patterns/orchestrator-workers/src/main/java/com/example/agentic/OrchestratorWorkers.java
@@ -21,9 +21,9 @@ import org.springframework.ai.chat.client.ChatClient;
import org.springframework.util.Assert;
/**
- * Workflow: Orchestrator-workers
+ * Pattern: Orchestrator-workers
*
- * In this workflow, a central LLM (the orchestrator) dynamically breaks down
+ * In this pattern, a central LLM (the orchestrator) dynamically breaks down
* complex tasks into subtasks,
* delegates them to worker LLMs, and uses a synthesizer to combine their
* results. The orchestrator analyzes
@@ -41,7 +41,7 @@ import org.springframework.util.Assert;
* result
*
*
- * When to use: This workflow is well-suited for complex tasks where you can't
+ * When to use: This pattern is well-suited for complex tasks where you can't
* predict the subtasks needed upfront.
* For example:
*
@@ -64,7 +64,7 @@ import org.springframework.util.Assert;
* "https://www.anthropic.com/research/building-effective-agents">Building
* effective agents
*/
-public class OrchestratorWorkersWorkflow {
+public class OrchestratorWorkers {
private final ChatClient chatClient;
private final String orchestratorPrompt;
@@ -135,22 +135,22 @@ public class OrchestratorWorkersWorkflow {
}
/**
- * Creates a new OrchestratorWorkersWorkflow with default prompts.
+ * Creates a new OrchestratorWorkers with default prompts.
*
* @param chatClient The ChatClient to use for LLM interactions
*/
- public OrchestratorWorkersWorkflow(ChatClient chatClient) {
+ public OrchestratorWorkers(ChatClient chatClient) {
this(chatClient, DEFAULT_ORCHESTRATOR_PROMPT, DEFAULT_WORKER_PROMPT);
}
/**
- * Creates a new OrchestratorWorkersWorkflow with custom prompts.
+ * Creates a new OrchestratorWorkers with custom prompts.
*
* @param chatClient The ChatClient to use for LLM interactions
* @param orchestratorPrompt Custom prompt for the orchestrator LLM
* @param workerPrompt Custom prompt for the worker LLMs
*/
- public OrchestratorWorkersWorkflow(ChatClient chatClient, String orchestratorPrompt, String workerPrompt) {
+ public OrchestratorWorkers(ChatClient chatClient, String orchestratorPrompt, String workerPrompt) {
Assert.notNull(chatClient, "ChatClient must not be null");
Assert.hasText(orchestratorPrompt, "Orchestrator prompt must not be empty");
Assert.hasText(workerPrompt, "Worker prompt must not be empty");
@@ -161,7 +161,7 @@ public class OrchestratorWorkersWorkflow {
}
/**
- * Processes a task using the orchestrator-workers workflow pattern.
+ * Processes a task using the orchestrator-workers pattern.
* First, the orchestrator analyzes the task and breaks it down into subtasks.
* Then, workers execute each subtask in parallel.
* Finally, the results are combined into a single response.
diff --git a/agentic-patterns/orchestrator-workers-workflow/src/main/resources/application.properties b/agentic-patterns/orchestrator-workers/src/main/resources/application.properties
similarity index 100%
rename from agentic-patterns/orchestrator-workers-workflow/src/main/resources/application.properties
rename to agentic-patterns/orchestrator-workers/src/main/resources/application.properties
diff --git a/agentic-patterns/pom.xml b/agentic-patterns/pom.xml
index 67afd71..866c7b4 100644
--- a/agentic-patterns/pom.xml
+++ b/agentic-patterns/pom.xml
@@ -17,8 +17,8 @@
chain-workflow
parallelization-worflow
routing-workflow
- orchestrator-workers-workflow
- evaluator-optimizer-workflow
+ orchestrator-workers
+ evaluator-optimizer