Skip to main content
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

FeatureDescription
Pro AgentArgues in favor of a position with evidence and reasoning
Con AgentPresents counter-arguments and identifies weaknesses
Judge AgentEvaluates both sides and synthesizes the best elements
Iterative RefinementMultiple 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:
pip install swarms
from swarms import DebateWithJudge

Step 2: Create the Debate System

Create a DebateWithJudge system using preset agents (the simplest approach):
# 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-5.4",
    verbose=True
)

Step 3: Run the Debate

Execute the debate on a topic:
# 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:
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-5.4",
    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:
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-5.4",
    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-5.4",
    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-5.4",
    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:
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

ParameterDefaultDescription
preset_agentsFalseUse built-in optimized agents
max_loops3Number of debate rounds
model_name"gpt-5.4"Model for preset agents
output_type"str-all-except-first"Output format
verboseTrueEnable detailed logging

Output Types

ValueDescription
"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

DomainExample 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