Skip to content

Commit 75748e6

Browse files
committed
code refactoring
1 parent ab552d2 commit 75748e6

File tree

12 files changed

+94
-74
lines changed

12 files changed

+94
-74
lines changed

core/src/main/java/com/javaaidev/agenticpatterns/core/Agent.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,9 @@
44

55
public abstract class Agent {
66

7-
protected abstract ChatClient getChatClient();
7+
protected final ChatClient chatClient;
8+
9+
protected Agent(ChatClient chatClient) {
10+
this.chatClient = chatClient;
11+
}
812
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package com.javaaidev.agenticpatterns.core;
2+
3+
import java.lang.reflect.ParameterizedType;
4+
import java.lang.reflect.Type;
5+
import org.jspecify.annotations.Nullable;
6+
7+
public record ParameterizedTypeImpl(@Nullable Type rawType,
8+
Type[] actualTypeArguments,
9+
@Nullable Type ownerType) implements ParameterizedType {
10+
11+
@Override
12+
public Type[] getActualTypeArguments() {
13+
return actualTypeArguments;
14+
}
15+
16+
@Override
17+
public Type getRawType() {
18+
return rawType;
19+
}
20+
21+
@Override
22+
public Type getOwnerType() {
23+
return ownerType;
24+
}
25+
}
Lines changed: 1 addition & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package com.javaaidev.agenticpatterns.core;
22

3-
import java.lang.reflect.ParameterizedType;
43
import java.lang.reflect.Type;
54
import org.jspecify.annotations.Nullable;
65
import org.springframework.core.ResolvableType;
@@ -25,7 +24,7 @@ private static Type doResolveType(final ResolvableType type) {
2524
return Object.class;
2625
}
2726
var generics = type.getGenerics();
28-
var paraType = new CustomParameterizedType(type.resolve(), new Type[generics.length],
27+
var paraType = new ParameterizedTypeImpl(type.resolve(), new Type[generics.length],
2928
null);
3029
for (int i = 0; i < generics.length; i++) {
3130
var nestedType = generics[i];
@@ -34,24 +33,4 @@ private static Type doResolveType(final ResolvableType type) {
3433
return paraType;
3534
}
3635

37-
38-
private record CustomParameterizedType(@Nullable Type rawType,
39-
Type[] actualTypeArguments,
40-
@Nullable Type ownerType) implements ParameterizedType {
41-
42-
@Override
43-
public Type[] getActualTypeArguments() {
44-
return actualTypeArguments;
45-
}
46-
47-
@Override
48-
public Type getRawType() {
49-
return rawType;
50-
}
51-
52-
@Override
53-
public Type getOwnerType() {
54-
return ownerType;
55-
}
56-
}
5736
}

evaluator-optimizer/src/main/java/com/javaaidev/agenticpatterns/evaluatoroptimizer/EvaluatorOptimizerAgent.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,10 @@
55
import org.slf4j.Logger;
66
import org.slf4j.LoggerFactory;
77

8+
/**
9+
* @param <Request>
10+
* @param <Response>
11+
*/
812
public abstract class EvaluatorOptimizerAgent<Request, Response> {
913

1014
protected TaskExecutionAgent<Request, Response> initialResultAgent = buildInitialResultAgent();

evaluator-optimizer/src/main/java/com/javaaidev/agenticpatterns/evaluatoroptimizer/PromptBasedEvaluatorOptimizerAgent.java

Lines changed: 9 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@ private void tryResolveType() {
3333

3434
public class GenerateInitialResultAgent extends TaskExecutionAgent<Request, Response> {
3535

36-
public GenerateInitialResultAgent(Type responseType) {
37-
super(responseType);
36+
public GenerateInitialResultAgent(@Nullable Type responseType) {
37+
super(getGenerationChatClient(), responseType);
3838
}
3939

4040
@Override
@@ -46,11 +46,6 @@ protected String getPromptTemplate() {
4646
protected @Nullable Map<String, Object> getPromptContext(@Nullable Request request) {
4747
return buildInitialResultPromptContext(request);
4848
}
49-
50-
@Override
51-
protected ChatClient getChatClient() {
52-
return getGenerationChatClient();
53-
}
5449
}
5550

5651
@Override
@@ -68,6 +63,11 @@ protected TaskExecutionAgent<Request, Response> buildInitialResultAgent() {
6863

6964
public class EvaluateAgent extends TaskExecutionAgent<Response, Evaluation> {
7065

66+
67+
protected EvaluateAgent() {
68+
super(getEvaluationChatClient());
69+
}
70+
7171
@Override
7272
protected String getPromptTemplate() {
7373
return getEvaluationPromptTemplate();
@@ -77,11 +77,6 @@ protected String getPromptTemplate() {
7777
protected @Nullable Map<String, Object> getPromptContext(@Nullable Response response) {
7878
return buildEvaluationPromptContext(response);
7979
}
80-
81-
@Override
82-
protected ChatClient getChatClient() {
83-
return getEvaluationChatClient();
84-
}
8580
}
8681

8782
@Override
@@ -98,8 +93,8 @@ protected TaskExecutionAgent<Response, Evaluation> buildEvaluationAgent() {
9893

9994
public class OptimizeAgent extends TaskExecutionAgent<OptimizationInput<Response>, Response> {
10095

101-
public OptimizeAgent(Type responseType) {
102-
super(responseType);
96+
public OptimizeAgent(@Nullable Type responseType) {
97+
super(getGenerationChatClient(), responseType);
10398
}
10499

105100
@Override
@@ -112,11 +107,6 @@ protected String getPromptTemplate() {
112107
@Nullable OptimizationInput<Response> responseOptimizationInput) {
113108
return buildOptimizationPromptContext(responseOptimizationInput);
114109
}
115-
116-
@Override
117-
protected ChatClient getChatClient() {
118-
return getGenerationChatClient();
119-
}
120110
}
121111

122112
@Override

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

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,8 @@
1616
public class AlgorithmArticleGenerationAgent extends
1717
ParallelizationWorkflowAgent.PromptBasedAssembling<AlgorithmArticleGenerationRequest, AlgorithmArticleGenerationResponse> {
1818

19-
private final ChatClient chatClient;
20-
2119
public AlgorithmArticleGenerationAgent(ChatClient chatClient) {
22-
super(AlgorithmArticleGenerationResponse.class);
23-
this.chatClient = chatClient;
20+
super(chatClient, AlgorithmArticleGenerationResponse.class);
2421
}
2522

2623
@Override
@@ -37,11 +34,6 @@ protected String getPromptTemplate() {
3734
""";
3835
}
3936

40-
@Override
41-
protected ChatClient getChatClient() {
42-
return this.chatClient;
43-
}
44-
4537
@Override
4638
protected @Nullable Map<String, Object> getParentPromptContext(
4739
@Nullable AlgorithmArticleGenerationRequest request) {
@@ -70,7 +62,7 @@ protected ChatClient getChatClient() {
7062
if (CollectionUtils.isEmpty(languages)) {
7163
return List.of();
7264
}
73-
var codeGenerationAgent = new SampleCodeGenerationAgent(getChatClient());
65+
var codeGenerationAgent = new SampleCodeGenerationAgent(chatClient);
7466
return languages.stream().map(
7567
language -> new SubtaskCreationRequest<>(language,
7668
codeGenerationAgent,

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

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ public class SampleCodeGenerationAgent extends
1414
private final ChatClient chatClient;
1515

1616
public SampleCodeGenerationAgent(ChatClient chatClient) {
17+
super(chatClient);
1718
this.chatClient = chatClient;
1819
}
1920

@@ -25,11 +26,6 @@ protected String getPromptTemplate() {
2526
""";
2627
}
2728

28-
@Override
29-
protected ChatClient getChatClient() {
30-
return this.chatClient;
31-
}
32-
3329
@Override
3430
protected @Nullable Map<String, Object> getPromptContext(
3531
@Nullable SampleCodeGenerationRequest request) {

examples/src/main/java/com/javaaidev/agenticpatterns/examples/taskexecution/UserGenerationAgent.java

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,8 @@
1111

1212
public class UserGenerationAgent extends TaskExecutionAgent<UserGenerationRequest, List<User>> {
1313

14-
private final ChatClient chatClient;
15-
1614
public UserGenerationAgent(ChatClient chatClient) {
17-
this.chatClient = chatClient;
15+
super(chatClient);
1816
}
1917

2018
@Override
@@ -32,11 +30,6 @@ protected String getPromptTemplate() {
3230
);
3331
}
3432

35-
@Override
36-
protected ChatClient getChatClient() {
37-
return chatClient;
38-
}
39-
4033
public record UserGenerationRequest(int count) {
4134

4235
}

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

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import org.jspecify.annotations.Nullable;
2020
import org.slf4j.Logger;
2121
import org.slf4j.LoggerFactory;
22+
import org.springframework.ai.chat.client.ChatClient;
2223

2324
public abstract class ParallelizationWorkflowAgent<Request, Response> extends
2425
TaskExecutionAgent<Request, Response> {
@@ -69,11 +70,12 @@ public String taskId() {
6970
}
7071
}
7172

72-
public ParallelizationWorkflowAgent(@Nullable Type responseType) {
73-
super(responseType);
73+
public ParallelizationWorkflowAgent(ChatClient chatClient) {
74+
super(chatClient);
7475
}
7576

76-
public ParallelizationWorkflowAgent() {
77+
public ParallelizationWorkflowAgent(ChatClient chatClient, @Nullable Type responseType) {
78+
super(chatClient, responseType);
7779
}
7880

7981
protected final CopyOnWriteArrayList<SubtaskContext> subtasks = new CopyOnWriteArrayList<>();
@@ -145,6 +147,14 @@ protected TaskExecutionResults runSubtasks(@Nullable Request request) {
145147
public abstract static class DirectAssembling<Request, Response> extends
146148
ParallelizationWorkflowAgent<Request, Response> {
147149

150+
public DirectAssembling(ChatClient chatClient) {
151+
super(chatClient);
152+
}
153+
154+
public DirectAssembling(ChatClient chatClient, @Nullable Type responseType) {
155+
super(chatClient, responseType);
156+
}
157+
148158
@Override
149159
protected String getPromptTemplate() {
150160
return "";
@@ -161,11 +171,12 @@ public Response call(@Nullable Request request) {
161171
public abstract static class PromptBasedAssembling<Request, Response> extends
162172
ParallelizationWorkflowAgent<Request, Response> {
163173

164-
public PromptBasedAssembling() {
174+
public PromptBasedAssembling(ChatClient chatClient) {
175+
super(chatClient);
165176
}
166177

167-
public PromptBasedAssembling(@Nullable Type responseType) {
168-
super(responseType);
178+
public PromptBasedAssembling(ChatClient chatClient, @Nullable Type responseType) {
179+
super(chatClient, responseType);
169180
}
170181

171182
protected abstract @Nullable Map<String, Object> getSubtasksPromptContext(

pom.xml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,20 @@
3636
</dependencies>
3737
</dependencyManagement>
3838

39+
<dependencies>
40+
<dependency>
41+
<groupId>org.junit.jupiter</groupId>
42+
<artifactId>junit-jupiter-api</artifactId>
43+
<version>5.11.4</version>
44+
<scope>test</scope>
45+
</dependency>
46+
<dependency>
47+
<groupId>org.assertj</groupId>
48+
<artifactId>assertj-core</artifactId>
49+
<version>3.26.3</version>
50+
</dependency>
51+
</dependencies>
52+
3953
<repositories>
4054
<repository>
4155
<id>spring-milestones</id>

0 commit comments

Comments
 (0)