"""
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}"
