# Few-shot CoT 教学演示

用 **课程经典年龄推理题**，对比三种写法，重点展示 **Few-shot CoT**：在提示词里放入「问题 + 完整推理过程」的示例，让模型模仿思维链格式作答。

---

## 先读这个：题目和文档在哪？

| 你想找什么 | 去哪 |
|---|---|
| **主题目**（小明 70 岁） | [`question.py`](question.py) → `MAIN_QUESTION` |
| **Few-shot 示例题**（苹果题、小红弟弟题） | [`examples.py`](examples.py) → `FEW_SHOT_EXAMPLES` |
| **三种模式的提示词** | [`prompts.py`](prompts.py) |
| **完整说明（结构、流程、怎么讲）** | [`docs/项目说明.md`](docs/项目说明.md) |
| **老师讲课话术、板书** | [`docs/课堂讲解指南.md`](docs/课堂讲解指南.md) |

**主题目原文：**

> 当小明 6 岁时，他的妹妹年龄是他的一半。他的哥哥比小明大 4 岁。现在小明 70 岁了，请问他的妹妹和哥哥年龄加起来是多少？  
> 正确答案：**141 岁**

---

## 与 cot_demo 的关系

| 项目 | 题目在哪 | 侧重点 |
|---|---|---|
| [`../cot_demo/`](../cot_demo/) | `questions.py`（3 道数学题） | 无 CoT vs 有 CoT 直觉对比 |
| **本项目** | `question.py` + `examples.py` | **Few-shot CoT 示例怎么设计** |

建议讲课顺序：先 `cot_demo`，再本项目。

---

## 快速开始

```bash
cd 06_代码\Day_02\fewshot_cot_demo
pip install -r requirements.txt
# 配置系统环境变量 DASHSCOPE_API_KEY
python main.py
```

或双击 `run.bat`。

---

## 三种模式（运行后终端会依次打印）

| 模式 | 提示词文件 | 有没有示例 |
|---|---|---|
| A · 无 CoT | `prompts.py` → `SYSTEM_DIRECT` | 无 |
| B · 零样本 CoT | `prompts.py` → `SYSTEM_ZERO_SHOT_COT` | 无 |
| C · 少样本 CoT | `prompts.py` + `examples.py` | 有 1～2 个 |

---

## 项目结构

```
fewshot_cot_demo/
├── question.py       ← 【主题目】
├── examples.py       ← 【Few-shot 示例题】
├── prompts.py        ← 【提示词模板】
├── demo.py           ← 三种模式拼 messages
├── main.py           ← 入口，运行这个
├── llm_client.py     ← 调用百炼 API
├── config.py         ← API Key、模型配置
└── docs/
    ├── 项目说明.md       ← 找题目、懂流程、改实验
    └── 课堂讲解指南.md   ← 老师讲课用
```

---

## 课堂实验

```bash
python main.py --shots 1   # 只用示例 1（苹果题）
python main.py --shots 2   # 用 2 个示例（默认，含年龄差预热题）
```

观察：示例 2（年龄差不变）对答对主题目有没有帮助？

---

## 文档索引

| 文档 | 适合谁 | 内容 |
|---|---|---|
| [`docs/项目说明.md`](docs/项目说明.md) | 老师 + 学生 | 题目位置、文件分工、运行流程、改实验 |
| [`docs/课堂讲解指南.md`](docs/课堂讲解指南.md) | 老师 | CoT 概念、15 分钟讲课路线、FAQ、作业 |
