
第6篇Few-shot与Chain-of-Thought——教会AI如何思考适用人群进阶→高阶 | 字数约25,000字 | 预计阅读时间60分钟前言前五篇我们花了很多精力教模型做什么和输出成什么样。但从这一篇开始我们要进入一个更深层的领域——教模型怎么想。这听起来有点反直觉。模型不是已经有了推理能力吗为什么还需要教它怎么想答案是模型有推理能力但默认情况下它不会自动使用最适合当前任务的推理方式。你可以类比一下人类的思维模式当你在解决一个数学问题时你不会直接写下答案——你会先列公式、逐步推导、检查中间结果。但在日常聊天中你不会做这些。你会直接表达观点。模型也是一样——它有不同的思维模式而提示词可以引导它进入特定的模式。这一篇介绍两种最强大的思维引导技术Few-shot Learning少样本学习和Chain-of-Thought思维链。第一部分Few-shot Learning——用示例教会模型1.1 什么是Few-shot LearningFew-shot Learning少样本学习是一种通过提供少量输入-输出示例让模型学会完成特定任务的技术。原理模型在训练时学习了大量的模式。当你在提示词中给出几个示例时这些示例就像线索帮助模型从海量模式中定位到当前任务所需的那个模式。零样本Zero-shot不给示例“请把以下英文翻译成中文Hello, how are you?”单样本One-shot给一个示例请把以下英文翻译成中文。示例I love programming. → 我喜欢编程。请翻译Hello, how are you?少样本Few-shot给多个示例请把以下英文翻译成中文。示例1I love programming. → 我喜欢编程。示例2The weather is nice today. → 今天天气不错。示例3This book is very interesting. → 这本书很有趣。请翻译Hello, how are you?1.2 Few-shot的核心机制Few-shot 之所以有效是因为它在干两件事第一任务对齐。示例告诉模型这是什么任务。即使你的任务描述写得很清楚示例提供了一个直观的参考点让模型确认它理解正确。第二格式示范。示例展示了输入和输出的对应关系。如果输出格式比较复杂如JSON格式、特定结构的表格示例比任何文字描述都更有效。第三风格锚定。示例展示了输出应该是什么风格。如果你给的两个例子都是简洁风格模型就会沿着简洁风格生成。1.3 Few-shot的选取策略不是所有示例都一样有效。示例的选择直接影响Few-shot的效果。策略一代表性示例应该代表任务的典型情况。如果任务是情感分析示例应该覆盖正面、负面、中性三种情况。策略二边界性示例可以包含任务的边界情况。如果任务是分类可以包含一个模棱两可的案例帮助模型处理模糊场景。策略三多样性示例应该展示任务的各种变体。如果任务是邮件分类示例应该覆盖询价、“投诉”、合作等不同类型的邮件。策略四难度递进示例可以按照简单→中等→困难的顺序排列。这样模型先理解基本模式再处理复杂情况。1.4 Few-shot的数量问题多少个示例最合适一般规则3-5个示例是甜区。示例数量效果说明0Zero-shot基线水平依赖模型已有的理解1One-shot显著提升模型理解任务的基本模式3-5Few-shot最优覆盖足够的多样性又不浪费Token5-10边际收益递减更多示例不一定带来更好的效果10可能过拟合模型可能记住示例而不是学会模式为什么不是越多越好因为Few-shot的本质是模式识别——太多的示例可能让模型陷入模仿具体内容而不是学会抽象模式。1.5 Few-shot的常见变体变体一动态Few-shot不是固定提供同样的示例而是根据输入动态选择最合适的示例。defdynamic_few_shot(user_input,example_pool):# 从示例池中选择与当前输入最相似的3个示例relevant_examplesselect_most_similar(user_input,example_pool,k3)promptbuild_prompt_with_examples(relevant_examples,user_input)returncall_llm(prompt)这种技术在生产系统中非常常见——你维护一个示例库每次根据用户的输入自动匹配最相关的示例。变体二负样本Negative Examples不仅给正面的正确示例也给反面的错误示例请对以下用户反馈进行情感分类正面、负面、中性。正确示例1‘这个产品太棒了’ → 正面正确示例2‘等了三天还不发货’ → 负面错误示例‘一般般吧’ → 不要分类为’负面’这应该是’中性’请分类‘价格还行但质量有待提升’负样本可以帮助模型避开常见的分类错误。变体三输入-推理-输出三部曲在示例中不仅展示输入和输出还展示推理过程示例输入‘这个手机电池续航太差了半天就没电。’推理这句话表达了用户对产品的不满属于负面情绪。输出负面请分析‘这个屏幕色彩显示效果非常好。’这种变体实际上融合了Few-shot和Chain-of-Thought我们马上会详细讲。第二部分Chain-of-Thought思维链——让模型思考再回答2.1 什么是Chain-of-ThoughtChain-of-ThoughtCoT思维链是2022年由Google研究者提出的一项技术。它的核心思想异常简单让模型在给出最终答案之前先展示它的推理过程。常规提示Direct AnswerQ: 一个球拍和一个球总共1.10美元。球拍比球贵1美元。球多少钱A: 0.10美元。这个答案是错误的。很多人第一次也会答错。思维链提示Chain-of-ThoughtQ: 一个球拍和一个球总共1.10美元。球拍比球贵1美元。球多少钱A: 让我们一步一步思考设球的价格为x美元。那么球拍的价格为x 1美元。两者之和x (x 1) 1.102x 1 1.102x 0.10x 0.05所以球的价格是0.05美元。2.2 为什么CoT有效CoT之所以能显著提升模型在推理任务上的表现原因有四个原因一工作记忆的扩展。大模型的生成是从左到右的——它在生成第N个Token时只能看到前N-1个Token。如果你让模型直接给出答案它的推理空间非常有限。但如果它在给出答案之前先生成推理过程这些推理过程就变成了可以回头参考的工作记忆。原因二错误检测的机会。当模型把推理过程暴露出来时每一步都有机会被发现走错了。你可以在推理过程中发现中间步骤的错误然后纠正它。但在直接给答案的模式下一旦出错就是整体错误难以诊断。原因三问题分解。CoT迫使模型把复杂问题分解为一系列简单步骤。每个步骤只需要关注一小部分信息决策压力大大降低。原因四自我一致性。当模型沿着推理链前进时每一步的结论都必须与前面的步骤一致。这种一致性约束会强迫模型检查自己的逻辑连贯性。2.3 CoT的三种主要形式形式一手动CoTManual CoT直接告诉模型请一步一步思考。“请一步一步思考以下问题”“让我们逐步分析”“在回答之前请先展示你的推理过程。”形式二Few-shot CoT给模型一个或多个包含推理过程的示例。示例问题一个农夫有15只鸡和7只兔子。这些动物一共有多少条腿推理步骤每只鸡有2条腿15只鸡有15×230条腿每只兔子有4条腿7只兔子有7×428条腿总腿数302858条答案58条现在请回答一个农场有23只羊和12只鸭子。这些动物一共有多少条腿形式三Zero-shot CoT零样本思维链最简洁的CoT形式——只需在提示词后追加Let’s think step by step。“问题[问题内容]让我们一步一步思考。”研究表明仅凭这一句话模型在推理任务上的表现就能提升10-30%。这是一种魔法——仅仅因为这句话激活了模型的推理模式模型就从直觉回答模式切换到了分析推理模式。第三部分Few-shot CoT 强大的组合3.1 为什么要组合Few-shot 和 CoT 解决的是不同的问题Few-shot解决不知道做什么的问题任务对齐、格式示范CoT解决不知道怎么想的问题推理过程、逻辑链当两者组合时模型既知道该做什么也知道该怎么想。3.2 组合的三种模式模式一Few-shot在前CoT在后先用示例让模型理解任务再用CoT引导推理过程你的任务是回答数学应用题。示例1问题小明有5个苹果小红给了他3个他又吃了2个还剩几个推理5388-26答案6个示例2问题一本书有200页小明第一天读了1/4第二天读了剩下的1/3还剩多少页没读推理第一天读了200×1/450页剩下150页第二天读了150×1/350页剩下100页答案100页现在请回答以下问题让我们一步步推理问题[新问题]模式二CoT内嵌在Few-shot中每个示例都包含完整的推理过程示例1问题[问题]推理步骤1→步骤2→步骤3答案[答案]示例2同样包含推理过程现在请回答[新问题]模式三结构化的推理框架让Few-shot和CoT形成固定的结构化模式问题[输入] 关键信息提取[从问题中提取关键数据] 推理步骤 Step 1: [第一步推理] Step 2: [第二步推理] Step 3: [第三步推理] 最终答案[根据推理得出的答案]3.3 一个完整的实战案例场景分析销售数据变化的原因你是一位数据分析师。你的任务是分析销售数据的变化原因。 以下是一个分析示例 【数据】 Q1销售额120万 Q2销售额98万 变化-18.3% 【分析过程】 Step 1 - 确认数据Q1120万Q298万环比下降18.3% Step 2 - 拆解因素 - 新客户数量从320降至280-12.5% - 客单价从3750元降至3500元-6.7% - 老客户复购率从45%降至40% Step 3 - 深入分析 - 新客户减少的主因Q2没有大型营销活动 - 客单价下降的主因促销力度加大 - 复购率下降的主因产品B出现质量问题 Step 4 - 结论 销售额下降的主要原因是新客户获取不足次要原因是复购率下降。 建议Q3加大营销投入同时解决产品B的质量问题。 【分析结论】 核心原因营销投入不足产品B质量问题 建议加大营销预算修复产品B --- 现在请分析以下数据 Q1销售额500万 Q2销售额620万 变化24% 详细数据 - 新客户数量1000→1500 - 客单价5000元→4133元 - 老客户复购率50%→55% - 营销投入80万→120万 - 新产品C上市Q2初 请按照上述分析框架一步步分析。这个提示词结合了Few-shot给了完整的分析示例CoT示例中包含推理步骤新任务也要求一步步分析结构化框架分析过程有固定的Step结构第四部分CoT的高级变体4.1 Self-Consistency自一致性自一致性是CoT的一个重要改进。原理很简单同一个问题用CoT多次推理然后取多数答案。问题[问题] 运行1Temperature0.7推理过程A → 答案X 运行2Temperature0.7推理过程B → 答案Y 运行3Temperature0.7推理过程C → 答案X 运行4Temperature0.7推理过程D → 答案X 运行5Temperature0.7推理过程E → 答案Z 多数答案X出现了3次 最终输出X为什么自一致性有效因为正确的推理路径虽然可能有多种但它们通常指向相同的答案而错误的推理路径则更容易产生不一致的结果。在实践中自一致性通常需要3-5次推理Token消耗增加3-5倍但准确率可以提升5-15%。4.2 Tree-of-Thought思维树CoT是一条直线——从起点到终点的一条推理链。但对于很多复杂问题最优的推理路径不是线性的而是需要在多个可能的方向上探索。Tree-of-ThoughtToT思维树扩展了CoT的概念让模型在多个可能的推理方向上并行探索问题[复杂问题] 分支1路径A → 子路径A1 → 子路径A2 → ... 分支2路径B → 子路径B1 → 子路径B2 → ... 分支3路径C → 子路径C1 → 子路径C2 → ... 评估哪个分支最有可能通向正确答案 选择基于评估继续探索最优分支ToT在需要创造性思维和探索性推理的任务如策略规划、创意写作、数学证明中效果尤其好。4.3 Chain-of-Thought with Verification在CoT的末尾增加一个验证步骤推理过程... 结论... 验证步骤 - 检查结论是否与已知事实一致 - 检查推理过程中是否有逻辑跳跃 - 检查是否有被忽略的约束条件 - 如果有问题指出并修正这种推理验证双步模式可以显著减少CoT中常见的推理正确但结论错误的情况。4.4 EmotionPrompt情感提示2023年有一个有趣的研究发现在CoT提示词中加入情感激励可以进一步提升模型的表现。“这个问题对我的职业生涯非常重要请认真分析。让我们一步一步思考。”研究者发现加入类似的情感激励后模型在多个推理任务上的表现提升了5-10%。原因尚不完全清楚但一种假说是情感激励让模型进入了更认真的模式。第五部分Few-shot CoT在真实场景中的应用应用一客户工单分类你是一位客服工单分类专家。 任务根据客户描述将工单分类为以下类别之一 A. 账户问题登录失败、密码重置、账户锁定 B. 订单问题未收到货、退款申请、订单修改 C. 产品问题功能故障、使用疑问、兼容性 D. 其他 示例1 客户描述我登录不了我的账户提示密码错误但我确定密码是对的。 推理用户无法登录 → 属于账户登录问题 → 类别A 分类A 示例2 客户描述我上周下的单现在还没发货已经超过承诺的3天发货时间了。 推理客户在询问订单配送进度 → 属于订单履行问题 → 类别B 分类B 示例3 客户描述你们的App在安卓14上闪退一打开就自动关闭。 推理客户报告App的技术故障 → 属于产品功能问题 → 类别C 分类C 现在请分类以下工单。让我们一步步推理 客户描述我想修改我的收货地址但页面一直提示错误。我已经试了三次了很着急。 推理应用二内容审核决策你是一位内容审核员。请判断以下内容是否违规。 违规类型 1. 色情内容包含露骨的性描写或色情暗示 2. 暴力内容包含暴力描写或血腥描述 3. 仇恨言论针对特定群体的歧视或攻击 4. 不违规正常内容 示例1 内容我今天去超市买了很多好吃的苹果、香蕉、橙子都打折。 审核分析描述日常购物没有违规内容。 判断不违规 示例2 内容详细的色情场景描写含露骨性描写 审核分析内容包含明显的色情描写属于违规。 判断色情内容 示例3 内容XX群体的人都应该被赶出这个国家。 审核分析内容包含针对特定群体的仇恨言论和歧视。 判断仇恨言论 现在请审核以下内容 内容这个政策简直是灾难性的政府应该立即撤回这个愚蠢的决定。 审核分析第六部分Few-shot CoT的常见问题问题一示例污染当示例中包含与当前任务无关或相矛盾的信息时模型可能被带偏。解决方案精心选择示例每个示例都要经过验证确保引导方向正确。问题二推理幻觉模型在推理过程中可能编造推理步骤——看起来合理但基于错误的前提或事实。解决方案在提示词中加入请确保护推理的每一步都基于提供的信息不要使用外部知识。问题三过度推理对于简单的任务CoT会让模型过度思考反而降低了效率和准确性。解决方案根据任务复杂度决定是否使用CoT。简单任务如事实性问答用Zero-shot复杂任务如数学推理、逻辑分析用CoT。问题四Token消耗CoT和Few-shot都会消耗大量Token。一个带有3个Few-shot示例和完整CoT的提示词可能消耗5-10倍于普通提示词的Token数。解决方案只在需要推理的任务中使用CoT压缩示例长度保留核心逻辑去掉不必要的文字考虑在应用层做缓存相同的输入直接返回缓存结果问题五Few-shot中的顺序偏差模型对示例的顺序敏感。把最有用的示例放在最前面和最末尾参考第1篇关于注意力分布的讨论。写在最后Few-shot 和 Chain-of-Thought 是提示词工程中最重要的两项思维引导技术。它们让提示词从指令式进化为教学式——不再只是告诉模型做什么而是教它怎么做。当你掌握了这两项技术你就可以让模型完成它没见过的新任务通过Few-shot对齐让模型解决它想不通的复杂问题通过CoT分解推理让模型的输出稳定、可信、可解释通过暴露推理过程从这一篇开始你不再只是操作AI工具的人而是教会AI思考的人。课后练习Few-shot练习选一个你经常做的任务如邮件分类、文本总结设计3个示例对比Zero-shot和Few-shot的效果差异。CoT练习找一个需要多步推理的问题数学题、逻辑题、策略分析先用普通方式问再用让我们一步一步思考问对比两次的答案质量。组合练习把Few-shot和CoT结合设计一个包含3个完整示例含推理过程 新任务的提示词验证组合效果。下一篇预告《第7篇思维链CoT深度解析——解锁推理能力》第6篇介绍了CoT的基本概念和应用第7篇我们将深入探索CoT的内部机制、高级变体如ToT、GoT、Self-Consistency等以及在编程、数学、逻辑推理中的专题应用。这是提示词工程中最硬核的一篇。Few-shot 教会模型该做什么CoT 教会模型该怎么做。当两者结合模型就不再是鹦鹉学舌而是真正开始思考了。