"""
CoT 演示用到的提示词模板(学生改实验主要改这个文件)。
三种模式的核心差异:
无 CoT → SYSTEM_DIRECT 要求「只输出一行答案」
零样本 CoT → SYSTEM_ZERO_SHOT_COT + user 里加「请一步一步思考」
少样本 CoT → 多一轮示例 user/assistant,让模型模仿推理格式
"""
# ---------------------------------------------------------------------------
# 1. 无 CoT:只要求直接给最终答案
# ---------------------------------------------------------------------------
SYSTEM_DIRECT = (
"你是一名数学助手,擅长快速心算。"
"你必须严格遵守:只输出一行结论,格式为「最终答案:xxx」。"
"禁止输出任何计算过程、解释、分步说明、对齐小数位等中间内容。"
"禁止输出多行文字,禁止写「第一步」「因为」「所以」。"
)
USER_DIRECT_TEMPLATE = "{question}"
# ---------------------------------------------------------------------------
# 2. 零样本 CoT:不给示例,只要求分步思考
# ---------------------------------------------------------------------------
SYSTEM_ZERO_SHOT_COT = (
"你是一名严谨的数学助手。"
"解决问题时必须先写出完整推理过程,再给出最终答案。"
"请按「第一步 / 第二步 / …」组织推理,最后一行必须以「最终答案:」开头。"
)
USER_ZERO_SHOT_COT_TEMPLATE = (
"{question}\n\n"
"请一步一步思考,并把每一步推理过程写出来。"
)
# ---------------------------------------------------------------------------
# 3. 少样本 CoT:先给一个带推理过程的示例,再让模型模仿
# ---------------------------------------------------------------------------
SYSTEM_FEW_SHOT_COT = (
"你是一名严谨的数学助手。"
"我会先给你一个「示例问题 + 示例推理」,请你模仿示例的推理格式来回答新问题。"
"最后一行必须以「最终答案:」开头。"
)
FEW_SHOT_EXAMPLE_USER = "罗杰有 5 个网球,他又买了 2 罐网球,每罐 3 个。他现在一共有多少个网球?"
FEW_SHOT_EXAMPLE_ASSISTANT = """第一步:明确已知条件
- 原有网球:5 个
- 新买:2 罐,每罐 3 个
第二步:计算新买的数量
2 罐 × 3 个/罐 = 6 个
第三步:求总数
5 + 6 = 11 个
最终答案:11 个网球"""
USER_FEW_SHOT_COT_TEMPLATE = "{question}"