prompts.chat:08-prompt-chaining-and-multi-step-reasoning

📅2026/7/13 4:18:05 👁️次浏览
prompts.chat:08-prompt-chaining-and-multi-step-reasoning
在前面的章节中我们学习了如何通过思维链Chain-of-Thought让模型逐步展示推理过程。但有些任务太复杂了单靠一个提示词无法完成——这时候就需要提示链Prompt Chaining。提示链是指将一个大型任务分解为多个较小的子任务每个子任务由一个独立的提示词完成前一个提示词的输出作为后一个提示词的输入。如果说思维链是“模型内部的逐步思考”那提示链就是“外部的多步工作流”——每一步都有明确的输入、输出和中间结果。提示链 vs 思维链思维链CoT提示链Prompt Chaining定义在一次提示中要求模型展示推理步骤用多次提示每次完成一个子任务用户交互单次请求-响应多次请求-响应中间结果模型内部生成在同一回复中可见外部可见可审查、修改、传递错误恢复中间步骤出错时最终答案可能全错每个子任务可以单独验证和修正适用场景中等复杂度的推理任务极复杂、多步骤、需要人工介入的任务Token效率高单次调用较低多次调用可控性中等高每步都可调试【批注】最核心的区别是思维链是“一次对话内部推理”提示链是“多次对话逐步构建”。当你需要精细控制每一步、或者每一步都需要不同的角色/指令时提示链是更好的选择。为什么要使用提示链1. 处理超长上下文当任务需要的输入太长超过模型的上下文窗口时可以将大文本分割成多个块分别处理然后汇总结果。2. 分解复杂任务一个复杂的任务如“写一份商业计划书”可以被拆解为市场分析 → 竞争分析 → 财务预测 → 撰写完整文档。每一步都用独立的提示词完成。3. 人类在回路中Human-in-the-Loop在敏感或高风险的场景中可以在每一步之间插入人工审核确保中间结果正确后再继续下一步。4. 使用不同的角色/模型不同步骤可能需要不同的专业视角第一步用“市场分析师”角色第二步用“财务顾问”角色第三步用“文案撰写人”角色。5. 提高准确性和可调试性当最终结果出错时你可以追踪到具体是哪一步产生了问题并只修正那一步而不需要重做整个任务。【批注】提示链是构建可维护的AI应用的关键架构模式。在工程实践中我几乎从来不会用一个巨大的提示词解决所有问题——我会把任务拆成10-20个小步骤每个步骤独立调试、独立优化。提示链的核心模式模式一流水线模式Pipeline Pattern这是最基本的提示链模式每个步骤的输出成为下一步的输入形成一个线性流水线。text步骤1 → 步骤2 → 步骤3 → ... → 最终输出示例从原始文本到结构化报告步骤1提取关键信息提示词从以下会议记录中提取所有行动项、负责人和截止日期。以JSON格式返回。输出1json{ action_items: [ {task: 更新用户手册, assignee: Alice, deadline: 2026-07-20}, {task: 修复登录bug, assignee: Bob, deadline: 2026-07-15}, {task: 准备Q3财报, assignee: Charlie, deadline: 2026-07-25} ] }步骤2按优先级排序提示词根据紧迫性截止日期最近的最优先对以下行动项进行排序保持JSON格式。${JSON输出1}输出2json{ action_items: [ {task: 修复登录bug, assignee: Bob, deadline: 2026-07-15, priority: 1}, {task: 更新用户手册, assignee: Alice, deadline: 2026-07-20, priority: 2}, {task: 准备Q3财报, assignee: Charlie, deadline: 2026-07-25, priority: 3} ] }步骤3生成摘要报告提示词基于以下排序后的行动项生成一份简洁的团队摘要报告。${JSON输出2}【批注】这个三步骤流水线展示了提示链的典型应用提取→排序→报告。每一层的输入都是上一层的结构化输出每一层都有明确的单一职责。模式二分支与合并模式Branch-and-Merge Pattern一个任务产生多个中间结果最后汇总合并。text→ 步骤2A → → 步骤2B → → 步骤3合并 → 步骤2C →示例全方位产品分析步骤1任务分发提示词我需要分析我们的新产品“SmartHome Hub”。请分别从以下三个角度生成分析框架- 技术角度技术架构、可实现性、技术风险- 市场角度目标受众、市场定位、竞争格局- 财务角度成本估算、定价策略、投资回报率输出1三个分析框架步骤2A技术分析提示词请根据这个框架进行技术分析。${框架A}步骤2B市场分析提示词请根据这个框架进行市场分析。${框架B}步骤2C财务分析提示词请根据这个框架进行财务分析。${框架C}步骤3合并提示词将以下三份分析整合成一份完整的产品可行性报告。【批注】分支与合并模式的优势在于并行处理和专业化——每个分支可以由最适合该领域的角色或模型来处理。在实际的工程实现中这三个分支是可以并行执行的显著提升整体速度。模式三迭代精炼模式Iterative Refinement Pattern通过多轮反馈循环逐步改进输出质量。text步骤1初稿 → 步骤2审查 → 步骤3修改 → 步骤4再次审查→ ...示例高质量的文档撰写步骤1初稿生成提示词撰写一份关于“提高团队远程协作效率”的简短指南。步骤2结构化审查提示词审查以下文档的结构。是否逻辑清晰是否有遗漏的重要部分${初稿}步骤3改进提示词根据以下反馈意见修改文档。${反馈}步骤4最终审查提示词对修改后的文档进行最终审阅。检查流畅度、完整度、可执行性。${修改稿}【批注】迭代精炼模式模拟了人类写作的流程写初稿→找人提意见→修改→再审阅。这种“生成-反馈-修改”的循环可以无限迭代直到输出达到理想质量。对于关键文档如合同、报告这个模式尤其有价值。提示链的实用模板模板一长文档摘要链当文档超过上下文窗口时分段摘要再汇总。步骤1分块将长文档分割成多个逻辑块步骤2分段摘要提示词对以下文本块生成一段摘要100-150词。文本块${chunk1}对每个chunk重复步骤3汇总摘要提示词将以下所有分段摘要汇总成一份完整的文档摘要300-400词。摘要1${summary1}摘要2${summary2}摘要3${summary3}...模板二深度研究链从问题到答案层层深入。步骤1问题解构提示词将以下研究问题分解为3-5个可研究的子问题。问题“远程办公对团队生产力的长期影响是什么”步骤2逐个子问题回答提示词回答以下子问题引用相关研究和数据。子问题${sub_question_1}对每个子问题重复步骤3综合回答提示词基于以下子问题的答案综合回答原始研究问题。答案1${answer_1}答案2${answer_2}答案3${answer_3}模板三代码生成与测试链生成代码→审查→生成测试→执行验证。步骤1代码生成提示词根据以下需求生成Python函数。需求${requirements}步骤2代码审查提示词审查以下代码检查边界情况、错误处理、性能问题。代码${code}步骤3生成测试用例提示词为以下代码生成单元测试覆盖正常路径和边界情况。代码${code}步骤4自检提示词使用生成的测试用例验证代码。如果所有测试通过输出“通过”如果有失败指出问题和修复建议。【批注】这个模板非常实用。在实际场景中可以让模型先生成代码然后“换一个帽子”做代码审查再“换一个帽子”做测试生成。每一步的角色不同得到的质量更高。提示链的最佳实践1. 每一步保持单一职责每个提示词只做一件事然后清晰地传递结果。✅好的设计步骤1提取数据步骤2清洗数据步骤3分析数据步骤4生成报告❌不好的设计步骤1提取和分析数据步骤2生成报告2. 使用结构化中间输出在步骤之间传递JSON或结构化文本而不是自由文本。这能让下一步更精确地解析和使用上一步的结果。✅好的中间输出json{ key_findings: [发现1, 发现2], confidence_scores: {发现1: 0.9, 发现2: 0.7} }❌不好的中间输出text我找到了两个重要发现。第一个是...第二个是...我觉得第一个比较可信...3. 每一步都包含验证在关键步骤后加入自我验证确保中间结果质量。示例提示词带验证从以下文本中提取实体然后验证所有Person类型都有全名所有Date都是ISO格式。如有问题修正后返回。4. 保留原始输入信息在长链中有些模型可能会“遗忘”原始输入。一种常用技巧是在每个后续提示词中重述原始任务。示例步骤2提示词原始问题${original_question}我们已经完成了步骤1结果如下${step1_output}现在请基于以上信息完成步骤2...【批注】“重述原始任务”是防止提示链中“信息衰减”的关键技巧。想象一下“传话游戏”——每传一次就丢失一些信息。通过每次重述原始任务你可以保持上下文的完整性。5. 为人工介入预留接口在关键决策点让提示链暂停并等待人工确认。示例步骤3输出json{ analysis_complete: true, recommendations: [建议A, 建议B], risk_assessment: 中等风险, requires_human_review: true, pending_decision: 请选择推荐方案A或B }实际案例构建一份市场进入策略让我们通过一个完整的案例看看提示链如何应用在实际业务中。步骤1市场调研提示词你是一位市场研究分析师。我们需要进入“智能家居”市场。请提供市场规模2026年全球及中国主要竞争对手至少5家市场增长趋势未来3年以JSON格式返回。输出1市场数据JSON格式的市场数据步骤2竞争分析提示词你是一位竞争情报分析师。基于以下竞争对手列表分析他们的核心优势劣势/薄弱点目标客群定价策略竞争对手${competitors}以JSON格式返回。输出2竞争分析JSON格式的竞品分析步骤3差异化定位提示词你是一位品牌策略专家。基于市场数据和竞争分析为我们的新产品“SmartHome Hub”提出差异化定位。要求我们的目标客群25-40岁科技爱好者我们的技术优势AI集成、开放API预算中等市场数据marketdata竞品分析marketd​ata竞品分析{competitor_analysis}输出3个定位选项每个包含定位口号、目标客群描述、与竞品的差异点。输出3定位选项3个差异化定位方案步骤4进入策略提示词你是一位进入策略顾问。基于以下信息制定市场进入策略市场数据${market_data}竞争分析${competitor_analysis}定位选项${positioning_options}请提供推荐的定位方案从上述3个中选择1个进入市场的时间表和里程碑建议的营销渠道预算分配建议关键风险与缓解措施输出4进入策略完整的市场进入策略报告【批注】这个案例展示了提示链在企业级任务中的实际应用。注意每一步的角色切换市场分析师→竞争情报分析师→品牌策略专家→进入策略顾问——这充分利用了不同角色的专业视角。整个流程输出的不是一段文字而是一份结构化的战略文档。常见错误与解决方案错误1步骤之间信息丢失问题后面的步骤丢失了前面步骤的关键信息。解决方案在每个后续提示词中显式重述关键上下文。text步骤3提示词 原始任务${original_task} 步骤1结果${step1_output} 步骤2结果${step2_output} 现在请...错误2累计错误问题步骤1有轻微错误步骤2放大了它步骤3彻底出错。解决方案在每个步骤中加入验证要求在进入下一步前修正错误。每个步骤末尾加入在继续之前请验证以下内容□ 所有必需字段都已填充□ 数据格式正确□ 没有明显的逻辑矛盾如果发现问题在输出中标注“需要修正[问题描述]”。错误3过度分拆问题把任务拆得太细导致token消耗过大延迟增加成本上升。解决方案在“可维护性”和“效率”之间找到平衡。任务复杂度推荐的拆分数简单任务单次可完成1-2步中等任务需要3-5次思考2-3步复杂任务需要多领域视角4-6步极复杂任务企业级分析6-10步【批注】这里的原则和软件工程中的函数设计原则类似“每个函数只做一件事但不要切得太碎。”同样每个提示步骤应该有明确的单一职责但也不要把一个连贯的任务分解成太多碎片。错误4忽略人类反馈问题设计了一条完全自动化的链没有让人在关键决策点介入。解决方案在高风险决策点如“推荐方案选择”、“风险接受”设置暂停点等待人工确认。总结核心要点提示链 将复杂任务分解为多步独立提示三大核心模式流水线、分支与合并、迭代精炼每一步保持单一职责——只做一件事做好一件事使用结构化中间输出JSON/表格确保信息无损传递每一步包含验证——防止错误累积重述原始上下文——防止信息衰减人类在回路中——关键决策点保留人工介入平衡效率与可维护性——不要过度分拆小测验问题在提示链中为什么应该在每个后续提示词中重述原始任务A. 让模型的回答更长B. 防止在长链中发生信息衰减和上下文漂移C. 增加API调用的次数D. 让任务看起来更复杂解析在长提示链中模型尤其是前面的步骤可能会“遗忘”原始任务。在每个步骤中重述原始任务可以保持上下文完整性防止答案偏离目标。核心原则检查清单更新在完成本章后检查以下实践任务已合理分解为3-6个子任务每个子任务有明确的单一职责步骤之间使用结构化数据JSON传递每个步骤包含输出验证要求关键步骤重述了原始任务上下文高风险决策点设置了人工介入接口错误恢复机制已考虑如果某步失败【总批注】本章定位提示链是提示工程的系统架构层面的技术。之前我们学的是“如何写好一个提示词”而提示链教的是“如何用多个提示词构建一个工作流”。这是从“单次对话”到“生产级应用”的跨越。三大模式的选择指南流水线模式任务有明确的前后依赖关系如提取→分析→报告分支与合并模式需要多视角分析如技术市场财务分析迭代精炼模式需要高质量输出、可接受多轮迭代如撰写关键文档“信息衰减”的工程解法提示链最大的风险是信息在传递过程中丢失或变形。解决方案是使用结构化数据JSON传递而非自由文本在每个步骤中重述原始任务在关键步骤加入验证指令与编程思维的类比如果你有编程背景可以把提示链理解为函数组合Function Composition每个步骤是一个“函数”有明确的输入、输出、单一职责步骤之间通过“接口”JSON schema交互每个步骤可以独立测试、调试和优化工程实践建议先用一个提示词试试——如果效果不错就别加链如果不行拆成2-3步随着任务复杂度增加逐步增加步骤数关键步骤之间保留人类可读的中间输出方便调试学习建议读完本章后选择一个你日常遇到的多步骤任务如“写一篇调研报告”先用一个提示词完成然后尝试拆成3-4步的提示链对比两者的输出质量可控性能否在中间步骤修正方向可调试性出错时能否定位到具体步骤你会发现虽然提示链需要更多的API调用和更精心的设计但它带来的可控性和可靠性提升是质的飞跃。