|
3 weeks ago | |
---|---|---|
.. | ||
README.md | 3 weeks ago | |
__init__.py | 3 weeks ago | |
euroswarm_parliament.py | 3 weeks ago | |
euroswarm_parliament_example.py | 3 weeks ago | |
mass_agent_template.py | 3 weeks ago | |
test_mass_agents.py | 3 weeks ago | |
wikipedia_personality_scraper.py | 3 weeks ago |
README.md
EuroSwarm Parliament - European Parliament Simulation
A comprehensive simulation of the European Parliament with 717 MEPs (Members of European Parliament) based on real EU data, featuring full democratic functionality including bill introduction, committee work, parliamentary debates, and democratic voting mechanisms.
Overview
The EuroSwarm Parliament transforms the basic senator simulation into a full-fledged European Parliament with democratic capabilities. Unlike the original senator simulation that only allowed simple "Aye/Nay" voting, this system provides:
- Democratic Discussion: Full parliamentary debates with diverse perspectives
- Committee Work: Specialized committee hearings and analysis
- Bill Processing: Complete legislative workflow from introduction to final vote
- Political Group Coordination: Realistic political group dynamics
- Real MEP Data: Based on actual EU.xml data with 700 real MEPs
- Board of Directors Pattern: Advanced democratic decision-making using the Board of Directors swarm
Key Features
Democratic Functionality
- Bill Introduction: MEPs can introduce bills with sponsors and co-sponsors
- Committee Hearings: Specialized committee analysis and recommendations
- Parliamentary Debates: Multi-perspective discussions with diverse participants
- Democratic Voting: Comprehensive voting with individual reasoning and political group analysis
- Amendment Process: Support for bill amendments and modifications
Realistic Parliament Structure
- 717 MEPs: Based on real EU.xml data with actual MEP names and affiliations
- Political Groups: All major European political groups represented
- Committee System: 16 specialized committees with chairs and members
- Leadership Positions: President, Vice Presidents, Committee Chairs
- Country Representation: All EU member states represented
Advanced AI Agents
- Individual MEP Agents: Each MEP has a unique AI agent with:
- Political group alignment
- National party affiliation
- Committee memberships
- Areas of expertise
- Country-specific interests
- Democratic Decision-Making: Board of Directors pattern for consensus building
- Contextual Responses: MEPs respond based on their political positions and expertise
Architecture
Core Components
1. ParliamentaryMember
Represents individual MEPs with:
- Personal information (name, country, political group)
- Parliamentary role and committee memberships
- Areas of expertise and voting weight
- AI agent for decision-making
2. ParliamentaryBill
Represents legislative proposals with:
- Title, description, and legislative procedure type
- Committee assignment and sponsorship
- Status tracking and amendment support
3. ParliamentaryCommittee
Represents parliamentary committees with:
- Chair and vice-chair positions
- Member lists and responsibilities
- Current bills under consideration
4. ParliamentaryVote
Represents voting sessions with:
- Individual MEP votes and reasoning
- Political group analysis
- Final results and statistics
Democratic Decision-Making
The system uses the Board of Directors pattern for democratic decision-making:
- Political Group Leaders: Each political group has a representative on the democratic council
- Weighted Voting: Voting weights based on group size
- Consensus Building: Multi-round discussions to reach consensus
- Individual Voting: MEPs vote individually after considering the democratic council's analysis
Political Groups
The simulation includes all major European political groups:
- Group of the European People's Party (Christian Democrats) - EPP
- Group of the Progressive Alliance of Socialists and Democrats - S&D
- Renew Europe Group - RE
- Group of the Greens/European Free Alliance - Greens/EFA
- European Conservatives and Reformists Group - ECR
- The Left group in the European Parliament - GUE/NGL
- Patriots for Europe Group - Patriots
- Europe of Sovereign Nations Group - ESN
- Non-attached Members - NI
Committees
16 specialized committees covering all major policy areas:
- Agriculture and Rural Development
- Budgetary Control
- Civil Liberties, Justice and Home Affairs
- Development
- Economic and Monetary Affairs
- Employment and Social Affairs
- Environment, Public Health and Food Safety
- Foreign Affairs
- Industry, Research and Energy
- Internal Market and Consumer Protection
- International Trade
- Legal Affairs
- Petitions
- Regional Development
- Security and Defence
- Transport and Tourism
Usage
Basic Initialization
from euroswarm_parliament import EuroSwarmParliament, VoteType
# Initialize parliament
parliament = EuroSwarmParliament(
eu_data_file="EU.xml",
parliament_size=None, # Use all MEPs from EU.xml (718)
enable_democratic_discussion=True,
enable_committee_work=True,
enable_amendment_process=True,
verbose=False
)
Bill Introduction and Processing
# Introduce a bill
bill = parliament.introduce_bill(
title="European Climate Law",
description="Framework for achieving climate neutrality by 2050",
bill_type=VoteType.ORDINARY_LEGISLATIVE_PROCEDURE,
committee="Environment, Public Health and Food Safety",
sponsor="Philippe Lamberts"
)
# Conduct committee hearing
hearing = parliament.conduct_committee_hearing(
committee=bill.committee,
bill=bill
)
# Conduct parliamentary debate
debate = parliament.conduct_parliamentary_debate(
bill=bill,
max_speakers=20
)
# Conduct democratic vote
vote = parliament.conduct_democratic_vote(bill)
Complete Democratic Session
# Run a complete parliamentary session
session = parliament.run_democratic_session(
bill_title="Artificial Intelligence Act",
bill_description="Comprehensive regulation of AI systems in the EU",
bill_type=VoteType.ORDINARY_LEGISLATIVE_PROCEDURE,
committee="Internal Market and Consumer Protection"
)
print(f"Final Outcome: {session['session_summary']['final_outcome']}")
Individual MEP Interaction
# Get specific MEP
mep = parliament.get_mep("Valérie Hayer")
# Ask for position on policy
response = mep.agent.run("What is your position on digital privacy regulation?")
print(f"{mep.full_name}: {response}")
Political Analysis
# Get parliament composition
composition = parliament.get_parliament_composition()
# Analyze political groups
for group_name, stats in composition['political_groups'].items():
print(f"{group_name}: {stats['count']} MEPs ({stats['percentage']:.1f}%)")
# Get country representation
country_members = parliament.get_country_members("Germany")
print(f"German MEPs: {len(country_members)}")
Democratic Features
1. Democratic Discussion
- Multi-Perspective Debates: MEPs from different political groups and countries
- Expertise-Based Input: MEPs contribute based on their areas of expertise
- Constructive Dialogue: Respectful debate with evidence-based arguments
2. Committee Work
- Specialized Analysis: Committees provide detailed technical analysis
- Expert Recommendations: Committee members offer specialized insights
- Stakeholder Consideration: Multiple perspectives on policy impacts
3. Democratic Voting
- Individual Reasoning: Each MEP provides reasoning for their vote
- Political Group Analysis: Voting patterns by political affiliation
- Transparent Process: Full visibility into decision-making process
4. Consensus Building
- Board of Directors Pattern: Advanced democratic decision-making
- Weighted Representation: Political groups weighted by size
- Multi-Round Discussion: Iterative process to reach consensus
🔧 Configuration
Parliament Settings
parliament = EuroSwarmParliament(
eu_data_file="EU.xml", # Path to EU data file
parliament_size=None, # Use all MEPs from EU.xml (717)
enable_democratic_discussion=True, # Enable democratic features
enable_committee_work=True, # Enable committee system
enable_amendment_process=True, # Enable bill amendments
verbose=False # Enable detailed logging
)
MEP Agent Configuration
Each MEP agent is configured with:
- System Prompt: Comprehensive political background and principles
- Model: GPT-4o-mini for consistent responses
- Max Loops: 3 iterations for thorough analysis
- Expertise Areas: Based on political group and country
📊 Data Sources
EU.xml File
The simulation uses real EU data from the EU.xml file containing:
- MEP Names: Full names of all 700 MEPs
- Countries: Country representation
- Political Groups: European political group affiliations
- National Parties: National political party memberships
- MEP IDs: Unique identifiers for each MEP
Fallback System
If EU.xml cannot be loaded, the system creates representative fallback MEPs:
- Sample MEPs: Representative selection from major political groups
- Realistic Data: Based on actual European Parliament composition
- Full Functionality: All democratic features remain available
🎮 Example Scenarios
Scenario 1: Climate Policy Debate
# Climate change legislation with diverse perspectives
session = parliament.run_democratic_session(
bill_title="European Climate Law",
bill_description="Carbon neutrality framework for 2050",
committee="Environment, Public Health and Food Safety"
)
Scenario 2: Digital Regulation
# Digital services regulation with technical analysis
session = parliament.run_democratic_session(
bill_title="Digital Services Act",
bill_description="Online platform regulation",
committee="Internal Market and Consumer Protection"
)
Scenario 3: Social Policy
# Minimum wage directive with social considerations
session = parliament.run_democratic_session(
bill_title="European Minimum Wage Directive",
bill_description="Framework for adequate minimum wages",
committee="Employment and Social Affairs"
)
🔮 Future Enhancements
Planned Optimizations
- Performance Optimization: Parallel processing for large-scale voting
- Advanced NLP: Better analysis of debate transcripts and reasoning
- Real-time Updates: Dynamic parliament composition updates
- Historical Analysis: Track voting patterns and political evolution
- External Integration: Connect with real EU data sources
Potential Features
- Amendment System: Full amendment proposal and voting
- Lobbying Simulation: Interest group influence on MEPs
- Media Integration: Public opinion and media coverage
- International Relations: Interaction with other EU institutions
- Budget Simulation: Financial impact analysis of legislation
📝 Requirements
Dependencies
swarms
: Core swarm frameworkloguru
: Advanced loggingxml.etree.ElementTree
: XML parsing for EU datadataclasses
: Data structure supporttyping
: Type hintsdatetime
: Date and time handling
Data Files
EU.xml
: European Parliament member data (included)
🏃♂️ Quick Start
-
Install Dependencies:
pip install swarms loguru
-
Run Example:
python euroswarm_parliament_example.py
-
Create Custom Session:
from euroswarm_parliament import EuroSwarmParliament, VoteType parliament = EuroSwarmParliament() session = parliament.run_democratic_session( bill_title="Your Bill Title", bill_description="Your bill description", committee="Relevant Committee" )
🤝 Contributing
The EuroSwarm Parliament is designed to be extensible and customizable. Contributions are welcome for:
- New Democratic Features: Additional parliamentary procedures
- Performance Optimizations: Faster processing for large parliaments
- Data Integration: Additional EU data sources
- Analysis Tools: Advanced political analysis features
- Documentation: Improved documentation and examples
📄 License
This project is part of the Swarms Democracy framework and follows the same licensing terms.
🏛️ Acknowledgments
- European Parliament: For the democratic structure and procedures
- EU Data: For providing comprehensive MEP information
- Swarms Framework: For the underlying multi-agent architecture
- Board of Directors Pattern: For advanced democratic decision-making
The EuroSwarm Parliament represents a significant advancement in democratic simulation, providing a realistic and comprehensive model of European parliamentary democracy with full AI-powered MEP representation and democratic decision-making processes.