@@ -21,30 +21,34 @@ def __init__(self, server_url: str, model: str):
21
21
self .model = model
22
22
self .running = True
23
23
24
+ self .tool_schemas = []
25
+
24
26
def add_agent (self , agent : Agent ):
25
27
self .agents .append (agent )
26
28
27
- def run (self , tool_callback : Callable , app_managers : List [AppManager ]):
29
+ def run (self , tool_callback : Callable , post_system_tool_calls : List [ToolCall ]):
28
30
while self .running :
29
- for agent in self .agents :
31
+ for agent_index , agent in enumerate ( self .agents ) :
30
32
print ("~" * 100 )
33
+ print ("###AGENT RUN STARTING###" )
34
+ print (f"###{ agent_index } ###" )
31
35
print (f"Running agent: { agent .name } \n " )
32
36
33
37
post_system_messages = []
34
- # make assistant messages for loaded apps
35
- agent_app_manager = app_managers [agent .id ]
36
- get_loaded_apps_tool_call = ToolCall (
37
- toolset_id = "app_manager" ,
38
- name = "get_loaded_apps" ,
39
- arguments = {}
40
- )
41
- get_loaded_apps_tool_call_result = agent_app_manager .agent_tool_callback (agent , get_loaded_apps_tool_call )
42
-
43
- post_system_messages .append (Message (role = "assistant" , tool_calls = [get_loaded_apps_tool_call ]))
44
- post_system_messages .append (Message (role = "tool" , content = get_loaded_apps_tool_call_result ))
38
+ print (f"Post system tool calls:" )
39
+ for tool_call in post_system_tool_calls :
40
+ tool_call_result = tool_callback (agent , tool_call )
41
+ post_system_messages .append (Message (role = "tool" , content = tool_call_result ))
45
42
46
43
agent .run (self .server_url , self .model , post_system_messages , tool_callback )
47
-
44
+ print ("###AGENT RUN COMPLETE###" )
45
+ print (f"###{ agent_index } ###" )
46
+
47
+
48
+ # if all agents are complete, stop
49
+ if all (not agent .running for agent in self .agents ):
50
+ self .running = False
51
+ break
48
52
def stop (self ):
49
53
self .running = False
50
54
@@ -77,32 +81,6 @@ def get_agent_status(self):
77
81
"running" : self .get_running_agent_count (),
78
82
"stopped" : self .get_stopped_agent_count ()
79
83
}
80
-
81
- ############### Agent Interface ###############
82
- def get_toolset_details (self ):
83
- return ToolsetDetails (
84
- toolset_id = "agent_tool" ,
85
- name = "Agent Orchestrator" ,
86
- description = "Orchestrates agents"
87
- )
88
-
89
- def get_tool_schemas (self ):
90
- tool_schemas = [{
91
- "toolset_id" : "agent_tool" ,
92
- "name" : "set_name" ,
93
- "description" : "Set your name" ,
94
- "arguments" : [{
95
- "name" : "name" ,
96
- "type" : "string" ,
97
- "description" : "your new name"
98
- }]
99
- }]
100
- return tool_schemas
101
-
102
- def agent_tool_callback (self , agent : Agent , tool_call : ToolCall ):
103
- if tool_call .name == "set_name" :
104
- agent .name = tool_call .arguments ["name" ]
105
- return f"Name set to { tool_call .arguments ['name' ]} "
106
84
107
85
def main ():
108
86
from tools .forum import Directory
@@ -113,6 +91,7 @@ def main():
113
91
from tools .file_manager import FileManager
114
92
from tools .persona import PersonaManager
115
93
from tools .notes import NotesManager
94
+ from tools .user_directory import UserDirectory
116
95
# delete out files if they exist
117
96
if os .path .exists ("std_out.txt" ):
118
97
os .remove ("std_out.txt" )
@@ -144,14 +123,13 @@ def main():
144
123
notes_managers = {}
145
124
orchestrator = AgentOrchestrator (server_url = "http://localhost:5000" , model = "llama3.1:8b" )
146
125
wiki_search = WikiSearch ()
126
+ user_directory = UserDirectory ()
147
127
def tool_callback (agent : Agent , tool_call : ToolCall ):
148
128
tool_results = None
149
129
print (f" - { tool_call .toolset_id } - Tool call: { tool_call } " )
150
130
try :
151
131
if tool_call .toolset_id == "forum_toolset" :
152
132
tool_results = forum_directory .agent_tool_callback (agent , tool_call )
153
- elif tool_call .toolset_id == "agent_tool" :
154
- tool_results = orchestrator .agent_tool_callback (agent , tool_call )
155
133
elif tool_call .toolset_id == "code_runner" :
156
134
tool_results = shared_code_runner .agent_tool_callback (agent , tool_call )
157
135
elif tool_call .toolset_id == "wiki_toolset" :
@@ -166,6 +144,8 @@ def tool_callback(agent: Agent, tool_call: ToolCall):
166
144
tool_results = persona_managers [agent .id ].agent_tool_callback (agent , tool_call )
167
145
elif tool_call .toolset_id == "notes_manager" :
168
146
tool_results = notes_managers [agent .id ].agent_tool_callback (agent , tool_call )
147
+ elif tool_call .toolset_id == "messages" :
148
+ tool_results = user_directory .agent_tool_callback (agent , tool_call )
169
149
else :
170
150
print (f"APP NOT FOUND - toolset_id: { tool_call .toolset_id } not found" )
171
151
except Exception as e :
@@ -230,19 +210,14 @@ def tool_callback(agent: Agent, tool_call: ToolCall):
230
210
name = "get_current_persona" ,
231
211
arguments = {}
232
212
),
233
- ToolCall (
234
- toolset_id = "notes_manager" ,
235
- name = "get_notes" ,
236
- arguments = {}
237
- ),
238
213
ToolCall (
239
214
toolset_id = "quest_manager" ,
240
215
name = "get_quest_list" ,
241
216
arguments = {}
242
217
),
243
218
ToolCall (
244
- toolset_id = "quest_manager " ,
245
- name = "get_current_quest " ,
219
+ toolset_id = "messages " ,
220
+ name = "get_new_message_count " ,
246
221
arguments = {}
247
222
),
248
223
ToolCall (
@@ -271,24 +246,40 @@ def tool_callback(agent: Agent, tool_call: ToolCall):
271
246
quest_manager = QuestManager ()
272
247
quest_managers [agent .id ] = quest_manager
273
248
249
+ user_directory .add_user (agent )
274
250
275
251
app_manager .add_app (persona_manager .get_toolset_details (), persona_manager .get_tool_schemas ())
276
- app_manager .add_app (orchestrator .get_toolset_details (), orchestrator .get_tool_schemas ())
277
252
app_manager .add_app (shared_code_runner .get_toolset_details (), shared_code_runner .get_tool_schemas ())
278
253
app_manager .add_app (quest_manager .get_toolset_details (), quest_manager .get_tool_schemas ())
279
- app_manager .load_app (quest_manager .get_toolset_details ().toolset_id )
254
+ # app_manager.load_app(quest_manager.get_toolset_details().toolset_id)
280
255
app_manager .add_app (wiki_search .get_toolset_details (), wiki_search .get_tool_schemas ())
281
256
app_manager .add_app (forum_directory .get_toolset_details (), forum_directory .get_tool_schemas ())
282
257
app_manager .add_app (file_manager .get_toolset_details (), file_manager .get_tool_schemas ())
283
258
app_manager .add_app (notes_manager .get_toolset_details (), notes_manager .get_tool_schemas ())
284
259
app_manager .load_app (notes_manager .get_toolset_details ().toolset_id )
260
+ app_manager .add_app (user_directory .get_toolset_details (), user_directory .get_tool_schemas ())
285
261
app_managers [agent .id ] = app_manager
286
262
orchestrator .add_agent (agent )
287
263
264
+ post_system_tool_calls = [
265
+ ToolCall (
266
+ toolset_id = "app_manager" ,
267
+ name = "get_loaded_apps" ,
268
+ arguments = {}
269
+ ),
270
+ ToolCall (
271
+ toolset_id = "quest_manager" ,
272
+ name = "get_current_quest" ,
273
+ arguments = {}
274
+ ),
275
+ ToolCall (
276
+ toolset_id = "notes_manager" ,
277
+ name = "get_notes" ,
278
+ arguments = {}
279
+ )
280
+ ]
288
281
289
-
290
-
291
- orchestrator .run (tool_callback = tool_callback , app_managers = app_managers )
282
+ orchestrator .run (tool_callback = tool_callback , post_system_tool_calls = post_system_tool_calls )
292
283
293
284
if __name__ == "__main__" :
294
285
main ()
0 commit comments