Skip to content

Commit b229da5

Browse files
committed
code refactoring
1 parent 1c0de00 commit b229da5

File tree

9 files changed

+99
-23
lines changed

9 files changed

+99
-23
lines changed

examples/src/main/java/com/javaaidev/agenticpatterns/examples/parallelizationworkflow/AlgorithmArticleGenerationAgent.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ protected String getPromptTemplate() {
5858
}
5959

6060
@Override
61-
protected @Nullable List<SubtaskCreationRequest<AlgorithmArticleGenerationRequest>> createTasks(
61+
protected List<SubtaskCreationRequest<AlgorithmArticleGenerationRequest>> createTasks(
6262
@Nullable AlgorithmArticleGenerationRequest request) {
6363
var languages = AgentUtils.safeGet(request,
6464
AlgorithmArticleGenerationRequest::languages, List.<String>of());

examples/src/main/java/com/javaaidev/agenticpatterns/examples/routingworkflow/CustomerSupportAgent.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import com.javaaidev.agenticpatterns.core.AgentUtils;
44
import com.javaaidev.agenticpatterns.examples.routingworkflow.CustomerSupportAgent.CustomerSupportRequest;
55
import com.javaaidev.agenticpatterns.examples.routingworkflow.CustomerSupportAgent.CustomerSupportResponse;
6+
import com.javaaidev.agenticpatterns.routingworkflow.RoutingChoice;
67
import com.javaaidev.agenticpatterns.routingworkflow.RoutingWorkflowAgent;
78
import com.javaaidev.agenticpatterns.taskexecution.TaskExecutionAgent;
89
import io.micrometer.observation.ObservationRegistry;
@@ -37,7 +38,7 @@ private void initRoutes() {
3738
}
3839

3940
@Override
40-
protected String formatRequest(@Nullable CustomerSupportRequest request) {
41+
protected String formatRoutingInput(@Nullable CustomerSupportRequest request) {
4142
return AgentUtils.safeGet(request, CustomerSupportRequest::question, "");
4243
}
4344

parallelization-workflow/README.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
# Parallelization Workflow Agent
2+
3+
Implementation
4+
of [Parallelization Workflow pattern](https://javaaidev.com/docs/agentic-patterns/patterns/parallelization-workflow)
5+
6+
See [doc](https://javaaidev.com/docs/agentic-patterns/reference-implementation/parallelization-workflow-agent)

parallelization-workflow/src/main/java/com/javaaidev/agenticpatterns/parallelizationworkflow/SubtaskCreationRequest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
*
99
* @param taskId Task id
1010
* @param task Task, see {@linkplain TaskExecutionAgent}
11-
* @param requestTransformer Transform request to task inpu
11+
* @param requestTransformer Transform request to task input
1212
* @param <Request> Request type
1313
*/
1414
public record SubtaskCreationRequest<Request>(

routing-workflow/README.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
# Routing Workflow Agent
2+
3+
Implementation
4+
of [Routing Workflow pattern](https://javaaidev.com/docs/agentic-patterns/patterns/routing-workflow)
5+
6+
See [doc](https://javaaidev.com/docs/agentic-patterns/reference-implementation/routing-workflow-agent)
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package com.javaaidev.agenticpatterns.routingworkflow;
2+
3+
import com.javaaidev.agenticpatterns.taskexecution.TaskExecutionAgent;
4+
5+
/**
6+
* A routing choice
7+
*
8+
* @param name Name of the route
9+
* @param description Description of the route
10+
* @param agent Task of the route
11+
* @param <Request> Task input type
12+
* @param <Response> Task output type
13+
*/
14+
public record RoutingChoice<Request, Response>(String name,
15+
String description,
16+
TaskExecutionAgent<Request, Response> agent) {
17+
18+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package com.javaaidev.agenticpatterns.routingworkflow;
2+
3+
import java.util.List;
4+
5+
/**
6+
* Routing request
7+
*
8+
* @param request Original task input
9+
* @param choices Routing choices, see {@linkplain RoutingChoice}
10+
* @param <Request> Task input type
11+
* @param <Response> Task output type
12+
*/
13+
public record RoutingRequest<Request, Response>(Request request,
14+
List<RoutingChoice<Request, Response>> choices) {
15+
16+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package com.javaaidev.agenticpatterns.routingworkflow;
2+
3+
/**
4+
* Routing response
5+
*
6+
* @param name Selected route name
7+
* @param reason Reason for route selection
8+
*/
9+
public record RoutingResponse(String name, String reason) {
10+
11+
}

routing-workflow/src/main/java/com/javaaidev/agenticpatterns/routingworkflow/RoutingWorkflowAgent.java

Lines changed: 38 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import com.javaaidev.agenticpatterns.taskexecution.TaskExecutionAgent;
55
import io.micrometer.observation.ObservationRegistry;
66
import java.lang.reflect.Type;
7-
import java.util.List;
87
import java.util.Map;
98
import java.util.Objects;
109
import java.util.concurrent.CopyOnWriteArrayList;
@@ -15,6 +14,13 @@
1514
import org.springframework.ai.chat.client.ChatClient;
1615
import org.springframework.util.Assert;
1716

17+
/**
18+
* Routing Workflow agent, refer to <a
19+
* href="https://javaaidev.com/docs/agentic-patterns/patterns/routing-workflow">doc</a>
20+
*
21+
* @param <Request> Task input type
22+
* @param <Response> Task output type
23+
*/
1824
public abstract class RoutingWorkflowAgent<Request, Response> extends
1925
TaskExecutionAgent<Request, Response> {
2026

@@ -36,20 +42,11 @@ protected RoutingWorkflowAgent(ChatClient chatClient,
3642
routingAgent = new RoutingAgent(chatClient);
3743
}
3844

39-
public record RoutingChoice<Request, Response>(String name, String description,
40-
TaskExecutionAgent<Request, Response> agent) {
41-
42-
}
43-
44-
public record RoutingRequest<Request, Response>(Request request,
45-
List<RoutingChoice<Request, Response>> choices) {
46-
47-
}
48-
49-
public record RoutingResponse(String name, String reason) {
50-
51-
}
52-
45+
/**
46+
* Add a new routing choice
47+
*
48+
* @param routingChoice Routing choice
49+
*/
5350
protected void addRoutingChoice(RoutingChoice<Request, Response> routingChoice) {
5451
routingChoices.add(routingChoice);
5552
}
@@ -59,9 +56,14 @@ protected String getPromptTemplate() {
5956
return "";
6057
}
6158

59+
/**
60+
* Get the prompt template for routing
61+
*
62+
* @return Prompt template
63+
*/
6264
protected String getRoutingPromptTemplate() {
6365
return """
64-
Goal: Select the best target to handle the input
66+
Goal: Select the best target to handle the input from a list of choices
6567
6668
Choices:
6769
{choices}
@@ -71,10 +73,22 @@ protected String getRoutingPromptTemplate() {
7173
""";
7274
}
7375

74-
protected String formatRequest(@Nullable Request request) {
76+
/**
77+
* Generate the input used by the default prompt template
78+
*
79+
* @param request Request
80+
* @return Input for routing prompt template
81+
*/
82+
protected String formatRoutingInput(@Nullable Request request) {
7583
return Objects.toString(request, "");
7684
}
7785

86+
/**
87+
* Get values of variables used in the default prompt template
88+
*
89+
* @param routingRequest Routing request
90+
* @return Values of variables
91+
*/
7892
protected @Nullable Map<String, Object> getRoutingPromptContext(
7993
@Nullable RoutingRequest<Request, Response> routingRequest) {
8094
Assert.notNull(routingRequest, "routing request cannot be null");
@@ -83,7 +97,7 @@ protected String formatRequest(@Nullable Request request) {
8397
.collect(Collectors.joining("\n"));
8498
return Map.of(
8599
"choices", choices,
86-
"input", formatRequest(routingRequest.request())
100+
"input", formatRoutingInput(routingRequest.request())
87101
);
88102
}
89103

@@ -105,7 +119,11 @@ public Response doCall(@Nullable Request request) {
105119
return targetAgent.call(request);
106120
}
107121

108-
protected class RoutingAgent extends TaskExecutionAgent<RoutingRequest, RoutingResponse> {
122+
/**
123+
* Agent for the routing
124+
*/
125+
protected class RoutingAgent extends
126+
TaskExecutionAgent<RoutingRequest<Request, Response>, RoutingResponse> {
109127

110128
protected RoutingAgent(ChatClient chatClient) {
111129
super(chatClient);
@@ -118,7 +136,7 @@ protected String getPromptTemplate() {
118136

119137
@Override
120138
protected @Nullable Map<String, Object> getPromptContext(
121-
@Nullable RoutingRequest routingRequest) {
139+
@Nullable RoutingRequest<Request, Response> routingRequest) {
122140
return getRoutingPromptContext(routingRequest);
123141
}
124142
}

0 commit comments

Comments
 (0)