A new class of research is emerging where giving models tools for structured thinking, like a scratchpad, greatly improves their reasoning capabilities. For example, by giving a model reasoning tools, we can greatly improve its reasoning capabilities by providing a dedicated space for working through the problem. This is a simple, yet effective approach to add reasoning to non-reasoning models. First published by Anthropic in this blog post, this technique has been practiced by many AI Engineers (including our own team) long before it was published.

Reasoning Tools

The first version of the Reasoning Tools, previously known as Thikning tools, was published by Anthropic in this blog post.
claude_reasoning_tools.py
from agno.agent import Agent
from agno.models.anthropic import Claude
from agno.tools.reasoning import ReasoningTools
from agno.tools.duckduckgo import DuckDuckGoTools

# Setup our Agent with the reasoning tools
reasoning_agent = Agent(
    model=Claude(id="claude-3-7-sonnet-latest"),
    tools=[
        ReasoningTools(add_instructions=True),
        DuckDuckGoTools(),
    ],
    instructions="Use tables where possible",
    markdown=True,
)

# Run the Agent
reasoning_agent.print_response(
    "What are the fastest cars in the market? Only the report, no other text.",
    stream=True,
    show_full_reasoning=True,
    stream_intermediate_steps=True,
)

Knowledge Tools

The Knowledge Tools take the Reasoning Tools one step further by allowing the Agent to search a knowledge base and analyze the results of their actions. KnowledgeTools = think + search + analyze
knowledge_tools.py
import os
from agno.agent import Agent
from agno.embedder.openai import OpenAIEmbedder
from agno.knowledge.knowledge import Knowledge
from agno.models.openai import OpenAIChat
from agno.tools.knowledge import KnowledgeTools
from agno.vectordb.lancedb import LanceDb, SearchType


agno_docs = Knowledge(
    vector_db=LanceDb(
        uri="tmp/lancedb",
        table_name="agno_docs",
        search_type=SearchType.hybrid,
        embedder=OpenAIEmbedder(id="text-embedding-3-small"),
    ),
)


knowledge_tools = KnowledgeTools(
    knowledge=agno_docs,
    think=True,
    search=True,
    analyze=True,
    add_few_shot=True,
)


agent = Agent(
    model=OpenAIChat(id="gpt-5-mini"),
    tools=[knowledge_tools],
    markdown=True,
)


agno_docs.add_content(
    url="https://docs.agno.com/llms-full.txt"
)


agent.print_response("How do I build multi-agent teams with Agno?", stream=True)

Developer Resources