推理模型是一类新型的大型语言模型,它们通过强化学习进行训练,以便在回答问题前进行思考。它们在响应前会产生一个长链的内部思考过程。推理模型的例子包括:

  • OpenAI o1-pro 和 o3-mini
  • Claude 3.7 sonnet 的扩展思考模式
  • Gemini 2.0 闪电思考
  • DeepSeek-R1

推理模型在采取行动前会深入思考并制定计划。关键在于模型在开始生成响应之前做了什么。推理模型非常擅长单次使用的用例。它们非常适合解决不需要多轮对话的难题(编码、数学、物理),或者按顺序调用工具。

示例

o3-mini

o3_mini.py
from agno.agent import Agent
from agno.models.openai import OpenAIChat

agent = Agent(model=OpenAIChat(id="o3-mini"))
agent.print_response(
    "解决电车难题。评估多种伦理框架。包括您的解决方案的 ASCII 图。",
    stream=True,
)

o3-mini 配合工具使用

o3_mini_with_tools.py
from agno.agent import Agent
from agno.models.openai import OpenAIChat
from agno.tools.yfinance import YFinanceTools

agent = Agent(
    model=OpenAIChat(id="o3-mini"),
    tools=[YFinanceTools(stock_price=True, analyst_recommendations=True, company_info=True, company_news=True)],
    instructions="使用表格显示数据。",
    show_tool_calls=True,
    markdown=True,
)
agent.print_response("撰写一份比较 NVDA 和 TSLA 的报告", stream=True)

o3-mini 配合推理

o3_mini_with_reasoning_effort.py
from agno.agent import Agent
from agno.models.openai import OpenAIChat
from agno.tools.yfinance import YFinanceTools

agent = Agent(
    model=OpenAIChat(id="o3-mini", reasoning_effort="high"),
    tools=[YFinanceTools(stock_price=True, analyst_recommendations=True, company_info=True, company_news=True)],
    instructions="使用表格显示数据。",
    show_tool_calls=True,
    markdown=True,
)
agent.print_response("撰写一份比较 NVDA 和 TSLA 的报告", stream=True)

使用 Groq 的 DeepSeek-R1

deepseek_r1_using_groq.py
from agno.agent import Agent
from agno.models.groq import Groq

agent = Agent(
    model=Groq(
        id="deepseek-r1-distill-llama-70b", temperature=0.6, max_tokens=1024, top_p=0.95
    ),
    markdown=True,
)
agent.print_response("9.11 和 9.9 — 哪个更大?", stream=True)

推理模型 + 响应模型

当您运行上面的 DeepSeek-R1 Agent 时,您会注意到响应效果并不理想。这是因为 DeepSeek-R1 擅长解决问题,但不擅长以自然的方式(如 claude sonnet 或 gpt-4.5)进行响应。

如果我们想使用一个推理模型进行推理,但使用另一个模型来生成响应呢?

好消息!Agno 允许您同时使用推理模型和不同的响应模型。通过为推理和响应使用不同的模型,我们可以兼得两者之长。

DeepSeek-R1 + Claude Sonnet

deepseek_plus_claude.py
from agno.agent import Agent
from agno.models.anthropic import Claude
from agno.models.groq import Groq

deepseek_plus_claude = Agent(
    model=Claude(id="claude-3-7-sonnet-20250219"),
    reasoning_model=Groq(
        id="deepseek-r1-distill-llama-70b", temperature=0.6, max_tokens=1024, top_p=0.95
    ),
)
deepseek_plus_claude.print_response("9.11 和 9.9 — 哪个更大?", stream=True)

开发者资源