Strawberry Letter Counting

Compare a plain OpenAI agent with an OpenAI agent using a DeepSeek reasoning stage for letter counting.

Demonstrates regular vs reasoning-backed agents for counting tasks.

DeepSeek retired the deepseek-reasoner alias after July 24, 2026. Before running this archived example, replace DeepSeek(id="deepseek-reasoner") with DeepSeek(id="deepseek-v4-flash") in the saved program. The main OpenAI model remains a separate call, so both provider keys are required. See the DeepSeek V4 migration notice.

strawberry.py
"""
Strawberry Letter Counting
==========================

Demonstrates regular vs reasoning-backed agents for counting tasks.
"""

import asyncio

from agno.agent import Agent
from agno.models.deepseek import DeepSeek
from agno.models.openai import OpenAIResponses
from rich.console import Console

# ---------------------------------------------------------------------------
# Create Agents
# ---------------------------------------------------------------------------
console = Console()

task = "How many 'r' are in the word 'strawberry'?"

regular_agent = Agent(model=OpenAIResponses(id="gpt-5.6"), markdown=True)

reasoning_agent = Agent(
    model=OpenAIResponses(id="gpt-5.6"),
    reasoning_model=DeepSeek(id="deepseek-reasoner"),
    markdown=True,
)


async def run_agents() -> None:
    console.rule("[bold blue]Counting 'r' In 'strawberry'[/bold blue]")

    console.rule("[bold green]Regular Agent[/bold green]")
    await regular_agent.aprint_response(task, stream=True)

    console.rule("[bold cyan]Reasoning Agent (DeepSeek)[/bold cyan]")
    await reasoning_agent.aprint_response(task, stream=True, show_full_reasoning=True)


# ---------------------------------------------------------------------------
# Run Agents
# ---------------------------------------------------------------------------
if __name__ == "__main__":
    asyncio.run(run_agents())

An explicit reasoning_model runs as a separate, tool-free reasoning stage before the main model response. show_full_reasoning=True displays the reasoning data Agno receives; it cannot reveal a provider's private internal trace. Some adapters use the reasoning stage's answer text when separate reasoning content is unavailable. A failed reasoning stage can still be followed by a main-model answer, so a completed run alone does not prove the reasoning stage succeeded.

Run the Example

Set up your virtual environment

uv venv --python 3.12
source .venv/bin/activate

Install dependencies

uv pip install -U agno openai

Export your API keys

export DEEPSEEK_API_KEY="your_deepseek_api_key_here"
export OPENAI_API_KEY="your_openai_api_key_here"

Run the example

Save the code above as strawberry.py, then run:

python strawberry.py

Full source: cookbook/10_reasoning/agents/strawberry.py