pull/53/head
Kye 1 year ago
parent 20f0d8b819
commit ffea0d9810

@ -3,11 +3,17 @@ import queue
from time import sleep
from swarms.workers.autobot import AutoBot
from swarms.utils.decorators import error_decorator, log_decorator, timing_decorator
# TODO Handle task assignment and task delegation
# TODO: User task => decomposed into very small sub tasks => sub tasks assigned to workers => workers complete and update the swarm, can ask for help from other agents.
# TODO: Missing, Task Assignment, Task delegation, Task completion, Swarm level communication with vector db
#
class AutoScaler:
@log_decorator
@error_decorator
@timing_decorator
def __init__(self,
initial_agents=10,
scale_up_factor=1,
@ -23,6 +29,9 @@ class AutoScaler:
def add_task(self, task):
self.tasks_queue.put(task)
@log_decorator
@error_decorator
@timing_decorator
def scale_up(self):
with self.lock:
new_agents_counts = len(self.agents_pool) * self.scale_up_factor
@ -34,6 +43,9 @@ class AutoScaler:
if len(self.agents_pool) > 10: #ensure minmum of 10 agents
del self.agents_pool[-1] #remove last agent
@log_decorator
@error_decorator
@timing_decorator
def monitor_and_scale(self):
while True:
sleep(60)#check minute
@ -44,7 +56,10 @@ class AutoScaler:
self.scale_up()
elif active_agents / len(self.agents_pool) < self.idle_threshold:
self.scale_down()
@log_decorator
@error_decorator
@timing_decorator
def start(self):
monitor_thread = threading.Thread(target=self.monitor_and_scale)
monitor_thread.start()
@ -56,8 +71,3 @@ class AutoScaler:
if available_agent:
available_agent.run(task)

@ -93,5 +93,15 @@ class AutoBot:
try:
result = self.agent.run([task])
return result
except Exception as error:
raise RuntimeError(f"Error while running agent: {error}")
@log_decorator
@error_decorator
@timing_decorator
def __call__(self, task):
try:
results = self.agent.run([task])
return results
except Exception as error:
raise RuntimeError(f"Error while running agent: {error}")
Loading…
Cancel
Save