ReasoningAgentRouter¶
Overview
The ReasoningAgentRouter is a sophisticated agent routing system that enables dynamic selection and execution of different reasoning strategies based on the task requirements. It provides a flexible interface to work with multiple reasoning approaches including Reasoning Duo, Self-Consistency, IRE (Iterative Reflective Expansion), Reflexion, GKP (Generated Knowledge Prompting), and Agent Judge.
Architecture¶
graph TD
    Task[Task Input] --> Router[ReasoningAgentRouter]
    Router --> SelectSwarm{Select Swarm Type}
    SelectSwarm -->|Reasoning Duo| RD[ReasoningDuo]
    SelectSwarm -->|Self Consistency| SC[SelfConsistencyAgent]
    SelectSwarm -->|IRE| IRE[IterativeReflectiveExpansion]
    SelectSwarm -->|Reflexion| RF[ReflexionAgent]
    SelectSwarm -->|GKP| GKP[GKPAgent]
    SelectSwarm -->|Agent Judge| AJ[AgentJudge]
    RD --> Output[Task Output]
    SC --> Output
    IRE --> Output
    RF --> Output
    GKP --> Output
    AJ --> Output
Configuration¶
Arguments¶
Constructor Parameters
| Argument | Type | Default | Description | 
|---|---|---|---|
agent_name | 
str | "reasoning_agent" | Name identifier for the agent | 
description | 
str | "A reasoning agent..." | Description of the agent's capabilities | 
model_name | 
str | "gpt-4o-mini" | The underlying language model to use | 
system_prompt | 
str | "You are a helpful..." | System prompt for the agent | 
max_loops | 
int | 1 | Maximum number of reasoning loops | 
swarm_type | 
agent_types | "reasoning_duo" | Type of reasoning swarm to use | 
num_samples | 
int | 1 | Number of samples for self-consistency | 
output_type | 
OutputType | "dict-all-except-first" | Format of the output | 
num_knowledge_items | 
int | 6 | Number of knowledge items for GKP agent | 
memory_capacity | 
int | 6 | Memory capacity for agents that support it | 
eval | 
bool | False | Enable evaluation mode for self-consistency | 
random_models_on | 
bool | False | Enable random model selection for diversity | 
majority_voting_prompt | 
Optional[str] | None | Custom prompt for majority voting | 
reasoning_model_name | 
Optional[str] | "claude-3-5-sonnet-20240620" | Model to use for reasoning in ReasoningDuo | 
Available Agent Types¶
Supported Types
The following agent types are supported through the swarm_type parameter:
"reasoning-duo"or"reasoning-agent""self-consistency"or"consistency-agent""ire"or"ire-agent""ReflexionAgent""GKPAgent""AgentJudge"
Agent Types Comparison¶
Key Features
- Dual agent system
 - Collaborative reasoning
 - Split between reasoning and execution
 
Best Use Cases
- Complex tasks requiring both analysis and action
 - Multi-step problem solving
 - Tasks needing verification
 
Required Parameters
- model_name
 - system_prompt
 
Optional Parameters
- output_type
 - reasoning_model_name (default: "claude-3-5-sonnet-20240620")
 - max_loops
 - img (for image input support)
 
Key Features
- Multiple solution generation
 - Consensus building
 - Solution verification
 - Concurrent execution
 - AI-powered aggregation
 
Best Use Cases
- Tasks requiring high reliability
 - Problems with multiple approaches
 - Validation-heavy tasks
 - Mathematical problem solving
 - Decision making scenarios
 
Required Parameters
- model_name
 - system_prompt
 
Optional Parameters
- num_samples (default: 5)
 - max_loops (default: 1)
 - output_type (default: "dict")
 - eval (default: False) - Enable answer validation
 - random_models_on (default: False) - Enable model diversity
 - majority_voting_prompt (default: None) - Custom aggregation prompt
 
Key Features
- Iterative improvement
 - Self-reflection
 - Progressive refinement
 
Best Use Cases
- Complex reasoning tasks
 - Problems requiring refinement
 - Learning from previous iterations
 
Required Parameters
- model_name
 - system_prompt
 
Optional Parameters
- max_loops
 - max_iterations
 - output_type
 
Key Features
- Self-reflection capabilities
 - Learning from experience
 - Adaptive reasoning
 
Best Use Cases
- Tasks requiring introspection
 - Continuous improvement scenarios
 - Learning-based tasks
 
Required Parameters
- model_name
 - system_prompt
 
Optional Parameters
- max_loops
 
Key Features
- Knowledge generation
 - Information synthesis
 - Knowledge base management
 
Best Use Cases
- Knowledge-intensive tasks
 - Information gathering
 - Research-based problems
 
Required Parameters
- model_name
 - num_knowledge_items
 
Optional Parameters
- memory_capacity
 
Key Features
- Solution evaluation
 - Quality assessment
 - Decision making
 
Best Use Cases
- Quality control tasks
 - Solution validation
 - Performance evaluation
 
Required Parameters
- model_name
 - system_prompt
 
Optional Parameters
- max_loops
 
Usage¶
Methods¶
Available Methods
| Method | Description | 
|---|---|
select_swarm() | 
Selects and initializes the appropriate reasoning swarm based on specified type | 
run(task: str, img: Optional[str] = None, **kwargs) | 
Executes the selected swarm's reasoning process on the given task | 
batched_run(tasks: List[str], imgs: Optional[List[str]] = None, **kwargs) | 
Executes the reasoning process on a batch of tasks | 
Image Support¶
Multi-modal Capabilities
The ReasoningAgentRouter supports image inputs for compatible agent types:
Supported Parameters:
img(str, optional): Path or URL to a single image file for single task executionimgs(List[str], optional): List of image paths/URLs for batch task execution
Compatible Agent Types:
reasoning-duo/reasoning-agent: Full image support for both reasoning and execution phases- Other agent types may have varying levels of image support depending on their underlying implementation
 
Usage Example:
# Single image with task
router = ReasoningAgentRouter(swarm_type="reasoning-duo")
result = router.run(
    task="Describe what you see in this image",
    img="path/to/image.jpg"
)
# Batch processing with images
results = router.batched_run(
    tasks=["Analyze this chart", "Describe this photo"],
    imgs=["chart.png", "photo.jpg"]
)
Code Examples¶
from swarms.agents.reasoning_agents import ReasoningAgentRouter
# Initialize the router
router = ReasoningAgentRouter(
    agent_name="reasoning-agent",
    description="A reasoning agent that can answer questions and help with tasks.",
    model_name="gpt-4o-mini",
    system_prompt="You are a helpful assistant that can answer questions and help with tasks.",
    max_loops=1,
    swarm_type="self-consistency",
    num_samples=3,
    eval=False,
    random_models_on=False,
    majority_voting_prompt=None
)
# Run a single task
result = router.run("What is the best approach to solve this problem?")
# Run with image input
result_with_image = router.run(
    "Analyze this image and provide insights",
    img="path/to/image.jpg"
)
# Basic self-consistency
router = ReasoningAgentRouter(
    swarm_type="self-consistency",
    num_samples=3,
    model_name="gpt-4o-mini"
)
# Self-consistency with evaluation mode
router = ReasoningAgentRouter(
    swarm_type="self-consistency",
    num_samples=5,
    model_name="gpt-4o-mini",
    eval=True,
    random_models_on=True
)
# Self-consistency with custom majority voting
router = ReasoningAgentRouter(
    swarm_type="self-consistency",
    num_samples=3,
    model_name="gpt-4o-mini",
    majority_voting_prompt="Analyze the responses and provide the most accurate answer."
)
# Basic ReasoningDuo
router = ReasoningAgentRouter(
    swarm_type="reasoning-duo",
    model_name="gpt-4o-mini",
    reasoning_model_name="claude-3-5-sonnet-20240620"
)
# ReasoningDuo with image support
router = ReasoningAgentRouter(
    swarm_type="reasoning-duo",
    model_name="gpt-4o-mini",
    reasoning_model_name="gpt-4-vision-preview",
    max_loops=2
)
result = router.run(
    "Analyze this image and explain the patterns you see",
    img="data_visualization.png"
)
Best Practices¶
Optimization Tips
- 
- Use ReasoningDuo for tasks requiring both analysis and action
 
Swarm Type Selection
- 
Use SelfConsistency for tasks requiring high reliability
 - 
Use IRE for complex problem-solving requiring iterative refinement
 
 - 
Performance Optimization
- 
Adjust max_loops based on task complexity
 - 
Increase num_samples for higher reliability (3-7 for most tasks)
 - 
Choose appropriate model_name based on task requirements
 - 
Enable random_models_on for diverse reasoning approaches
 - 
Use eval mode for validation tasks with known answers
 
 - 
 - 
Output Handling
- 
Use appropriate output_type for your needs
 - 
Process batched results appropriately
 - 
Handle errors gracefully
 
 - 
 - 
Self-Consistency Specific
- 
Use 3-5 samples for most tasks, 7+ for critical decisions
 - 
Enable eval mode when you have expected answers for validation
 - 
Customize majority_voting_prompt for domain-specific aggregation
 - 
Consider random_models_on for diverse model perspectives
 
 - 
 - 
Multi-modal and Reasoning Configuration
- 
Use vision-capable models when processing images (e.g., "gpt-4-vision-preview")
 - 
For ReasoningDuo, set different models for reasoning vs execution via reasoning_model_name
 - 
Ensure image paths are accessible and in supported formats (JPG, PNG, etc.)
 - 
Consider using reasoning_model_name with specialized reasoning models for complex tasks
 
 - 
 
Limitations¶
Known Limitations
- 
- Higher num_samples
 
Processing time increases with:
- 
Larger max_loops
 - 
More complex tasks
 
 - 
Model-specific limitations based on:
- 
Token limits
 - 
Model capabilities
 - 
API rate limits
 
 - 
 
Contributing¶
Development Guidelines
When extending the ReasoningAgentRouter:
- Follow the existing swarm interface
 - Add comprehensive tests
 - Update documentation
 - Maintain error handling