25
25
# from adk_agent import ADKAgent
26
26
# from agent_registry import AgentRegistry
27
27
# from endpoint import add_adk_fastapi_endpoint
28
- from adk_middleware import ADKAgent , AgentRegistry , add_adk_fastapi_endpoint
28
+ from adk_middleware import ADKAgent , add_adk_fastapi_endpoint
29
29
# Import Google ADK components
30
30
from google .adk .agents import Agent
31
31
from google .adk import tools as adk_tools
@@ -74,32 +74,22 @@ async def setup_and_run():
74
74
tools = [adk_tools .preload_memory_tool .PreloadMemoryTool ()]
75
75
)
76
76
77
- # Step 3: Register agents
78
- print ("📝 Registering agents..." )
79
- registry = AgentRegistry .get_instance ()
80
-
81
- # Register with specific IDs that AG-UI clients can reference
82
- registry .register_agent ("assistant" , assistant )
83
-
84
- # Try to import and register haiku generator agent
77
+ # Try to import haiku generator agent
85
78
print ("🎋 Attempting to import haiku generator agent..." )
79
+ haiku_generator_agent = None
86
80
try :
87
81
from tool_based_generative_ui .agent import haiku_generator_agent
88
82
print (f" ✅ Successfully imported haiku_generator_agent" )
89
83
print (f" Type: { type (haiku_generator_agent )} " )
90
84
print (f" Name: { getattr (haiku_generator_agent , 'name' , 'NO NAME' )} " )
91
- registry .register_agent ('adk-tool-based-generative-ui' , haiku_generator_agent )
92
- print (f" ✅ Registered as 'adk-tool-based-generative-ui'" )
85
+ print (f" ✅ Available for use" )
93
86
except Exception as e :
94
87
print (f" ❌ Failed to import haiku_generator_agent: { e } " )
95
88
96
- # Set default agent
97
- registry .set_default_agent (assistant )
98
-
99
- # List all registered agents
100
- print ("\n 📋 Currently registered agents:" )
101
- for agent_id in registry .list_registered_agents ():
102
- print (f" - { agent_id } " )
89
+ print (f"\n 📋 Available agents:" )
90
+ print (f" - assistant: { assistant .name } " )
91
+ if haiku_generator_agent :
92
+ print (f" - haiku_generator: { haiku_generator_agent .name } " )
103
93
104
94
105
95
# Step 4: Configure ADK middleware
@@ -127,14 +117,26 @@ def extract_app_name(input_data):
127
117
return ctx .value
128
118
return "default_app"
129
119
130
- adk_agent = ADKAgent (
120
+ # Create ADKAgent instances for different agents
121
+ assistant_adk_agent = ADKAgent (
122
+ adk_agent = assistant ,
131
123
app_name_extractor = extract_app_name ,
132
124
user_id_extractor = extract_user_id ,
133
125
use_in_memory_services = True ,
134
126
memory_service = shared_memory_service , # Use the same memory service as the ADK agent
135
127
# Defaults: 1200s timeout (20 min), 300s cleanup (5 min)
136
128
)
137
129
130
+ haiku_adk_agent = None
131
+ if haiku_generator_agent :
132
+ haiku_adk_agent = ADKAgent (
133
+ adk_agent = haiku_generator_agent ,
134
+ app_name_extractor = extract_app_name ,
135
+ user_id_extractor = extract_user_id ,
136
+ use_in_memory_services = True ,
137
+ memory_service = shared_memory_service ,
138
+ )
139
+
138
140
# Step 5: Create FastAPI app
139
141
print ("🌐 Creating FastAPI app..." )
140
142
app = FastAPI (
@@ -153,52 +155,60 @@ def extract_app_name(input_data):
153
155
154
156
155
157
# Step 6: Add endpoints
156
- # Main chat endpoint
157
- add_adk_fastapi_endpoint (app , adk_agent , path = "/chat" )
158
-
159
- # Add haiku generator endpoint
160
- add_adk_fastapi_endpoint (app , adk_agent , path = "/adk-tool-based-generative-ui" )
161
- print (" ✅ Added endpoint: /adk-tool-based-generative-ui" )
162
-
163
- # Agent-specific endpoints (optional)
164
- # This allows clients to specify which agent to use via the URL
165
- # add_adk_fastapi_endpoint(app, adk_agent, path="/agents/assistant")
166
- # add_adk_fastapi_endpoint(app, adk_agent, path="/agents/code-helper")
158
+ # Each endpoint uses its specific ADKAgent instance
159
+ add_adk_fastapi_endpoint (app , assistant_adk_agent , path = "/chat" )
160
+
161
+ # Add haiku generator endpoint if available
162
+ if haiku_adk_agent :
163
+ add_adk_fastapi_endpoint (app , haiku_adk_agent , path = "/adk-tool-based-generative-ui" )
164
+ print (" ✅ Added endpoint: /adk-tool-based-generative-ui" )
165
+ else :
166
+ print (" ❌ Skipped haiku endpoint - agent not available" )
167
+
168
+ # Agent-specific endpoints (optional) - each would use its own ADKAgent instance
169
+ # assistant_adk_agent = ADKAgent(adk_agent=assistant, ...)
170
+ # add_adk_fastapi_endpoint(app, assistant_adk_agent, path="/agents/assistant")
171
+ # code_helper_adk_agent = ADKAgent(adk_agent=code_helper, ...)
172
+ # add_adk_fastapi_endpoint(app, code_helper_adk_agent, path="/agents/code-helper")
167
173
168
174
@app .get ("/" )
169
175
async def root ():
170
- registry = AgentRegistry .get_instance ()
176
+ available_agents = ["assistant" ]
177
+ endpoints = {"chat" : "/chat" , "docs" : "/docs" , "health" : "/health" }
178
+ if haiku_generator_agent :
179
+ available_agents .append ("haiku-generator" )
180
+ endpoints ["adk-tool-based-generative-ui" ] = "/adk-tool-based-generative-ui"
181
+
171
182
return {
172
183
"service" : "ADK-AG-UI Integration" ,
173
184
"version" : "0.1.0" ,
174
185
"agents" : {
175
186
"default" : "assistant" ,
176
- "available" : registry . list_registered_agents ()
187
+ "available" : available_agents
177
188
},
178
- "endpoints" : {
179
- "chat" : "/chat" ,
180
- "adk-tool-based-generative-ui" : "/adk-tool-based-generative-ui" ,
181
- "docs" : "/docs" ,
182
- "health" : "/health"
183
- }
189
+ "endpoints" : endpoints
184
190
}
185
191
186
192
@app .get ("/health" )
187
193
async def health ():
188
- registry = AgentRegistry .get_instance ()
194
+ agent_count = 1 # assistant
195
+ if haiku_generator_agent :
196
+ agent_count += 1
189
197
return {
190
198
"status" : "healthy" ,
191
- "agents_registered " : len ( registry . _agents ) ,
192
- "default_agent" : registry . _default_agent_id
199
+ "agents_available " : agent_count ,
200
+ "default_agent" : "assistant"
193
201
}
194
202
195
203
@app .get ("/agents" )
196
204
async def list_agents ():
197
205
"""List available agents."""
198
- registry = AgentRegistry .get_instance ()
206
+ available_agents = ["assistant" ]
207
+ if haiku_generator_agent :
208
+ available_agents .append ("haiku-generator" )
199
209
return {
200
- "agents" : list ( registry . _agents . keys ()) ,
201
- "default" : registry . _default_agent_id
210
+ "agents" : available_agents ,
211
+ "default" : "assistant"
202
212
}
203
213
204
214
0 commit comments