from typing import List, Callable from swarms import Worker class MultiAgentDebate: def __init__(self, agents: List[Worker], selection_func: Callable[[int, List[Worker]], int]): self.agents = agents self.selection_func = selection_func def run(self, task: str): results = [] for i in range(len(self.agents)): # Select the speaker based on the selection function speaker_idx = self.selection_func(i, self.agents) speaker = self.agents[speaker_idx] response = speaker.run(task) results.append({ 'agent': speaker.ai_name, 'response': response }) return results # Define a selection function def select_speaker(step: int, agents: List[Worker]) -> int: # This function selects the speaker in a round-robin fashion return step % len(agents) # Initialize agents agents = [ Worker(openai_api_key="", ai_name="Optimus Prime"), Worker(openai_api_key="", ai_name="Bumblebee"), Worker(openai_api_key="", ai_name="Megatron") ] # Initialize multi-agent debate with the selection function debate = MultiAgentDebate(agents, select_speaker) # Run task task = "What were the winning boston marathon times for the past 5 years (ending in 2022)? Generate a table of the year, name, country of origin, and times." results = debate.run(task) # Print results for result in results: print(f"Agent {result['agent']} responded: {result['response']}")