You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
217 lines
7.7 KiB
217 lines
7.7 KiB
# 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)
|
|
``` |