Introduction
The supervisor agent pattern helps manage multiple AI agents by overseeing their tasks and making sure they work well together.
Jump into concepts and practice - no test required
class SupervisorAgent: def __init__(self, agents): self.agents = agents def supervise(self, task): results = [agent.perform(task) for agent in self.agents] final_result = self.evaluate(results) return final_result def evaluate(self, results): # Combine or select best result pass
class Agent: def perform(self, task): return f"Result from {task}"
class SupervisorAgent: def __init__(self, agents): self.agents = agents def supervise(self, task): results = [agent.perform(task) for agent in self.agents] return max(results) # picks the lexicographically largest result
class Agent: def __init__(self, name): self.name = name def perform(self, task): return f"{self.name} completed {task}" class SupervisorAgent: def __init__(self, agents): self.agents = agents def supervise(self, task): results = [agent.perform(task) for agent in self.agents] print("Agent results:") for r in results: print(r) final = self.evaluate(results) return final def evaluate(self, results): # For demo, pick the longest result string return max(results, key=len) # Create agents agent1 = Agent("AgentA") agent2 = Agent("AgentB") # Create supervisor supervisor = SupervisorAgent([agent1, agent2]) # Run supervision final_output = supervisor.supervise("task1") print("Final chosen result:", final_output)
Supervisor agent in the supervisor agent pattern?collect_results fits.class Agent:
def __init__(self, name, score):
self.name = name
self.score = score
class Supervisor:
def __init__(self, agents):
self.agents = agents
def best_agent(self):
return max(self.agents, key=lambda a: a.score).name
agents = [Agent('A1', 85), Agent('A2', 90), Agent('A3', 88)]
supervisor = Supervisor(agents)
print(supervisor.best_agent())best_agent method returns the name of the agent with the max score, which is A2 with 90.class Supervisor:
def __init__(self, agents):
self.agents = agents
def best_score(self):
return max(self.agents, key=lambda a: a.score)
agents = [{'name': 'A1', 'score': 80}, {'name': 'A2', 'score': 95}]
supervisor = Supervisor(agents)
print(supervisor.best_score())best_score method expects agents with attribute score, but agents are dictionaries, not objects.a.score on a dictionary causes an error; dictionaries need a['score'].