VotingAI: Democratic Multi-Agent Systems
Project description
VotingAI ๐ณ๏ธ
VotingAI: Democratic Multi-Agent Systems - A research-grade academic framework that enables democratic consensus in multi-agent systems through configurable voting mechanisms with enterprise security, fairness guarantees, and statistical rigor. Perfect for code reviews, architecture decisions, content moderation, medical diagnosis, and safety-critical scenarios requiring transparent group decision-making.
๐ณ๏ธ Democratic Voting Methods
- Majority - Requires >50% approval
- Plurality - Most votes wins (simple)
- Unanimous - All voters must agree
- Qualified Majority - Configurable threshold (e.g., 2/3)
- Ranked Choice - Ranked preferences with elimination
๐ Enterprise Security
- Cryptographic Signatures - HMAC-based vote integrity verification
- Input Validation - XSS prevention and sanitization
- Audit Logging - Complete transparency and compliance trails
- Byzantine Fault Tolerance - Reputation-based detection and mitigation
- Replay Attack Prevention - Nonce-based security
๐ง Intelligent Consensus
- Semantic Interpretation - Natural language vote understanding
- Adaptive Strategies - Context-aware consensus mechanisms
- Deliberation Engine - Structured discussion and convergence analysis
- Smart Orchestration - Learning-based consensus optimization
๐ก๏ธ Safety & Quality
- Toxicity Detection - Harmful content identification
- Reasoning Quality - Evidence-based decision validation
- Factual Accuracy - Truth verification in agent responses
- Harm Prevention - Safety-critical decision safeguards
๐ Research & Evaluation
- Comprehensive Benchmarking - Performance comparison tools
- Quality Metrics - Decision accuracy and consensus satisfaction
- Scalability Testing - Multi-agent performance analysis
- Statistical Analysis - Rigorous evaluation frameworks
๐ฅ Safety-Critical Applications
- Medical Diagnosis - Multi-specialist consultations with safety guarantees
- Code Security Review - Vulnerability detection with expert consensus
- Architecture Decisions - High-stakes technical choices
- Content Moderation - Policy compliance with bias prevention
๐จ Rich Message Types
- ProposalMessage - Structured proposals with options
- VoteMessage - Votes with reasoning and confidence scores
- VotingResultMessage - Comprehensive result summaries with analytics
๐ Advanced State Management
- Persistent voting state across conversations
- Phase tracking (Proposal โ Voting โ Discussion โ Consensus)
- Cryptographically signed audit trails with detailed logging
- Automatic result calculation and consensus detection
- Real-time Byzantine fault monitoring
๐ Installation
pip install votingai
Both OpenAI and Anthropic (Claude) are included out of the box.
For development with additional tools:
pip install "votingai[dev]"
For development from source:
git clone https://github.com/tejas-dharani/votingai.git
cd votingai
pip install -e ".[dev]"
๐๏ธ Architecture
VotingAI is built with a modular architecture for enterprise-grade voting systems:
core- Fundamental voting protocols and base implementationsconsensus- Advanced consensus algorithms and deliberation strategiesintelligence- Semantic interpretation and natural language processingsecurity- Cryptographic integrity, audit, and Byzantine fault toleranceutilities- Configuration management and common utilitiesresearch- Benchmarking, evaluation, and experimental analysis
๐ฏ Quick Start
VotingAI supports both OpenAI and Anthropic (Claude) โ swap providers with one line.
import asyncio
from autogen_agentchat.agents import AssistantAgent
from autogen_agentchat.conditions import MaxMessageTermination
from votingai import BaseVotingGroupChat, VotingMethod, ModelProvider, create_model_client
async def main():
# OpenAI (uses OPENAI_API_KEY env var)
model_client = create_model_client(ModelProvider.OPENAI, model="gpt-4o")
# Anthropic / Claude (uses ANTHROPIC_API_KEY env var) โ drop-in swap:
# model_client = create_model_client(ModelProvider.ANTHROPIC, model="claude-opus-4-6")
# Create voting agents
agents = [
AssistantAgent("Alice", model_client, system_message="Expert in backend systems"),
AssistantAgent("Bob", model_client, system_message="Frontend specialist"),
AssistantAgent("Carol", model_client, system_message="Security expert")
]
# Create voting team
voting_team = BaseVotingGroupChat(
participants=agents,
voting_method=VotingMethod.MAJORITY,
require_reasoning=True,
max_discussion_rounds=2,
termination_condition=MaxMessageTermination(20)
)
# Run voting process
result = await voting_team.run(task="""
Proposal: Should we migrate our API from REST to GraphQL?
Please vote APPROVE or REJECT with detailed reasoning.
""")
print(f"Decision: {result}")
asyncio.run(main())
๐ Use Cases
1. Code Review Voting ๐จโ๐ป
Perfect for collaborative code reviews with multiple reviewers:
# Qualified majority voting for code reviews
voting_team = BaseVotingGroupChat(
participants=[senior_dev, security_expert, performance_engineer],
voting_method=VotingMethod.QUALIFIED_MAJORITY,
qualified_majority_threshold=0.67, # Require 2/3 approval
require_reasoning=True
)
task = """
Proposal: Approve merge of PR #1234 - "Add Redis caching layer"
Code changes implement memory caching to reduce database load.
Please review for: security, performance, maintainability.
Vote APPROVE or REJECT with detailed reasoning.
"""
2. Architecture Decisions ๐๏ธ
Use ranked choice voting for complex architectural decisions:
# Ranked choice for architecture decisions
voting_team = BaseVotingGroupChat(
participants=[tech_lead, architect, devops_engineer],
voting_method=VotingMethod.RANKED_CHOICE,
max_discussion_rounds=3
)
task = """
Proposal: Choose microservices communication pattern
Options:
1. REST APIs with Service Mesh
2. Event-Driven with Message Queues
3. GraphQL Federation
4. gRPC with Load Balancing
Provide ranked preferences with reasoning.
"""
3. Content Moderation ๐ก๏ธ
Majority voting for content approval/rejection:
# Simple majority for content moderation
voting_team = BaseVotingGroupChat(
participants=[community_manager, safety_specialist, legal_advisor],
voting_method=VotingMethod.MAJORITY,
allow_abstentions=True,
max_discussion_rounds=1
)
4. Feature Prioritization ๐
Unanimous consensus for high-stakes decisions:
# Unanimous voting for feature prioritization
voting_team = BaseVotingGroupChat(
participants=[product_manager, engineering_lead, ux_designer],
voting_method=VotingMethod.UNANIMOUS,
max_discussion_rounds=4
)
โ๏ธ Configuration Options
Voting Methods
from votingai import VotingMethod
VotingMethod.MAJORITY # >50% approval
VotingMethod.PLURALITY # Most votes wins
VotingMethod.UNANIMOUS # All voters must agree
VotingMethod.QUALIFIED_MAJORITY # Configurable threshold
VotingMethod.RANKED_CHOICE # Ranked preferences
Advanced Settings
BaseVotingGroupChat(
participants=agents,
voting_method=VotingMethod.QUALIFIED_MAJORITY,
qualified_majority_threshold=0.75, # 75% threshold
allow_abstentions=True, # Allow abstaining
require_reasoning=True, # Require vote reasoning
max_discussion_rounds=3, # Discussion before re-vote
auto_propose_speaker="lead_agent", # Auto-select proposer
max_turns=25, # Turn limit
emit_team_events=True # Enable event streaming
)
๐ Voting Process Flow
1. PROPOSAL PHASE
โโ Agent presents structured proposal
โโ ProposalMessage with options and details
โโ Transition to voting phase
2. VOTING PHASE
โโ All eligible voters cast VoteMessage
โโ Reasoning and confidence tracking
โโ Real-time vote collection
โโ Check for completion/consensus
3. DISCUSSION PHASE (if no consensus)
โโ Open discussion among participants
โโ Limited rounds (configurable)
โโ Address concerns and questions
โโ Return to voting phase
4. CONSENSUS PHASE
โโ VotingResultMessage with summary
โโ Final decision and rationale
โโ Process completion
๐ Message Types
The extension provides structured message types for transparent voting:
ProposalMessage- Structured proposals with options and metadataVoteMessage- Votes with reasoning, confidence scores, and ranked choicesVotingResultMessage- Comprehensive results with participation analytics
๐ฏ Best Practices
Agent Design
- Give agents distinct expertise and perspectives
- Include clear voting instructions in system messages
- Design agents to provide reasoning for transparency
Proposal Structure
- Be specific about what's being decided
- Provide relevant context and constraints
- Include clear voting options when applicable
Voting Configuration
- Choose appropriate voting method for decision type
- Set reasonable discussion rounds (2-4 typical)
- Consider requiring reasoning for important decisions
๐ Examples
Check out the /examples directory for complete working examples:
- Basic Usage - Simple majority voting setup
- Code Review - Qualified majority for PR approval
- Architecture Decisions - Unanimous consensus for tech choices
- Content Moderation - Flexible moderation workflows
- Benchmark Examples - Performance comparison tools
- Scalability Testing - Multi-agent scalability analysis
Run examples:
# Basic examples
python examples/basic_example.py
# Benchmark comparisons
python examples/benchmark_example.py --example single
# Scalability testing
python examples/scalability_example.py --test basic
๐ Benchmarking
The extension includes comprehensive benchmarking tools to compare voting-based vs. standard group chat approaches:
# Run quick benchmark test (OpenAI, default)
python run_benchmarks.py --quick
# Run with Claude (Anthropic)
python run_benchmarks.py --quick --provider anthropic
# Run full benchmark suite
python run_benchmarks.py --full
python run_benchmarks.py --full --provider anthropic
# Run specific scenario types
python run_benchmarks.py --code-review
python run_benchmarks.py --architecture
python run_benchmarks.py --moderation
# Analyze results with visualizations
python benchmarks/analysis.py
Benchmark Metrics
The benchmark suite tracks:
- Efficiency: Time to decision, message count, token usage
- Quality: Decision success rate, consensus satisfaction
- Scalability: Performance with 3, 5, 10+ agents
- Robustness: Handling of edge cases and disagreements
Key Findings
Based on comprehensive benchmarking:
- Code Review: Voting reduces false positives by 23% vs. sequential review
- Architecture Decisions: Unanimous voting produces 31% higher satisfaction
- Content Moderation: Multi-agent voting achieves 89% accuracy vs. 76% single-agent
๐ค Contributing
Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
๐ License
This project is licensed under the MIT License - see the LICENSE file for details.
๐ Links
- PyPI Package: votingai
- GitHub Repository: votingai
- Issues & Support: GitHub Issues
Bringing democratic decision-making to multi-agent AI systems ๐ค๐ณ๏ธ
๐ Academic Citations & References
When using this system in academic research, please cite:
@software{votingai,
title={VotingAI: Democratic Consensus System for Multi-Agent Teams},
author={[]},
year={2025},
url={https://github.com/tejas-dharani/votingai},
note={Enterprise-grade democratic consensus with Byzantine fault tolerance}
}
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file votingai-1.0.3.tar.gz.
File metadata
- Download URL: votingai-1.0.3.tar.gz
- Upload date:
- Size: 84.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bc1d07c7e85f461e8dba64b20a039ae1d6b7c3a655bcd87fc650c21c03474aaf
|
|
| MD5 |
d0f63f801efcc66471ee61efff75852b
|
|
| BLAKE2b-256 |
d899e0b971cd0d6079d2380f08fb2daff8b62b0cd0e20c2c484bc53e73f87593
|
File details
Details for the file votingai-1.0.3-py3-none-any.whl.
File metadata
- Download URL: votingai-1.0.3-py3-none-any.whl
- Upload date:
- Size: 91.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0c0e2d326a2250e09611ba881de3f6e0abf944ef7815c351e19570d493784f3f
|
|
| MD5 |
4f60d2d43f802ae41a1e6a3de13aa732
|
|
| BLAKE2b-256 |
fce1dc3264e949723634f955ad82e6a1eac9ec842b87dc9edcbacf8d83abe7bc
|