> ## Documentation Index
> Fetch the complete documentation index at: https://ikun.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# 带有推理工具的推理代理

这个示例展示了如何创建一个代理，该代理使用 ReasoningTools 通过分步推理来解决复杂问题。该代理会分解问题、分析中间结果，并构建结构化的推理路径以得出有充分依据的结论。

## 代码

```python cookbook/reasoning/tools/reasoning_tools.py theme={null}


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. 得出有充分依据的结论
        
        解决问题时：
        - 使用明确的分步推理
        - 识别关键变量和约束条件
        - 探索替代方案
        - 突出显示不确定性区域
        - 清晰解释你的思考过程
        - 考虑短期和长期影响
        - 明确评估权衡取舍
        
        对于定量问题：
        - 展示你的计算过程
        - 解释数字的 significance
        - 在适当的时候考虑置信区间
        - 识别源数据的可靠性
        
        对于定性推理：
        - 评估不同因素如何相互作用
        - 考虑心理和社会动态
        - 评估实际约束条件
        - 处理价值考量
        \
    """),
    add_datetime_to_instructions=True,
    stream_intermediate_steps=True,
    show_tool_calls=True,
    markdown=True,
)

# 使用复杂的推理问题进行示例用法
reasoning_agent.print_response(
    "解决这个逻辑谜题：一个人必须带一只狐狸、一只鸡和一袋谷物过河。 "
    "船只仅够容纳人和一件物品。如果无人看管在一起，狐狸会吃掉鸡，鸡会吃掉谷物。男人如何才能安全地将所有东西都运过去？",
    stream=True,
)


```

## 用法

<Steps>
  <Snippet file="create-venv-step.mdx" />

  <Step title="设置你的 API 密钥">
    ```bash theme={null}
    export OPENAI_API_KEY=xxx
    ```
  </Step>

  <Step title="安装库">
    ```bash theme={null}
    pip install -U openai agno
    ```
  </Step>

  <Step title="运行示例">
    <CodeGroup>
      ```bash Mac theme={null}
      python cookbook/reasoning/tools/reasoning_tools.py
      ```

      ```bash Windows theme={null}
      python cookbook/reasoning/tools/reasoning_tools.py
      ```
    </CodeGroup>
  </Step>
</Steps>
