
1. 项目概述从“指令”到“思维”的跨越在和大语言模型打交道的过程中我们最常接触的就是“Prompt”——那个我们输入给模型的指令或问题。很长一段时间里我们都在琢磨如何把Prompt写得更清晰、更具体好让模型能“听懂”并给出正确答案。这就像是在和一个知识渊博但思维跳跃的朋友对话你得把问题掰开了、揉碎了他才能给你一个靠谱的答案。但很多时候尤其是面对数学计算、逻辑推理、多步骤规划这类复杂问题时即便你把问题描述得再清楚模型也可能直接给出一个错误的结果中间没有任何解释。它跳过了人类思考时必不可少的“中间步骤”。“思维链”的出现彻底改变了这个局面。它的核心思想极其简单却又无比强大在向模型提问时我们不仅要求它给出最终答案更要求它把得到这个答案的推理过程一步一步地写出来。这就像我们小时候解数学题要写“解”和步骤分一样。模型在生成这些“思考步骤”的过程中被迫放慢了“思维”速度将隐含的、并行的计算过程显式化、序列化从而极大地提高了在复杂任务上的准确率。我最初接触这个概念时也是将信将疑。直到我在一个经典的数学推理数据集上做了对比测试同一个多步骤的数学应用题使用标准Prompt的模型准确率不到40%而当我简单地在问题末尾加上一句“让我们一步一步地思考”准确率直接飙升到了70%以上。这个提升是颠覆性的它让我意识到我们之前可能低估了模型的能力——它不是不会而是需要我们用正确的方式去“引导”和“激发”。所以这个系列要聊的远不止是Prompt Engineering的一个技巧。它是关于如何与新一代AI进行“深度协作”的方法论。从最基础的“零样本COT”和“少样本COT”到融合了自我提问、自我验证的进阶玩法再到如何将思维链与工具调用、代码执行结合构建更可靠的推理系统。无论你是希望优化日常工作中模型的使用效果还是正在构建需要复杂决策的AI应用理解并掌握思维链都将是你的核心技能之一。2. 思维链基础从零样本到少样本引导思维链并非一个单一的技巧而是一套方法体系。最基础、也最常用的两种范式是“零样本思维链”和“少样本思维链”它们构成了我们与模型进行复杂推理交互的基石。2.1 零样本思维链一句“咒语”的魔力零样本思维链的魅力在于它的简洁和普适性。你不需要提供任何例子只需要在问题的末尾加上一个特定的“触发短语”就能显著提升模型的推理表现。最经典、也最有效的触发短语莫过于“让我们一步一步地思考”。这句话就像是一个开关告诉模型“别急着给答案先把你的思考过程展示给我看。” 其背后的机制在于这句话匹配了模型在大量高质量文本如教科书、解题过程、技术文档中学习到的模式。在这些文本里复杂的推导往往伴随着这样的引导性语句。实操示例与对比假设我们问模型一个逻辑问题标准Prompt: “一个房间里有一个桌子、一个沙发和一盏灯。灯在桌子上方。沙发在桌子旁边。那么灯在沙发的什么方位”模型可能会直接回答“上方”或“旁边”。这个答案模糊且不准确因为它忽略了空间关系的传递性。零样本COT Prompt: “一个房间里有一个桌子、一个沙发和一盏灯。灯在桌子上方。沙发在桌子旁边。那么灯在沙发的什么方位让我们一步一步地思考。”模型的回答通常会变为 “1. 已知灯在桌子上方。 2. 已知沙发在桌子旁边通常指同一水平高度左右或前后。 3. ‘上方’是一个垂直方向的关系‘旁边’是一个水平方向的关系。 4. 因此灯相对于沙发的位置取决于沙发相对于桌子的具体方位。但无论如何灯都在沙发的斜上方某个位置因为它在桌子正上方而沙发与桌子在同一水平面。 5. 所以最准确的描述是灯位于沙发的斜上方。”可以看到通过强制模型展开步骤它厘清了“上方”和“旁边”这两个不同维度的关系并得出了更精确的结论“斜上方”。除了“让我们一步一步地思考”还有其他一些有效的零样本触发词“首先我们…”更中式的引导适合步骤拆解。“要解决这个问题我们需要考虑…”引导模型进行问题分析。“分步骤解答”直接给出指令。注意事项零样本COT的效果与模型规模强相关。在参数量较小的模型上效果可能不稳定甚至有时会“画蛇添足”生成错误的推理步骤导致最终答案更差。因此在关键应用中使用前建议在小批量数据上测试其稳定性。2.2 少样本思维链提供“思考模板”当零样本COT效果不佳或者我们希望引导模型遵循某种特定的推理格式时少样本思维链是更强大的工具。它的核心是在Prompt中提供几个完整的、带有详细推理步骤的示例让模型通过“示例学习”来模仿这种推理风格。少样本COT的构建关键在于示例的选择和设计。示例不仅仅是“问题-答案”对而是“问题-推理链-答案”三元组。构建高质量少样本示例的要点多样性示例应覆盖目标任务中可能出现的不同问题类型和难度。正确性推理链必须逻辑严密步骤清晰最终答案无误。一致性推理链的格式、详细程度、语言风格应尽量保持一致方便模型学习模式。相关性示例的问题领域应与你的实际任务高度相关。实操示例教模型做多步骤算术假设我们的任务是让模型解决包含折扣和税率的购物计算问题。少样本COT Prompt 示例示例1 问题一件衬衫原价80元打8折然后还需要支付10%的消费税。顾客最终需要支付多少钱 思考过程 1. 计算折扣后的价格80元 * 0.8 64元。 2. 计算消费税金额64元 * 0.1 6.4元。 3. 计算最终支付价格64元 6.4元 70.4元。 答案70.4元 示例2 问题一本书标价50元会员可以再减5元并且全场免运费。非会员购买需要支付8元运费。一个非会员买这本书一共要花多少钱 思考过程 1. 非会员无法享受减5元的优惠所以书的价格仍是50元。 2. 非会员需要支付运费8元。 3. 计算总花费50元 8元 58元。 答案58元 现在请解决以下问题 问题一台电脑原价6000元先涨价10%然后因为促销又降价15%。它现在的价格是多少 思考过程在这个Prompt下模型会模仿示例的格式先进行“思考过程”的生成。它很可能输出 “1. 计算涨价后的价格6000元 * (1 0.1) 6000元 * 1.1 6600元。 2. 计算在涨价基础上降价后的价格6600元 * (1 - 0.15) 6600元 * 0.85 5610元。” 然后给出答案“5610元”。实操心得少样本COT的威力巨大但“示例”本身就是一种需要精心设计的“数据”。我个人的经验是准备3-5个高质量的示例其效果往往优于十几个质量一般的示例。在设计示例的“思考过程”时要有意地展示如何分解问题、如何应用公式或常识、如何检查中间步骤的合理性。这相当于为模型编写了一份“如何思考”的微型教材。3. 思维链进阶自我提问与自我验证基础COT让模型展示了思考过程但这个过程仍然是“单向”的。进阶玩法则引入了“反思”和“循环”机制让模型能够像人类一样在推理中主动提出问题、检查错误、修正路径从而实现更稳健、更复杂的推理。3.1 Self-ASK让模型学会“自己提问”Self-ASK的核心思想是将一个大问题分解成一系列可以独立验证的子问题。模型在推理时会主动判断“要回答当前问题我需要先知道什么”然后提出这个子问题调用工具如搜索引擎、计算器、知识库或自身知识来解答它最后综合所有子问题的答案得出最终结论。这模仿了人类研究者在解决问题时的行为我们不会试图一口气解决所有事情而是会列出需要查证的事实清单。Self-ASK的关键步骤问题分解模型分析主问题识别出需要解答的关键子问题。提问模型生成这些子问题。解答通过外部工具或内部知识回答每个子问题。综合利用子问题的答案推导出主问题的最终答案。实操示例事实核查类问题主问题“根据公开信息马斯克创办的第一家公司Zip2被收购的价格是否高于他后来联合创立的PayPal被收购的价格”一个具备Self-ASK能力的模型或系统的推理过程可能如下步骤1分解问题。模型意识到需要两个关键数据子问题AZip2被收购的价格是多少子问题BPayPal被收购的价格是多少步骤2提问与解答。模型生成查询“Zip2 company acquisition price by Compaq”。假设接入搜索工具工具返回“1999年康柏以约3.07亿美元现金加股票收购了Zip2。”模型生成查询“PayPal acquisition price by eBay”。工具返回“2002年eBay以约15亿美元股票收购了PayPal。”步骤3综合推理。模型比较两个数字3.07亿美元 vs. 15亿美元。得出结论“Zip2的收购价约3.07亿美元低于PayPal的收购价约15亿美元。因此原问题的答案为否。”实现方式纯粹的Prompt Engineering很难实现完整的Self-ASK循环因为它需要模型能生成工具调用指令、解析工具返回结果。这通常需要结合程序框架来实现。例如使用LangChain、LlamaIndex等框架你可以定义一个“Self-ASK with Search”的Agent其系统指令中明确要求它遵循“分解问题-搜索-综合”的流程并为其配备搜索工具。注意事项Self-ASK的性能高度依赖于子问题分解的准确性和工具调用的可靠性。如果模型分解出无关或错误的子问题或者工具返回了错误信息整个推理链就会失败。因此在关键应用中需要对子问题生成和答案综合步骤设置置信度检查或回退机制。3.2 自我验证与纠错即使有了思维链模型也可能会在漫长的推理中“跑偏”产生所谓的“中间步骤幻觉”。自我验证技术旨在让模型在生成最终答案前对自己推理链的每一步进行校验。一种常见的实践是“验证链”。在模型生成标准COT推理链和答案后我们要求它换一个角度重新审视问题和自己的推理。实操示例数学解题问题“一个班级有60%的学生喜欢数学80%的学生喜欢科学。至少喜欢一门学科的学生比例最小可能是多少”模型可能生成以下COT “喜欢数学的占60%喜欢科学的占80%。如果这两部分人完全不重叠那么喜欢至少一门的人就是60%80%140%这不可能最大是100%。所以要计算最小可能就是让重叠部分尽可能多。当喜欢科学的人完全包含喜欢数学的人时重叠部分最大此时喜欢至少一门的人数就是喜欢科学的人数即80%。但这是最大比例。等等问题问的是‘最小可能’。那么应该让重叠部分尽可能少但最少重叠就是0那比例就是140%这不对。让我重新想...最小比例发生在两集合交集最小的时候。根据容斥原理至少喜欢一门的人数 喜欢数学 喜欢科学 - 两者都喜欢。要最小化这个值就需要最大化‘两者都喜欢’。‘两者都喜欢’的最大值不能超过较小的集合即60%。所以至少喜欢一门的最小比例 60% 80% - 60% 80%。答案80%。”仔细看这个推理链最后得出了80%但这实际上是最大比例而不是最小比例。模型在中间混淆了。此时我们可以追加一个验证Prompt “请仔细检查上述推理过程。我们要求的是‘至少喜欢一门的学生比例的最小可能值’。根据容斥原理 P(A∪B) P(A) P(B) - P(A∩B)。P(A)和P(B)固定为60%和80%。要使P(A∪B)最小需要P(A∩B)最大。P(A∩B)最大是多少它不能超过P(A)和P(B)中的较小值即60%。所以P(A∪B)最小 60% 80% - 60% 80%。这确实是80%吗这看起来像是最大值。再思考当P(A∩B)最大时并集覆盖了所有人吗实际上当喜欢科学的人80%完全包含喜欢数学的人60%时并集就是80%这是并集的最小值吗不对如果两者完全不重叠并集是140%不可能上限100%。所以并集的范围是从最大值100%当交集至少为40%时到最小值让我们考虑边界总人数为100%。如果交集为x则并集为 6080-x 140-x。因为并集 ≤ 100%所以 140-x ≤ 100 x ≥ 40%。所以交集x的范围是40%到60%。那么并集 140-x当x最大60%时并集最小80%当x最小40%时并集最大100%。所以最小比例确实是80%。我最初的结论是对的。答案80%。”通过这个自我验证的步骤模型不仅确认了答案更巩固了正确的推理路径。在实际应用中我们可以将“生成初始COT”和“进行自我验证”作为两个独立的步骤甚至可以要求模型为验证步骤生成一个“置信度分数”。实操心得自我验证并非总是有效特别是当模型的初始错误源于根本性的概念误解时它可能会在验证中再次强化这个错误。一个更稳健的策略是“多路径验证”让模型用两种不同的方法例如代数法和几何法分别求解同一个问题然后比较结果是否一致。如果不一致则触发更详细的检查或提示用户。4. 复杂推理的实现与工程实践将思维链从理论技巧转化为稳定、可用的系统能力需要工程化的思维。这部分我们将探讨如何设计Prompt结构、如何处理长链推理以及如何评估思维链的质量。4.1 结构化Prompt设计对于复杂的任务一个杂乱无章的思维链输出不利于后续的解析和使用。我们需要设计结构化的Prompt引导模型输出格式清晰、易于解析的内容。常用结构模板QA式结构明确区分“思考”和“答案”。问题{用户问题} 请按照以下步骤思考并回答 思考过程 请在此处一步步推理 最终答案 请在此处给出最终答案标记式结构使用特殊标记来分隔不同部分便于程序用正则表达式提取。问题{用户问题} 请按步骤思考并在最后给出答案。 THINKING ...模型生成的思考步骤... /THINKING ANSWER ...模型生成的最终答案... /ANSWERJSON式结构直接要求模型输出JSON格式结构化程度最高但对模型指令遵循能力要求也高。问题{用户问题} 请以JSON格式输出你的推理过程和答案包含两个键chain_of_thought 和 final_answer。 { chain_of_thought: 一步步的推理过程..., final_answer: 最终答案 }实操示例商品定价分析假设我们构建一个分析电商商品定价合理性的助手。结构化Prompt设计你是一个电商定价分析专家。请分析以下商品信息并给出定价是否合理的判断。 商品信息 - 商品名称无线蓝牙降噪耳机 - 品牌A品牌知名国产品牌 - 标价899元 - 主要竞品1B品牌同类耳机售价799元口碑相当。 - 主要竞品2C国际品牌入门款售价1099元品牌溢价高。 - 成本估算根据公开元器件分析约350元。 请按以下结构输出你的分析 ## 分析步骤 1. 成本与毛利分析 2. 市场竞争分析 3. 品牌价值与定位分析 4. 综合判断与理由 ## 最终结论 请用一句话总结并明确给出“定价合理”、“定价偏高”或“定价偏低”的判断。这样的Prompt引导模型进行多维度、分步骤的思考并且输出格式规整既方便人类阅读也方便后续自动化处理如提取“最终结论”字段。4.2 处理长链与递归思维链有些问题的推理链可能非常长超出了模型单次生成的长度限制或者逻辑层次非常深。这时需要用到递归思维链或分阶段思维链的策略。核心思想将一个大问题分解成多个子问题然后递归或迭代地解决每个子问题并将中间结果串联起来。实现模式计划-执行-综合模式计划阶段Prompt模型生成一个解决主问题的高层计划或大纲。执行阶段将计划中的每个步骤作为一个新的子问题再次调用模型或工具求解并记录结果。综合阶段将所有子步骤的结果汇总生成最终答案。递归分解模式适用于具有自相似结构的问题如树形问题、递归算法问题。Prompt模型识别出当前问题是否可以分解为更小的同类问题如果可以则先解决子问题再合并。实操示例编写一个项目计划书这个问题无法一次性完成。我们可以这样设计交互第一轮Prompt计划“我的目标是开发一个个人知识管理软件。请为我生成一个详细的开发计划大纲需要包含主要阶段和每个阶段的关键任务。”模型输出1. 需求分析与设计2. 技术选型与架构搭建3. 核心功能开发笔记管理、标签系统、搜索4. 测试与部署5. 迭代优化。第二轮Prompt递归执行针对“1. 需求分析与设计”这个子任务再次提问。 “现在请详细展开‘需求分析与设计’阶段。具体需要做哪些事情输出一份清单。”模型输出1.1 用户调研与痛点收集1.2 竞品分析1.3 确定核心功能列表与优先级1.4 绘制用户流程图1.5 设计数据库ER图与API接口草图。如此往复我们可以对1.1、1.2等任务继续递归分解直到得到足够细化的、可执行的任务描述。注意事项递归或分阶段思维链的挑战在于错误累积和上下文管理。上一步的输出作为下一步的输入任何一步的错误都会传导下去。因此必须在每个阶段设置检查点例如对中间结果进行简要的合理性验证。同时长链推理会消耗大量token成本较高需要权衡精度与成本。4.3 思维链的评估与优化如何判断模型生成的思维链是“好”的我们不能只看最终答案的对错因为一条逻辑错误但侥幸蒙对答案的思维链是有害的。我们需要评估思维链本身的质量。评估维度逻辑连贯性步骤之间是否有清晰的因果或递进关系是否存在逻辑跳跃或矛盾事实正确性推理中引用的数据、事实是否准确需要结合知识检索验证完整性是否涵盖了解决该问题所有必要的步骤有没有遗漏关键环节可解析性输出格式是否清晰易于人类或程序理解提取关键信息优化方法人工审核与迭代这是最可靠的方法。收集一批模型生成的思维链由专家标注其好坏并修改错误的链条。将这些“修正后的思维链”作为新的少样本示例加入Prompt可以显著提升模型生成高质量思维链的能力。这个过程称为“思维链精炼”。基于规则的过滤可以编写一些简单规则对生成的思维链进行初筛。例如如果思维链中包含“我不知道”、“无法确定”等表述则判定为低质量。如果思维链的步骤少于某个阈值对于复杂问题则判定为不完整。使用NLP工具检查步骤间的逻辑连接词如“因此”、“所以”、“因为”、“然后”等的密度和合理性。使用更高级的模型进行验证可以用一个更大、更强的模型如GPT-4来评估一个小模型生成的思维链。Prompt可以是“请评估以下推理过程在解决‘{问题}’时的质量从逻辑、事实、完整性三个方面评分1-5分并指出具体问题。” 这可以作为质量过滤的参考。自洽性检查让模型多次生成同一问题的思维链通过调整温度参数引入随机性然后比较这些链条的最终答案和关键中间步骤是否一致。高度自洽的答案通常更可靠。构建评估流水线示例对于一个自动解题系统其评估流程可以设计如下生成模型接收问题生成思维链和答案。自洽性检查相同问题用稍高的温度设置再生成1-2次。如果答案不一致则标记为“低置信度”。规则过滤检查思维链长度、关键步骤缺失、矛盾语句等。验证模型评分将问题、思维链、答案发送给一个验证模型进行质量评分。决策根据自洽性、规则过滤结果和验证评分决定是直接输出答案还是标记需要人工复核或是触发一个更详细的“验证链”Prompt进行自我修正。思维链技术将大语言模型从“鹦鹉学舌”的模仿者推向了“有迹可循”的思考者。从一句简单的“让我们一步一步思考”到能够自我提问、自我验证的复杂系统我们正在教会模型如何更好地组织其内部知识。掌握这些技巧意味着你不仅能得到更准确的答案更能洞察模型得出答案的路径从而建立更深层次的信任与控制。在实际应用中没有银弹你需要根据任务复杂度、模型能力、成本预算灵活搭配使用基础COT、少样本示例、结构化Prompt以及验证机制。我个人的经验是从最简单的零样本COT开始测试如果效果不稳定就转向精心设计的少样本COT如果任务涉及事实核查或计算则考虑引入Self-ASK和工具调用对于极高风险的决策场景则必须引入多路径验证和人工审核环节。这个过程本身就是与模型协同进化的旅程。