CoT (Chain-of-Thought)
思维链让模型"想清楚再答"——把推理过程写出来,准确率显著提升。
详解
Chain-of-Thought(思维链,CoT)是让模型在给出最终答案之前,先把中间推理步骤逐一写出来的提示技术。核心洞察是:模型并不是「知道答案就说答案」,而是在生成 token 的过程中边写边想——把推理链显式写出来,等于给后续 token 的生成提供了更多计算空间和上下文锚点,从而减少跳步出错。触发 CoT 的最简单方式是在 Prompt 末尾加「请一步一步思考」(或英文 「Let's think step by step」),模型就会自动展开推理过程。Few-shot CoT 更进一步:在 Prompt 里给出几个「问题 + 推理过程 + 答案」的完整示例,让模型学习你期望的推理风格。研究表明,在数学推理、常识判断、逻辑谜题等需要多步骤的任务上,CoT 能把准确率提升 20–40%;但 CoT 对简单查询(如问天气)没有明显帮助,反而浪费 token。需要注意:CoT 输出的推理过程只是模型生成的文字,并不等于模型「真实的思考」——它有时会给出看起来合理但实际有误的推理链,使用时需结合事实核查。
一个类比
就像数学考试要求「写出解题步骤」。直接写答案容易粗心跳步出错,但把每一步列清楚——「已知条件是什么、代入哪个公式、中间结果是什么」——不仅让老师(用户)看得明白,自己在写的过程中也更不容易算错。CoT 就是强制模型「写解题步骤」,而不是直接跳到答案。
举个例子
# Zero-shot CoT:只需加一句「请一步一步思考」,无需改模型
import anthropic
client = anthropic.Anthropic()
# 不加 CoT:模型可能直接跳到答案,容易出错
no_cot = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=64,
messages=[{"role": "user", "content": "小明有 17 块糖,给了小红一半多 1 块,自己还剩多少块?"}]
)
print("直接回答:", no_cot.content[0].text.strip())
# 加 CoT:模型会展开推理步骤,减少跳步错误
with_cot = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=256,
messages=[{
"role": "user",
"content": "小明有 17 块糖,给了小红一半多 1 块,自己还剩多少块?请一步一步思考。"
}]
)
print("CoT 推理:", with_cot.content[0].text.strip())
# CoT 版本会列出:总数→给出数量→剩余,逻辑更清晰准确PYTHON 示例
相关概念
- → ToT (Tree-of-Thought)· 思维树
- → Self-Consistency· 自洽性投票
- → ReAct· Reasoning + Acting