SwarmRouter Examples
The SwarmRouter is a flexible routing system designed to manage different types of swarms for task execution. It provides a unified interface to interact with various swarm types, including AgentRearrange
, MixtureOfAgents
, SpreadSheetSwarm
, SequentialWorkflow
, and ConcurrentWorkflow
.
Prerequisites
- Python 3.7+
- OpenAI API key or other supported LLM provider keys
- Swarms library
Installation
Environment Variables
WORKSPACE_DIR="agent_workspace"
OPENAI_API_KEY=""
ANTHROPIC_API_KEY=""
GROQ_API_KEY=""
Basic Usage
1. Initialize Specialized Agents
from swarms import Agent
from swarms.structs.swarm_router import SwarmRouter, SwarmType
# Initialize specialized agents
data_extractor_agent = Agent(
agent_name="Data-Extractor",
system_prompt="You are a data extraction specialist...",
model_name="gpt-4o",
max_loops=1,
)
summarizer_agent = Agent(
agent_name="Document-Summarizer",
system_prompt="You are a document summarization expert...",
model_name="gpt-4o",
max_loops=1,
)
financial_analyst_agent = Agent(
agent_name="Financial-Analyst",
system_prompt="You are a financial analysis specialist...",
model_name="gpt-4o",
max_loops=1,
)
2. Create SwarmRouter with Sequential Workflow
sequential_router = SwarmRouter(
name="SequentialRouter",
description="Process tasks in sequence",
agents=[data_extractor_agent, summarizer_agent, financial_analyst_agent],
swarm_type=SwarmType.SequentialWorkflow,
max_loops=1
)
# Run a task
result = sequential_router.run("Analyze and summarize the quarterly financial report")
3. Create SwarmRouter with Concurrent Workflow
concurrent_router = SwarmRouter(
name="ConcurrentRouter",
description="Process tasks concurrently",
agents=[data_extractor_agent, summarizer_agent, financial_analyst_agent],
swarm_type=SwarmType.ConcurrentWorkflow,
max_loops=1
)
# Run a task
result = concurrent_router.run("Evaluate multiple aspects of the company simultaneously")
4. Create SwarmRouter with AgentRearrange
rearrange_router = SwarmRouter(
name="RearrangeRouter",
description="Dynamically rearrange agents for optimal task processing",
agents=[data_extractor_agent, summarizer_agent, financial_analyst_agent],
swarm_type=SwarmType.AgentRearrange,
flow=f"{data_extractor_agent.agent_name} -> {summarizer_agent.agent_name} -> {financial_analyst_agent.agent_name}",
max_loops=1
)
# Run a task
result = rearrange_router.run("Process and analyze company documents")
5. Create SwarmRouter with MixtureOfAgents
mixture_router = SwarmRouter(
name="MixtureRouter",
description="Combine multiple expert agents",
agents=[data_extractor_agent, summarizer_agent, financial_analyst_agent],
swarm_type=SwarmType.MixtureOfAgents,
max_loops=1
)
# Run a task
result = mixture_router.run("Provide comprehensive analysis of company performance")
Advanced Features
1. Error Handling and Logging
try:
result = router.run("Complex analysis task")
# Retrieve and print logs
for log in router.get_logs():
print(f"{log.timestamp} - {log.level}: {log.message}")
except Exception as e:
print(f"Error occurred: {str(e)}")
2. Custom Configuration
router = SwarmRouter(
name="CustomRouter",
description="Custom router configuration",
agents=[data_extractor_agent, summarizer_agent, financial_analyst_agent],
swarm_type=SwarmType.SequentialWorkflow,
max_loops=3,
autosave=True,
verbose=True,
output_type="json"
)
Best Practices
Choose the appropriate swarm type based on your task requirements:
Swarm Type |
Use Case |
SequentialWorkflow |
Tasks that need to be processed in order |
ConcurrentWorkflow |
Independent tasks that can be processed simultaneously |
AgentRearrange |
Tasks requiring dynamic agent organization |
MixtureOfAgents |
Complex tasks needing multiple expert perspectives |
Configuration Aspect |
Description |
Agent Names & Descriptions |
Set meaningful and descriptive names that reflect the agent's role and purpose |
System Prompts |
Define clear, specific prompts that outline the agent's responsibilities and constraints |
Model Parameters |
Configure appropriate parameters like temperature, max_tokens, and other model-specific settings |
Implement proper error handling:
Error Handling Practice |
Description |
Try-Except Blocks |
Implement proper exception handling with try-except blocks |
Log Monitoring |
Regularly monitor and analyze system logs for potential issues |
Edge Case Handling |
Implement specific handling for edge cases and unexpected scenarios |
Performance Optimization |
Description |
Concurrent Processing |
Utilize parallel processing capabilities when tasks can be executed simultaneously |
Max Loops Configuration |
Set appropriate iteration limits based on task complexity and requirements |
Resource Management |
Continuously monitor and optimize system resource utilization |
Example Implementation
Here's a complete example showing how to use SwarmRouter in a real-world scenario:
import os
from swarms import Agent
from swarms.structs.swarm_router import SwarmRouter, SwarmType
# Initialize specialized agents
research_agent = Agent(
agent_name="ResearchAgent",
system_prompt="You are a research specialist...",
model_name="gpt-4o",
max_loops=1
)
analysis_agent = Agent(
agent_name="AnalysisAgent",
system_prompt="You are an analysis expert...",
model_name="gpt-4o",
max_loops=1
)
summary_agent = Agent(
agent_name="SummaryAgent",
system_prompt="You are a summarization specialist...",
model_name="gpt-4o",
max_loops=1
)
# Create router with sequential workflow
router = SwarmRouter(
name="ResearchAnalysisRouter",
description="Process research and analysis tasks",
agents=[research_agent, analysis_agent, summary_agent],
swarm_type=SwarmType.SequentialWorkflow,
max_loops=1,
verbose=True
)
# Run complex task
try:
result = router.run(
"Research and analyze the impact of AI on healthcare, "
"providing a comprehensive summary of findings."
)
print("Task Result:", result)
# Print logs
for log in router.get_logs():
print(f"{log.timestamp} - {log.level}: {log.message}")
except Exception as e:
print(f"Error processing task: {str(e)}")
This comprehensive guide demonstrates how to effectively use the SwarmRouter in various scenarios, making it easier to manage and orchestrate multiple agents for complex tasks.