ReasoningTools
工具包允许 Agent 在执行过程中的任何时间点像使用其他工具一样使用推理。与在开始时进行一次推理以创建固定计划的传统方法不同,这使得 Agent 在每一步之后都能进行反思,即时调整其思路和更新其操作。
我们发现这种方法显著提高了 Agent 解决复杂问题的能力,否则它将无法处理。通过为 Agent 提供“思考”其操作的空间,它可以更深入地检查自己的响应,质疑其假设,并从不同角度处理问题。
该工具包包含以下工具:
think
:此工具用作 Agent 的记事本,用于推理问题并逐步解决。它有助于将复杂问题分解成更小、可管理的部分,并跟踪推理过程。
analyze
:此工具用于分析推理步骤的结果并确定后续操作。
以下是如何使用 ReasoningTools
工具包的示例:
from agno.agent import Agent
from agno.models.anthropic import Claude
from agno.tools.reasoning import ReasoningTools
from agno.tools.yfinance import YFinanceTools
thinking_agent = Agent(
model=Claude(id="claude-3-7-sonnet-latest"),
tools=[
ReasoningTools(add_instructions=True),
YFinanceTools(
stock_price=True,
analyst_recommendations=True,
company_info=True,
company_news=True,
),
],
instructions="尽可能使用表格",
show_tool_calls=True,
markdown=True,
)
thinking_agent.print_response("撰写一份比较 NVDA 和 TSLA 的报告", stream=True)
该工具包随附默认说明和少量示例,以帮助 Agent 有效地使用该工具。以下是启用它们的方法:
reasoning_agent = Agent(
model=Claude(id="claude-3-7-sonnet-latest"),
tools=[
ReasoningTools(
think=True,
analyze=True,
add_instructions=True,
add_few_shot=True,
),
],
)
ReasoningTools
可与支持函数调用的任何模型提供商一起使用。以下是使用 OpenAIChat
的推理 Agent 的示例:
from textwrap import dedent
from agno.agent import Agent
from agno.models.openai import OpenAIChat
from agno.tools.reasoning import ReasoningTools
reasoning_agent = Agent(
model=OpenAIChat(id="gpt-4o"),
tools=[ReasoningTools(add_instructions=True)],
instructions=dedent("""\
你是一位专业的解决问题助手,拥有强大的分析能力!🧠
你的解题方法:
1. 首先,将复杂问题分解为组成部分
2. 清楚地说明你的假设
3. 制定结构化的推理路径
4. 考虑多种观点
5. 评估证据和反驳论点
6. 得出有充分依据的结论
在解决问题时:
- 使用明确的逐步推理
- 确定关键变量和约束条件
- 探索替代方案
- 突出不确定性领域
- 清晰地解释你的思路过程
- 考虑短期和长期影响
- 明确评估权衡取舍
对于定量问题:
- 展示你的计算过程
- 解释数字的意义
- 在适当的时候考虑置信区间
- 确定源数据的可靠性
对于定性推理:
- 评估不同因素如何相互作用
- 考虑心理和社会动态
- 评估实际约束
- 解决价值考量
\
"""),
add_datetime_to_instructions=True,
stream_intermediate_steps=True,
show_tool_calls=True,
markdown=True,
)
此 Agent 可用于提出需要深思熟虑的问题,例如:
reasoning_agent.print_response(
"一家初创公司拥有 50 万美元的资金,需要在营销或产品开发之间进行选择。他们希望在 12 个月内最大限度地实现增长和用户获取。他们应该考虑哪些因素以及如何分析这个决策?",
stream=True
)
或者,
reasoning_agent.print_response(
"解决这个逻辑谜题:一个人必须带一只狐狸、一只鸡和一袋谷物过河。船只仅够容纳人和一件物品。如果无人看管,狐狸会吃鸡,鸡会吃谷物。人如何才能安全地将所有物品运过去?",
stream=True,
)
Responses are generated using AI and may contain mistakes.