Reasoning Extract Agents

Chain a reasoning model with a smaller agent to extract concise answers

A reasoning agent breaks problems into steps; a follow-up agent extracts a concise answer from that chain.

python
from praisonaiagents import Agent, Task, AgentTeam, OutputConfig

reasoner = Agent(
    name="Reasoner",
    instructions="Think step by step.",
    llm="deepseek/deepseek-reasoner",
    output=OutputConfig(reasoning_steps=True),
)

extractor = Agent(
    name="Extractor",
    instructions="Answer briefly using the prior reasoning.",
    llm="gpt-4o-mini",
)

team = AgentTeam(
    agents=[reasoner, extractor],
    tasks=[
        Task(description="How many r's in 'Strawberry'?", agent=reasoner),
        Task(description="From the reasoning, how many r's?", agent=extractor),
    ],
)

team.start()

The user asks a hard question; a reasoner thinks step-by-step and an extractor returns a concise answer.

Diagram

Input

Reasoner

Reasoning steps

Extractor

Output

Quick Start

  1. Simple Usage

    Enable reasoning output on a reasoning-capable model:

    python
    from praisonaiagents import Agent, OutputConfig
    
    agent = Agent(
        name="Reasoner",
        instructions="Think step by step before answering.",
        llm="deepseek/deepseek-reasoner",
        output=OutputConfig(reasoning_steps=True),
    )
    
    agent.start("How many r's in 'Strawberry'?")
  2. With Configuration

    Chain two agents — reasoner then extractor:

    python
    from praisonaiagents import Agent, Task, AgentTeam, OutputConfig
    
    reasoner = Agent(
        name="Reasoner",
        llm="deepseek/deepseek-reasoner",
        output=OutputConfig(reasoning_steps=True),
    )
    extractor = Agent(name="Extractor", llm="gpt-4o-mini")
    
    AgentTeam(
        agents=[reasoner, extractor],
        tasks=[
            Task(description="Count r's in 'Strawberry'", agent=reasoner),
            Task(description="Give the final count only", agent=extractor),
        ],
    ).start()

How It Works

Diagram
ExtractorReasonerUserExtractorReasonerUserHard questionThink step by step (reasoning_steps=True)Reasoning chain as contextDistil to a concise answerFinal answer

The reasoner surfaces chain-of-thought via OutputConfig(reasoning_steps=True), sequential tasks pass its output forward, and the extractor returns a short answer.

Use a reasoning model (e.g. deepseek-reasoner, o1-mini) for the first agent and a fast model for extraction.


Configuration Options

OptionTypeDefaultDescription
reasoning_stepsboolFalseOn OutputConfig — surface reasoning content
llmstr"gpt-4o-mini"Model per agent — use reasoning models first
processstr"sequential"Task order on AgentTeam

Best Practices

Use a reasoning model for step one

Models like deepseek-reasoner or o1-mini produce structured chains; general models may skip visible reasoning.

Keep the extractor prompt narrow

Ask the second agent for the final answer only — avoid re-running full reasoning.

Enable reasoning_steps on OutputConfig

Set output=OutputConfig(reasoning_steps=True) — not a standalone agent parameter.

Run tasks sequentially

Use AgentTeam with ordered tasks so the extractor receives the reasoner’s output as context.


Related