在提示词工程领域,思维链(Chain of Thought,简称CoT)是一种通过引导大语言模型显式输出中间推理步骤来提升复杂问题解决能力的技巧。传统的一次性提问方式,模型容易在长链条推理中迷失,尤其面对需要多步计算的数学题或嵌套条件的逻辑判断时,直接给答案的准确率很低。CoT的核心思想是:让模型像人一样,把思考过程写出来,每一步都基于前一步的结论,从而降低认知负荷与错误累积。

思维链的底层原理与认知机制
从模型行为角度看,大语言模型本质是在做下一个词元的预测。当问题复杂时,直接预测最终答案对应词元的条件概率会被拉长,中间任何一处语义偏移都会让结果跑偏。CoT通过在提示中插入“让我们一步步思考”或展示若干推理样例,改变了模型生成时的注意力分布,使其先生成中间推理词元,再基于这些已生成的上下文预测答案。这种显式的中间状态相当于给模型提供了临时工作记忆。
认知科学中,人类解决复杂问题也依赖工作记忆与外显步骤。CoT正是模拟了这种分步外化策略。实验表明,在GSM8K数学数据集上,使用少样本CoT的模型准确率比标准提示高出一倍以上。其原理并非模型突然变聪明,而是把单一高难度映射拆成了多个低难度映射,每一步的预测空间更小、更易命中。
需要注意的是,CoT对模型规模有要求。参数过小的模型可能无法稳定遵循推理格式,甚至出现步骤混乱。通常千亿参数级别的模型才能较好利用CoT。此外,CoT并不改变模型的世界知识,只是优化了知识调取与组合的路径,因此对于模型本身不知道的事实,再长的链也推不出正确答案。
零样本与少样本CoT的提示写法
零样本CoT最简单,只需在问题后追加一句引导语,例如“请一步步思考并给出推理过程”。这种方式不需要提供示例,适合快速尝试。下面是一段Python调用示例,展示如何构造零样本CoT提示:
question = "小明有3个苹果,吃掉1个,又买了2倍于剩余数量的橘子,他现在共有几种水果?" prompt = question + "n请一步步思考并给出推理过程,最后写:答案:X。" # 将prompt送入LLM接口 response = llm.generate(prompt, temperature=0.2) print(response)
少样本CoT则是在提示中放入几个完整的问题、推理链与答案作为示范。模型会模仿这种结构。示范质量直接影响效果,推理步骤必须清晰、无跳跃。以下展示一个少样本模板片段:
问题:书店有120本书,第一天卖出三分之一,第二天卖出剩下的四分之一,还剩多少?
推理:第一天卖出120/3=40本,剩80本。第二天卖出80/4=20本,剩60本。
答案:60本
问题:一个笼子有鸡和兔共10只,脚共28只,鸡有几只?
推理:设鸡x只,兔10-x只。脚数2x+4(10-x)=28,得2x+40-4x=28,40-2x=28,2x=12,x=6。
答案:6只
问题:{user_question}
推理:
对比两者,零样本CoT成本低但稳定性稍弱,少样本CoT更可控但占用上下文。实践中可先用零样本验证问题是否适合CoT,再用少样本固化格式。对于逻辑问题,少样本中的示范最好覆盖不同分支情况,避免模型过拟合到某类推导。
数学与逻辑题的CoT实战模板
针对数学应用题,推荐采用“变量定义—分步计算—结果校验”的三段式链。先让模型列出已知量与未知量,再逐步代数化,最后用逆向代入验证。这样即使模型某步算错,也能从链中定位。如下是带校验的提示片段:
问题:水管A单独注满池需6小时,B需4小时,两管同开多久注满? 推理: 1. 定义效率:A效率1/6池每时,B效率1/4池每时。 2. 合效率:1/6+1/4=2/12+3/12=5/12池每时。 3. 时间:1/(5/12)=12/5=2.4小时。 4. 校验:2.4*(1/6+1/4)=2.4*5/12=1,正确。 答案:2.4小时
逻辑问题常含条件嵌套,可用“命题转写—真值表或反证—结论”的链。例如骑士与无赖谜题,让模型把每人陈述转成逻辑式,再假设身份推矛盾。CoT能迫使模型不跳过中间赋值。下面用代码模拟一个简单逻辑链生成:
logic_prompt = """ 甲说:乙是骗子。乙说:甲和我不同类。 已知骑士说真话,骗子说假话。 推理: 假设甲骑士,则乙是骗子(真),乙说“甲和我不同类”为假,因甲骑士乙骗子确实不同类,矛盾。 假设甲骗子,则乙是骗子为假,即乙骑士,乙说“甲和我不同类”为真,甲骗子乙骑士不同类,成立。 答案:甲骗子,乙骑士 """ print(logic_prompt)
在真实业务中,可把CoT与自检提示结合,例如让模型生成链后再写“检查上述步骤是否有计算错误”。这种二次审视能进一步挤掉幻觉。总体而言,CoT不是银弹,但作为提示词工程的基础杠杆,能以极低代价撬动模型推理上限,是处理复杂数学与逻辑问题的首选入门法。
prompt_engineeringchain_of_thoughtLLM_reasoning修改时间:2026-08-17 10:32:27