2.5 链式思维与逐步推理
人类在回答“23 乘以 14 是多少”时,不会凭空蹦出“322”,而是会在很多张纸上列竖式计算。 同样,让 Claude 直接回答复杂的逻辑问题,它可能会“凭直觉”猜一个答案(然后猜错)。
Chain of Thought (CoT) 是一种让模型“列竖式”的技术。通过强制模型将思考过程显性化,可以极大地提高其在数学、逻辑推理和代码生成任务上的准确率。
2.5.1 为什么模型需要“思考时间”?
大语言模型本质上是 概率预测机。它是逐个 Token 生成的,就像你在打字时输入法联想下一个词一样。 如果没有 CoT,模型必须在生成第一个 Token 时就决定最终答案。这对于简单的知识检索(“中国首都在哪”)没问题,但对于需要多步推理的问题(“我应该怎么设计这个系统架构”),这就像要求在一秒钟内不仅算出结果,还要直接写在试卷上。
CoT 给了模型一个 缓冲区,让它生成更多的 Token 来进行中间计算(Intermediate Computation),从而“推导出”正确答案。
2.5.2 激发 CoT 的两种模式
零样本思维链
这是最简单粗暴的方法。 只需在 Prompt 结尾加一句咒语:
“Let's think step by step.” (让我们一步步思考。)
这句神奇的话能瞬间激活模型的推理模式。
User: “我有3个苹果,吃了2个,又买了5个,分给朋友1个,还剩几个?”
Prompt: "Let's think step by step."
Claude: “1. 初始: 3。 2. 吃了2个: 3-2=1。 3. 买了5个: 1+5=6。 4. 分给朋友1个: 6-1=5。 答案是 5。”
结构化思维链
在企业级应用中,需要更受控的 CoT。不希望用户看到那一长串思考过程,只希望看到最终结果。 这时,可以利用 XML 标签将“思考”和“回答”分开。
System Prompt:
User: “分析一下 A 公司收购 B 公司的风险。”
Claude:
在后端处理时,可以利用正则表达式提取 <answer> 里的内容展示给用户,而将 <thinking> 里的内容作为日志保存,用于后续的 Prompt 调试。
2.5.3 CoT 的进阶技巧
Plan-and-Solve:先计划,后执行
对于特别复杂的任务(如写代码),仅仅“一步步思考”可能还不够,容易走偏。 可以让 Claude 先写 大纲。
Prompt:
Claude:
这种方法显著减少了代码逻辑错误。
Self-Correction:自我修正
让模型在得出结论前,先自己检查一遍。
Prompt:
2.5.4 什么时候不需要 CoT?
CoT 不是免费的。它会消耗更多的 Token,增加延迟。 以下场景 不推荐 使用 CoT:
创意写作:写诗、写故事。(逻辑太严密反而没灵气)
简单问答:“今天几月几号?”(无需推理)
大量简单数据提取:从 1000 份简历提取姓名。(直接提取即可,不用思考)
2.5.5 Claude 的 Adaptive Thinking:自适应思考模式
Claude 4 系列模型的思考能力发展如下:
Claude Opus 4.7:仅支持 Adaptive Thinking(thinking={type: "adaptive"}),由模型根据任务复杂度自动决定思考深度。旧的 Extended Thinking 手动预算模式(thinking={type: "enabled", "budget_tokens": N})已被移除,配置会返回 400 错误。
Claude Sonnet 4.6:同时支持 Adaptive Thinking(推荐使用)和 Extended Thinking 手动模式。
Claude Opus 4.6:支持 Extended Thinking(thinking={type: "enabled", "budget_tokens": N}),不支持 Adaptive Thinking。
Claude Haiku 4.5:支持 Extended Thinking(thinking={type: "enabled"}),但不支持 Adaptive Thinking。
通过 API 参数 thinking={"type": "adaptive"} 启用 Adaptive Thinking 后,模型会根据任务复杂度自动决定是否进行深度思考,从 数秒到数分钟 不等,然后再输出结果。这适用于数学证明、科研难题攻关等极端场景,同时避免了在简单任务上浪费思考时间和 Token。详细的 API 用法和架构影响请参见 8.4 扩展思考。
现在,Claude 已经学会了如何思考。但作为开发者,还需要它不仅想得对,还要 输出得漂亮。如何让它乖乖吐出 JSON 而不是废话?
最后更新于
