# 01 · 什么是 ReAct？

## 学习目标

读完本文，你应该能回答：

1. ReAct 的全称和含义是什么？
2. Thought、Action、Observation、Answer 分别指什么？
3. 为什么「有工具」比「纯靠模型」更可靠？

---

## 1. 一句话定义

**ReAct** = **Re**asoning（推理）+ **Act**ing（行动）。

大模型不再「一次性猜答案」，而是交替进行：

> **思考 → 调用工具 → 观察真实结果 → 再思考 → 给出答案**

---

## 2. 四个关键步骤

| 步骤 | 英文 | 本项目中的含义 |
|------|------|----------------|
| 思考 | Thought | 分析用户问题，判断是否需要外部数据 |
| 行动 | Action | 选择工具并传入参数（Function Calling） |
| 观察 | Observation | 读取工具返回的**真实**结果 |
| 回答 | Answer | 把观察结果整合成自然语言回复 |

```mermaid
flowchart TD
    Q[用户提问] --> T1[Thought 思考]
    T1 -->|需要外部数据| A[Action 调用工具]
    A --> O[Observation 观察结果]
    O --> T2[Thought 再思考]
    T2 --> AN[Answer 最终回答]
    T1 -->|纯知识问题| AN
```

---

## 3. 和普通对话的对比

### 普通模式（无工具）

- 模型只能依靠训练时学到的知识
- **不知道**现在的天气、汇率、准确时间
- 复杂计算容易**心算错误**
- 可能产生**幻觉**（编造看似合理的数据）

### ReAct 模式（有工具）

- 模型先判断「这道题需不需要查外部数据」
- 需要时调用工具，拿到**可验证**的结果
- 最终回答引用工具返回的数字/事实

本项目在页面上**左右并列**展示两种模式，方便课堂对比。

---

## 4. 和 Function Calling 的关系

在本项目中：

- **ReAct** 是教学上描述的「推理 + 行动」**思维模式**
- **Function Calling** 是 DashScope API 提供的**技术能力**（模型返回 `tool_calls`，由程序执行工具）

可以简单理解为：

> ReAct 是「怎么想」，Function Calling 是「怎么调」。

---

## 5. 经典论文（扩展阅读）

ReAct 概念来自学术论文（可选阅读，不影响使用本项目）：

- 论文：[ReAct: Synergizing Reasoning and Acting in Language Models](https://arxiv.org/abs/2210.03629)
- 作者：Yao et al., 2022

---

## 6. 随堂检查

1. ReAct 的两个字母分别代表什么？
2. 查询「深圳现在天气」时，为什么普通模式容易出错？
3. Observation 的数据从哪来？是模型编的吗？

<details>
<summary>参考答案</summary>

1. Reasoning（推理）+ Acting（行动）。
2. 训练数据里没有「此刻」的实时天气，模型只能猜。
3. 来自工具执行结果（如 Open-Meteo API），不是模型编造。

</details>

---

下一篇：[02-工具清单与官方链接.md](./02-工具清单与官方链接.md)
