💻 源码
# 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)