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.
swarms/docs/examples/debate_quickstart.md

234 lines
6.1 KiB

# DebateWithJudge: 3-Step Quickstart Guide
The DebateWithJudge architecture enables structured debates between two agents (Pro and Con) with a Judge providing refined synthesis over multiple rounds. This creates progressively improved answers through iterative argumentation and evaluation.
## Overview
| Feature | Description |
|---------|-------------|
| **Pro Agent** | Argues in favor of a position with evidence and reasoning |
| **Con Agent** | Presents counter-arguments and identifies weaknesses |
| **Judge Agent** | Evaluates both sides and synthesizes the best elements |
| **Iterative Refinement** | Multiple rounds progressively improve the final answer |
```
Agent A (Pro) ↔ Agent B (Con)
│ │
▼ ▼
Judge / Critic Agent
Winner or synthesis → refined answer
```
---
## Step 1: Install and Import
Ensure you have Swarms installed and import the DebateWithJudge class:
```bash
pip install swarms
```
```python
from swarms import DebateWithJudge
```
---
## Step 2: Create the Debate System
Create a DebateWithJudge system using preset agents (the simplest approach):
```python
# Create debate system with preset optimized agents
debate = DebateWithJudge(
preset_agents=True, # Use built-in optimized agents
max_loops=3, # 3 rounds of debate
model_name="gpt-4o-mini",
verbose=True
)
```
---
## Step 3: Run the Debate
Execute the debate on a topic:
```python
# Define the debate topic
topic = "Should artificial intelligence be regulated by governments?"
# Run the debate
result = debate.run(task=topic)
# Print the refined answer
print(result)
# Or get just the final synthesis
final_answer = debate.get_final_answer()
print(final_answer)
```
---
## Complete Example
Here's a complete working example:
```python
from swarms import DebateWithJudge
# Step 1: Create the debate system with preset agents
debate_system = DebateWithJudge(
preset_agents=True,
max_loops=3,
model_name="gpt-4o-mini",
output_type="str-all-except-first",
verbose=True,
)
# Step 2: Define a complex topic
topic = (
"Should artificial intelligence be regulated by governments? "
"Discuss the balance between innovation and safety."
)
# Step 3: Run the debate and get refined answer
result = debate_system.run(task=topic)
print("=" * 60)
print("DEBATE RESULT:")
print("=" * 60)
print(result)
# Access conversation history for detailed analysis
history = debate_system.get_conversation_history()
print(f"\nTotal exchanges: {len(history)}")
```
---
## Custom Agents Example
Create specialized agents for domain-specific debates:
```python
from swarms import Agent, DebateWithJudge
# Create specialized Pro agent
pro_agent = Agent(
agent_name="Innovation-Advocate",
system_prompt=(
"You are a technology policy expert arguing for innovation and minimal regulation. "
"You present arguments focusing on economic growth, technological competitiveness, "
"and the risks of over-regulation stifling progress."
),
model_name="gpt-4o-mini",
max_loops=1,
)
# Create specialized Con agent
con_agent = Agent(
agent_name="Safety-Advocate",
system_prompt=(
"You are a technology policy expert arguing for strong AI safety regulations. "
"You present arguments focusing on public safety, ethical considerations, "
"and the need for government oversight of powerful technologies."
),
model_name="gpt-4o-mini",
max_loops=1,
)
# Create specialized Judge agent
judge_agent = Agent(
agent_name="Policy-Analyst",
system_prompt=(
"You are an impartial policy analyst evaluating technology regulation debates. "
"You synthesize the strongest arguments from both sides and provide "
"balanced, actionable policy recommendations."
),
model_name="gpt-4o-mini",
max_loops=1,
)
# Create debate system with custom agents
debate = DebateWithJudge(
agents=[pro_agent, con_agent, judge_agent], # Pass as list
max_loops=3,
verbose=True,
)
result = debate.run("Should AI-generated content require mandatory disclosure labels?")
```
---
## Batch Processing
Process multiple debate topics:
```python
from swarms import DebateWithJudge
debate = DebateWithJudge(preset_agents=True, max_loops=2)
# Multiple topics to debate
topics = [
"Should remote work become the standard for knowledge workers?",
"Is cryptocurrency a viable alternative to traditional banking?",
"Should social media platforms be held accountable for content moderation?",
]
# Process all topics
results = debate.batched_run(topics)
for topic, result in zip(topics, results):
print(f"\nTopic: {topic}")
print(f"Result: {result[:200]}...")
```
---
## Configuration Options
| Parameter | Default | Description |
|-----------|---------|-------------|
| `preset_agents` | `False` | Use built-in optimized agents |
| `max_loops` | `3` | Number of debate rounds |
| `model_name` | `"gpt-4o-mini"` | Model for preset agents |
| `output_type` | `"str-all-except-first"` | Output format |
| `verbose` | `True` | Enable detailed logging |
### Output Types
| Value | Description |
|-------|-------------|
| `"str-all-except-first"` | Formatted string, excluding initialization (default) |
| `"str"` | All messages as formatted string |
| `"dict"` | Messages as dictionary |
| `"list"` | Messages as list |
---
## Use Cases
| Domain | Example Topic |
|--------|---------------|
| **Policy** | "Should universal basic income be implemented?" |
| **Technology** | "Microservices vs. monolithic architecture for startups?" |
| **Business** | "Should companies prioritize growth or profitability?" |
| **Ethics** | "Is it ethical to use AI in hiring decisions?" |
| **Science** | "Should gene editing be allowed for non-medical purposes?" |
---
## Next Steps
- Explore [DebateWithJudge Reference](../swarms/structs/debate_with_judge.md) for complete API details
- See [Debate Examples](https://github.com/kyegomez/swarms/tree/master/examples/multi_agent/debate_examples) for more use cases
- Learn about [Orchestration Methods](../swarms/structs/orchestration_methods.md) for other debate architectures