Spaces:
Running
Running
# 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="<DONE>", | |
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="<DONE>", | |
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="<DONE>", | |
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="<DONE>", | |
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="<DONE>", | |
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="<DONE>", | |
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) | |
``` |