Skip to content

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:

  1. Reasoning Stage: The reasoning agent analyzes the task and develops a structured approach
  2. Execution Stage: The main agent uses the reasoning output to generate the final response

Internal Architecture

Task Input → Reasoning Agent → Structured Analysis → Main Agent → Final Output

Best Practices

  1. Task Formulation
  2. Be specific and clear in task descriptions
  3. Include relevant context and constraints
  4. Break complex problems into smaller subtasks

  5. Performance Optimization

  6. Use batched_run for multiple related tasks
  7. Monitor agent outputs for consistency
  8. 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