Agno : コンセプト : 推論 – 推論ツール

モデルにスクラッチパッドのような構造化された思考のためのツールを提供し、推論能力を大幅に向上させる、新しい種類の研究が出現しています。
例えば、モデルに「考える」ツールを与えることで、問題解決のための専用スペースが提供され、推論能力が大幅に向上します。これは、非推論モデルに推論機能を追加するためのシンプルでありながら効果的なアプローチです。

Agno : ユーザガイド : コンセプト : 推論 – 推論ツール

作成 : クラスキャット・セールスインフォメーション
作成日時 : 08/14/2025
バージョン : Agno 1.7.7

* 本記事は docs.agno.com の以下のページを独自に翻訳した上で、補足説明を加えてまとめ直しています :

* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。

 

 

Agno ユーザガイド : コンセプト : 推論 – 推論ツール

モデルにスクラッチパッドのような構造化された思考のためのツールを提供し、推論能力を大幅に向上させる、新しい種類の研究が出現しています。

例えば、モデルに「考える」ツールを与えることで、問題解決のための専用スペースが提供され、推論能力が大幅に向上します。これは、非推論モデルに推論機能を追加するためのシンプルでありながら効果的なアプローチです。

Anthropic の このブログ記事 で初めて公開されましたが、このテクニックは公開されるずっと前から多くのAIエンジニア(私たちのチームも含む)によって実践されてきました。

 

v0: 思考ツール

思考ツールの最初のバージョンは このブログ記事 で Anthropic により公開されました。

claude_thinking_tools.py

from agno.agent import Agent
from agno.models.anthropic import Claude
from agno.tools.thinking import ThinkingTools
from agno.tools.yfinance import YFinanceTools

reasoning_agent = Agent(
    model=Claude(id="claude-3-7-sonnet-latest"),
    tools=[
        ThinkingTools(add_instructions=True),
        YFinanceTools(
            stock_price=True,
            analyst_recommendations=True,
            company_info=True,
            company_news=True,
        ),
    ],
    instructions="Use tables where possible",
    markdown=True,
)

if __name__ == "__main__":
    reasoning_agent.print_response(
        "Write a report on NVDA. Only the report, no other text.",
        stream=True,
        show_full_reasoning=True,
        stream_intermediate_steps=True,
    )

 

v1: 推論ツール

v0 思考ツールが素晴らしいスタートである一方、思考スペースを提供するだけという制限があります。v1 推論ツールは、エージェントがアクション (i.e. ツール呼び出し) の結果を分析できるようにすることで、もう一歩進め、連続的なツール呼び出しを必要とする問題を解決するエージェントの能力を大幅に向上させます。

ReasoningTools = think + analyze (推論ツール = 思考 + 分析)

claude_reasoning_tools.py

from agno.agent import Agent
from agno.models.anthropic import Claude
from agno.tools.reasoning import ReasoningTools
from agno.tools.yfinance import YFinanceTools

reasoning_agent = Agent(
    model=Claude(id="claude-3-7-sonnet-20250219"),
    tools=[
        ReasoningTools(add_instructions=True),
        YFinanceTools(stock_price=True, analyst_recommendations=True, company_info=True, company_news=True),
    ],
    show_tool_calls=True,
)
reasoning_agent.print_response(
    "Write a report comparing NVDA to TSLA", stream=True, markdown=True
)

 

v2: 知識ツール

知識ツールは、エージェントが知識ベースを検索してアクションの結果を分析できるようににすることで、v1 推論ツールをさらに一歩進めています。

KnowledgeTools = think + search + analyze (知識ツール = 考える + 検索 + 分析)

knowledge_tools.py

import os
from agno.agent import Agent
from agno.embedder.openai import OpenAIEmbedder
from agno.knowledge.url import UrlKnowledge
from agno.models.openai import OpenAIChat
from agno.tools.knowledge import KnowledgeTools
from agno.vectordb.lancedb import LanceDb, SearchType


agno_docs = UrlKnowledge(
    urls=["https://docs.agno.com/llms-full.txt"],

    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-4o"),
    tools=[knowledge_tools],
    show_tool_calls=True, 
    markdown=True, 
)


agno_docs.load(recreate=True)


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

 

以上