"""
Few-shot CoT 示例库(学生改实验主要改这个文件)。
>>> 老师 / 学生找示例题:看本文件 FEW_SHOT_EXAMPLES(下面约第 25 行)
>>> 主题目不在这里,在 question.py 的 MAIN_QUESTION
>>> 更多说明:docs/项目说明.md 第二节「Few-shot 示例题」
每个示例都是一对 (user, assistant):
user → 一道简单推理题
assistant → 带完整思维链的标准回答(模型要模仿这种写法)
好的 Few-shot CoT 示例要满足:
1. 题型和目标题相似(都是多步推理,而不是随便找个分类例子)
2. assistant 里真的写出了「第一步 / 第二步 …」,不是只给答案
3. 示例里要体现关键技巧(如:年龄差不变、先算中间量再汇总)
"""
from dataclasses import dataclass
@dataclass(frozen=True)
class FewShotExample:
title: str
user: str
assistant: str
teaching_point: str
FEW_SHOT_EXAMPLES: list[FewShotExample] = [
FewShotExample(
title="示例 1 · 数量变化(先加后答)",
user="小明有 3 个苹果,又买了 2 个,他现在一共有几个苹果?",
assistant="""第一步:明确已知条件
- 原有苹果:3 个
- 又买了:2 个
第二步:列出关系
总数 = 原有数量 + 新买数量
第三步:计算
3 + 2 = 5
最终答案:5 个苹果""",
teaching_point="示范「先列条件 → 再列关系 → 最后计算」的三段式写法。",
),
FewShotExample(
title="示例 2 · 年龄差不变(课堂易错点预热)",
user=(
"当小红 8 岁时,她的弟弟年龄是她的一半。"
"现在小红 20 岁了,请问弟弟现在几岁?"
),
assistant="""第一步:明确已知条件
- 小红 8 岁时,弟弟是她的一半,即 8 ÷ 2 = 4 岁
- 年龄差 = 8 - 4 = 4 岁(弟弟比小红小 4 岁)
- 年龄差不会随时间改变
第二步:计算弟弟现在的年龄
小红现在 20 岁,弟弟仍比她小 4 岁
20 - 4 = 16 岁
最终答案:16 岁""",
teaching_point=(
"示范「半岁」不是永远一半,要先算年龄差;"
"这是后面主题目最容易跳步的地方。"
),
),
]