ReasoningDuo¶
The ReasoningDuo class implements a dual-agent reasoning system that combines a reasoning agent and a main agent to provide well-thought-out responses to complex tasks. This architecture enables more robust and reliable outputs by separating the reasoning process from the final response generation.
Class Overview¶
Constructor Parameters¶
Parameter | Type | Default | Description |
---|---|---|---|
model_name | str | "reasoning-agent-01" | Name identifier for the reasoning agent |
description | str | "A highly intelligent..." | Description of the reasoning agent's capabilities |
model_names | list[str] | ["gpt-4o-mini", "gpt-4o"] | Model names for reasoning and main agents |
system_prompt | str | "You are a helpful..." | System prompt for the main agent |
Methods¶
Method | Parameters | Returns | Description |
---|---|---|---|
run | task: str | str | Processes a single task through both agents |
batched_run | tasks: List[str] | List[str] | Processes multiple tasks sequentially |
Quick Start¶
from swarms.agents.reasoning_duo import ReasoningDuo
# Initialize the ReasoningDuo
duo = ReasoningDuo(
model_name="reasoning-agent-01",
model_names=["gpt-4o-mini", "gpt-4o"]
)
# Run a single task
result = duo.run("Explain the concept of gravitational waves")
# Run multiple tasks
tasks = [
"Calculate compound interest for $1000 over 5 years",
"Explain quantum entanglement"
]
results = duo.batched_run(tasks)
Examples¶
1. Mathematical Analysis¶
duo = ReasoningDuo()
# Complex mathematical problem
math_task = """
Solve the following differential equation:
dy/dx + 2y = x^2, y(0) = 1
"""
solution = duo.run(math_task)
2. Physics Problem¶
# Quantum mechanics problem
physics_task = """
Calculate the wavelength of an electron with kinetic energy of 50 eV
using the de Broglie relationship.
"""
result = duo.run(physics_task)
3. Financial Analysis¶
# Complex financial analysis
finance_task = """
Calculate the Net Present Value (NPV) of a project with:
- Initial investment: $100,000
- Annual cash flows: $25,000 for 5 years
- Discount rate: 8%
"""
analysis = duo.run(finance_task)
Advanced Usage¶
Customizing Agent Behavior¶
You can customize both agents by modifying their initialization parameters:
duo = ReasoningDuo(
model_name="custom-reasoning-agent",
description="Specialized financial analysis agent",
model_names=["gpt-4o-mini", "gpt-4o"],
system_prompt="You are a financial expert AI assistant..."
)
Batch Processing with Progress Tracking¶
tasks = [
"Analyze market trends for tech stocks",
"Calculate risk metrics for a portfolio",
"Forecast revenue growth"
]
# Process multiple tasks with logging
results = duo.batched_run(tasks)
Implementation Details¶
The ReasoningDuo uses a two-stage process:
- Reasoning Stage: The reasoning agent analyzes the task and develops a structured approach
- Execution Stage: The main agent uses the reasoning output to generate the final response
Internal Architecture¶
Best Practices¶
- Task Formulation
- Be specific and clear in task descriptions
- Include relevant context and constraints
-
Break complex problems into smaller subtasks
-
Performance Optimization
- Use batched_run for multiple related tasks
- Monitor agent outputs for consistency
- Adjust model parameters based on task complexity
Error Handling¶
The ReasoningDuo includes built-in logging using the loguru
library:
from loguru import logger
# Logs are automatically generated for each task
logger.info("Task processing started")
Limitations¶
- Processing time may vary based on task complexity
- Model response quality depends on input clarity
- Resource usage scales with batch size