@@ -7,12 +7,12 @@ This Maven plugin provides a convenient way to start the ADK Web Server with you
7
7
### Basic Usage
8
8
9
9
``` bash
10
- mvn google-adk:web -Dagents=com.example.MyAgentProvider .INSTANCE
10
+ mvn google-adk:web -Dagents=com.example.MyAgentLoader .INSTANCE
11
11
```
12
12
13
13
### Parameters
14
14
15
- - ** ` agents ` ** (required): Full class path to your AgentProvider implementation
15
+ - ** ` agents ` ** (required): Full class path to your AgentLoader implementation
16
16
- ** ` port ` ** (optional, default: 8000): Port for the web server
17
17
- ** ` host ` ** (optional, default: localhost): Host address to bind to
18
18
- ** ` hotReloading ` ** (optional, default: true): Whether to enable hot reloading
@@ -21,36 +21,43 @@ mvn google-adk:web -Dagents=com.example.MyAgentProvider.INSTANCE
21
21
22
22
``` bash
23
23
mvn google-adk:web \
24
- -Dagents=com.example.MyAgentProvider .INSTANCE \
24
+ -Dagents=com.example.MyAgentLoader .INSTANCE \
25
25
-Dhost=0.0.0.0 \
26
26
-Dport=9090 \
27
27
-DhotReloading=false
28
28
```
29
29
30
- ## Creating an AgentProvider
30
+ ## Creating an AgentLoader
31
31
32
- ### 1. Implement the AgentProvider Interface
32
+ ### 1. Implement the AgentLoader Interface
33
33
34
- Create a class that implements ` com.google.adk.maven.AgentProvider ` :
34
+ Create a class that implements ` com.google.adk.maven.AgentLoader ` :
35
35
36
36
``` java
37
37
package com.example ;
38
38
39
39
import com.google.adk.agents.BaseAgent ;
40
40
import com.google.adk.agents.LlmAgent ;
41
- import com.google.adk.maven.AgentProvider ;
42
- import java.util.Map ;
41
+ import com.google.adk.maven.AgentLoader ;
42
+ import com.google.common.collect.ImmutableList ;
43
+ import java.util.NoSuchElementException ;
43
44
44
- public class MyAgentProvider implements AgentProvider {
45
+ public class MyAgentLoader implements AgentLoader {
45
46
46
- public static final MyAgentProvider INSTANCE = new MyAgentProvider ();
47
+ public static final MyAgentLoader INSTANCE = new MyAgentLoader ();
47
48
48
49
@Override
49
- public Map<String , BaseAgent > getAgents () {
50
- return Map . of(
51
- " chat_bot" , createChatBot(),
52
- " code_assistant" , createCodeAssistant()
53
- );
50
+ public ImmutableList<String > listAgents () {
51
+ return ImmutableList . of(" chat_bot" , " code_assistant" );
52
+ }
53
+
54
+ @Override
55
+ public BaseAgent loadAgent (String name ) {
56
+ switch (name) {
57
+ case " chat_bot" : return createChatBot();
58
+ case " code_assistant" : return createCodeAssistant();
59
+ default : throw new NoSuchElementException (" Agent not found: " + name);
60
+ }
54
61
}
55
62
56
63
private BaseAgent createChatBot () {
@@ -92,19 +99,27 @@ Add the plugin to your `pom.xml`:
92
99
### 3. Run the Web Server
93
100
94
101
``` bash
95
- mvn google-adk:web -Dagents=com.example.MyAgentProvider .INSTANCE
102
+ mvn google-adk:web -Dagents=com.example.MyAgentLoader .INSTANCE
96
103
```
97
104
98
- ## Alternative AgentProvider Patterns
105
+ ## Alternative AgentLoader Patterns
99
106
100
107
### Using Default Constructor
101
108
102
109
``` java
103
- public class SimpleAgentProvider implements AgentProvider {
110
+ public class SimpleAgentLoader implements AgentLoader {
104
111
// No static field needed, uses default constructor
105
112
@Override
106
- public Map<String , BaseAgent > getAgents () {
107
- return Map . of(" simple_agent" , createSimpleAgent());
113
+ public ImmutableList<String > listAgents () {
114
+ return ImmutableList . of(" simple_agent" );
115
+ }
116
+
117
+ @Override
118
+ public BaseAgent loadAgent (String name ) {
119
+ if (" simple_agent" . equals(name)) {
120
+ return createSimpleAgent();
121
+ }
122
+ throw new NoSuchElementException (" Agent not found: " + name);
108
123
}
109
124
110
125
private BaseAgent createSimpleAgent () {
@@ -119,28 +134,39 @@ public class SimpleAgentProvider implements AgentProvider {
119
134
```
120
135
121
136
Usage:
137
+
122
138
``` bash
123
- mvn google-adk:web -Dagents=com.example.SimpleAgentProvider
139
+ mvn google-adk:web -Dagents=com.example.SimpleAgentLoader
124
140
```
125
141
126
142
### Using Other Static Fields
127
143
128
144
``` java
129
- public class MultipleProviders implements AgentProvider {
130
- public static final MultipleProviders DEFAULT = new MultipleProviders ();
131
- public static final MultipleProviders ADVANCED = new MultipleProviders (true );
145
+ public class MultipleLoaders implements AgentLoader {
146
+ public static final MultipleLoaders DEFAULT = new MultipleLoaders ();
147
+ public static final MultipleLoaders ADVANCED = new MultipleLoaders (true );
132
148
133
149
private final boolean advanced;
134
150
135
- public MultipleProviders () { this (false ); }
136
- public MultipleProviders (boolean advanced ) { this . advanced = advanced; }
151
+ public MultipleLoaders () { this (false ); }
152
+ public MultipleLoaders (boolean advanced ) { this . advanced = advanced; }
137
153
138
154
@Override
139
- public Map <String , BaseAgent > getAgents () {
155
+ public ImmutableList <String > listAgents () {
140
156
if (advanced) {
141
- return Map . of(" advanced_agent" , createAdvancedAgent());
157
+ return ImmutableList . of(" advanced_agent" );
158
+ }
159
+ return ImmutableList . of(" basic_agent" );
160
+ }
161
+
162
+ @Override
163
+ public BaseAgent loadAgent (String name ) {
164
+ if (advanced && " advanced_agent" . equals(name)) {
165
+ return createAdvancedAgent();
166
+ } else if (! advanced && " basic_agent" . equals(name)) {
167
+ return createBasicAgent();
142
168
}
143
- return Map . of( " basic_agent " , createBasicAgent() );
169
+ throw new NoSuchElementException ( " Agent not found: " + name );
144
170
}
145
171
146
172
private BaseAgent createBasicAgent () {
@@ -164,8 +190,9 @@ public class MultipleProviders implements AgentProvider {
164
190
```
165
191
166
192
Usage:
193
+
167
194
``` bash
168
- mvn google-adk:web -Dagents=com.example.MultipleProviders .ADVANCED
195
+ mvn google-adk:web -Dagents=com.example.MultipleLoaders .ADVANCED
169
196
```
170
197
171
198
## Web UI
@@ -194,7 +221,7 @@ Make sure your project has the necessary ADK dependencies:
194
221
<version >0.2.1-SNAPSHOT</version >
195
222
</dependency >
196
223
197
- <!-- Maven plugin dependency for AgentProvider interface -->
224
+ <!-- Maven plugin dependency for AgentLoader interface -->
198
225
<dependency >
199
226
<groupId >com.google.adk</groupId >
200
227
<artifactId >google-adk-maven-plugin</artifactId >
@@ -223,15 +250,17 @@ Add the plugin to your `pom.xml` for convenience:
223
250
```
224
251
225
252
Then use the short command:
253
+
226
254
``` bash
227
- mvn google-adk:web -Dagents=com.example.MyAgentProvider .INSTANCE
255
+ mvn google-adk:web -Dagents=com.example.MyAgentLoader .INSTANCE
228
256
```
229
257
230
258
** Option 2: Without plugin declaration (no pom.xml changes)**
231
259
232
260
Use the full coordinates directly:
261
+
233
262
``` bash
234
- mvn com.google.adk:google-adk-maven-plugin:web -Dagents=com.example.MyAgentProvider .INSTANCE
263
+ mvn com.google.adk:google-adk-maven-plugin:web -Dagents=com.example.MyAgentLoader .INSTANCE
235
264
```
236
265
237
266
## Stopping the Server
0 commit comments