# MajorityVoting Module Documentation The `MajorityVoting` module provides a mechanism for performing majority voting among a group of agents. Majority voting is a decision rule that selects the option which has the majority of votes. This is particularly useful in systems where multiple agents provide responses to a query, and the most common response needs to be identified as the final output. ### Key Concepts - **Majority Voting**: A method to determine the most common response from a set of answers. - **Agents**: Entities (e.g., models, algorithms) that provide responses to tasks or queries. - **Output Parser**: A function that processes the responses from the agents before performing the majority voting. ## Function Definitions ### Function: `majority_voting` Performs majority voting on a list of answers and returns the most common answer. #### Parameters | Parameter | Type | Description | |-----------|----------|------------------------------| | `answers` | `List[str]` | A list of answers from different agents. | #### Returns | Return Value | Type | Description | |--------------|-------|----------------------------------------| | `answer` | `str` | The most common answer in the list. If the list is empty, returns "I don't know". | ## Class Definitions ### Class: `MajorityVoting` Class representing a majority voting system for agents. #### Parameters | Parameter | Type | Description | |------------------|--------------|-----------------------------------------------------------------------------| | `agents` | `List[Agent]`| A list of agents to be used in the majority voting system. | | `output_parser` | `Callable` | A function used to parse the output of the agents. If not provided, the default `majority_voting` function is used. | | `autosave` | `bool` | A boolean indicating whether to autosave the conversation to a file. Default is `False`. | | `verbose` | `bool` | A boolean indicating whether to enable verbose logging. Default is `False`. | ### Method: `__init__` Initializes the `MajorityVoting` system. #### Parameters | Parameter | Type | Description | |------------------|----------------|-----------------------------------------------------------------------------| | `agents` | `List[Agent]` | A list of agents to be used in the majority voting system. | | `output_parser` | `Callable` | A function used to parse the output of the agents. Default is the `majority_voting` function. | | `autosave` | `bool` | A boolean indicating whether to autosave the conversation to a file. Default is `False`. | | `verbose` | `bool` | A boolean indicating whether to enable verbose logging. Default is `False`. | | `args` | `tuple` | Additional positional arguments. | | `kwargs` | `dict` | Additional keyword arguments. | ### Method: `run` Runs the majority voting system and returns the majority vote. #### Parameters | Parameter | Type | Description | |-----------|------------|------------------------------------------| | `task` | `str` | The task to be performed by the agents. | | `args` | `tuple` | Variable length argument list. | | `kwargs` | `dict` | Arbitrary keyword arguments. | #### Returns | Return Value | Type | Description | |--------------|-----------|--------------------------------------| | `results` | `List[Any]` | The majority vote. | ## Usage Examples ### Example 1: Basic Majority Voting ```python from swarms.structs.agent import Agent from swarms.structs.majority_voting import MajorityVoting # Initialize agents agents = [ Agent( agent_name="Devin", system_prompt=( "Autonomous agent that can interact with humans and other" " agents. Be Helpful and Kind. Use the tools provided to" " assist the user. Return all code in markdown format." ), llm=llm, max_loops="auto", autosave=True, dashboard=False, streaming_on=True, verbose=True, stopping_token="", interactive=True, tools=[terminal, browser, file_editor, create_file], code_interpreter=True, ), Agent( agent_name="Codex", system_prompt=( "An AI coding assistant capable of writing and understanding" " code snippets in various programming languages." ), llm=llm, max_loops="auto", autosave=True, dashboard=False, streaming_on=True, verbose=True, stopping_token="", interactive=True, tools=[terminal, browser, file_editor, create_file], code_interpreter=True, ), Agent( agent_name="Tabnine", system_prompt=( "A code completion AI that provides suggestions for code" " completion and code improvements." ), llm=llm, max_loops="auto", autosave=True, dashboard=False, streaming_on=True, verbose=True, stopping_token="", interactive=True, tools=[terminal, browser, file_editor, create_file], code_interpreter=True, ), ] # Create MajorityVoting instance majority_voting = MajorityVoting(agents) # Run the majority voting system result = majority_voting.run("What is the capital of France?") print(result) # Output: 'Paris' ``` ### Example 2: Running a Task with Detailed Outputs ```python from swarms.structs.agent import Agent from swarms.structs.majority_voting import MajorityVoting # Initialize agents agents = [ Agent( agent_name="Devin", system_prompt=( "Autonomous agent that can interact with humans and other" " agents. Be Helpful and Kind. Use the tools provided to" " assist the user. Return all code in markdown format." ), llm=llm, max_loops="auto", autosave=True, dashboard=False, streaming_on=True, verbose=True, stopping_token="", interactive=True, tools=[terminal, browser, file_editor, create_file], code_interpreter=True, ), Agent( agent_name="Codex", system_prompt=( "An AI coding assistant capable of writing and understanding" " code snippets in various programming languages." ), llm=llm, max_loops="auto", autosave=True, dashboard=False, streaming_on=True, verbose=True, stopping_token="", interactive=True, tools=[terminal, browser, file_editor, create_file], code_interpreter=True, ), Agent( agent_name="Tabnine", system_prompt=( "A code completion AI that provides suggestions for code" " completion and code improvements." ), llm=llm, max_loops="auto", autosave=True, dashboard=False, streaming_on=True, verbose=True, stopping_token="", interactive=True, tools=[terminal, browser, file_editor, create_file], code_interpreter=True, ), ] # Create MajorityVoting instance majority_voting = MajorityVoting(agents) # Run the majority voting system with a different task result = majority_voting.run("Create a new file for a plan to take over the world.") print(result) ```