How to improve the reasoning ability of LLM through prompt engineering
1️⃣ 考察意图
面试官想考察你对提示工程的深度理解,而非简单背诵“CoT”等术语。核心是:你是否能根据问题复杂度、成本约束和模型能力,有取舍地选择推理增强策略。刁钻点在于,面试官会追问“为什么CoT在简单问题上反而降低准确率”或“自洽性如何保证投票有效”。答好了,能展示你从“调Prompt”到“设计推理系统”的硬实力,包括对token预算、延迟和鲁棒性的工程权衡。
2️⃣ 标准答
提升LLM推理能力,本质是将隐式推理显式化。以下按复杂度递增排列,并给出工程取舍:
- Chain-of-Thought (CoT) 基础版
- 方法:在Prompt末尾加“Let's think step by step”,强制模型输出中间推理步骤。
- 为什么有效:将单步“直觉跳跃”分解为多步“逻辑链”,降低单步错误概率。例如在GSM8K上,PaLM 540B从18%提升到58%。
- 工程取舍:CoT会显著增加输出token数(平均3-5倍),导致延迟和成本上升。坑:对简单问题(如“2+3=?”),CoT可能引入无关步骤,导致模型“过度思考”而犯错。解法:用分类器先判断问题复杂度,简单问题用直接回答,复杂问题才触发CoT。
- Self-Consistency (自洽性)
- 方法:对同一问题采样N条CoT路径(N=5-20),取最终答案的众数作为输出。
- 为什么有效:LLM的推理路径有随机性,自洽性通过“多数投票”过滤掉单次推理的噪声。在数学推理任务中,准确率可再提升5-15%。
- 工程取舍:N越大,准确率越高但成本线性增长。实际落地的坑:当答案空间很大(如开放式生成)时,众数可能不显著。解法:改用“加权投票”,根据每条路径的置信度(如logprob)赋权,或只对答案格式固定的任务(如选择题、数学题)使用。
- Tree-of-Thoughts (ToT)
- 方法:将推理过程建模为树状搜索,每个节点是一个中间“思维片段”,用评估函数(如“该步骤是否合理”)剪枝,再通过BFS/DFS探索最优路径。
- 为什么有效:CoT是线性链,ToT允许回溯和分支,适合需要探索和规划的复杂任务(如24点游戏、创意写作)。
- 工程取舍:ToT的评估函数需要额外调用LLM,成本极高(每个节点一次调用)。坑:评估函数本身可能不准确,导致剪枝错误。解法:用“轻量级评估”(如只让模型输出“好/坏”而非打分),或结合外部规则(如数学公式验证)降低LLM调用次数。
- 分解提示 (Decomposition)
- 方法:将复杂问题拆解为子问题,分别回答后汇总。例如“计算公司利润”拆成“收入”“成本”“税率”子问题。
- 为什么有效:降低单次推理的上下文复杂度,避免模型在长序列中丢失信息。
- 工程取舍:子问题划分依赖领域知识,自动化拆分可能引入错误。实际落地的坑:子问题之间可能有依赖关系,顺序错误会导致结果偏差。解法:用“依赖图”先排序子问题,或让模型输出子问题列表后,再按拓扑顺序执行。
- 外部工具增强
- 方法:结合代码解释器(如Python)或知识库(如向量数据库)辅助计算和验证。例如让模型先写代码算数学题,再执行。
- 为什么有效:LLM的算术能力弱,但代码执行是精确的。在MATH数据集上,结合代码解释器可将准确率从30%提升到70%+。
- 工程取舍:引入外部工具增加了系统复杂度(需要沙箱环境、API调用)。坑:模型可能生成错误代码,导致执行结果误导。解法:加“代码验证”步骤,让模型先解释代码逻辑,再执行;或限制代码只能调用安全函数(如
math库)。
总结:没有银弹。CoT是基线,自洽性适合高精度场景,ToT适合探索性任务,分解适合结构化问题,外部工具适合计算密集型任务。实际系统应组合使用,并用A/B测试验证效果。
3️⃣ 答题模板(30 秒电梯版)
“这个问题我从三个层面回答:第一,基础层,用CoT强制模型显式推理,但要注意简单问题可能反效果;第二,增强层,用自洽性投票或ToT树搜索提升鲁棒性,但成本会线性增长;第三,工具层,结合代码解释器或知识库弥补模型短板。总结一句:没有万能方案,必须根据任务复杂度、延迟和成本做工程取舍。”
4️⃣ 高频追问 & 应对
追问 1:CoT在简单问题上为什么会降低准确率?具体怎么判断“简单”?
因为CoT引入了不必要的中间步骤,模型可能在这些步骤中犯错(如“2+3=5”但CoT说“先算2+1=3,再加2=5”导致错误)。判断方法:用一个小型分类器(如基于问题长度、关键词数量)或直接让模型输出“是否需要逐步推理”。工程上,可以设置阈值:如果问题包含“计算”“推理”等词,触发CoT;否则直接回答。
追问 2:自洽性投票时,如果答案分布很分散怎么办?比如5条路径给出5个不同答案。
这说明问题本身可能模糊或模型能力不足。解法:1)增加采样次数N到20-30,看是否收敛;2)改用“加权投票”,根据每条路径的logprob赋权,高置信度路径权重更大;3)如果仍分散,回退到“不回答”或输出“不确定”,避免误导用户。实际系统中,我会监控答案分布的熵,超过阈值则触发人工审核。
追问 3:ToT的评估函数怎么设计?有没有不用LLM的轻量级方案?
评估函数可以分两级:1)轻量级:用规则(如“步骤是否包含数字运算”)或小模型(如BERT分类器)打分,成本低但精度有限;2)重量级:让LLM输出“合理/不合理”并附理由,精度高但成本高。工程上,我常用混合方案:先用规则快速剪枝明显错误分支,再用LLM评估剩余分支。例如在24点游戏中,先检查中间结果是否在1-24范围内,再让LLM判断逻辑。
5️⃣ 避坑 · 常见错误答法
- ❌ 只背CoT定义,说“CoT就是加‘Let's think step by step’”,没有讲适用场景和trade-off。 → ✅ 必须补充:CoT在简单问题上可能反效果,需要结合问题复杂度做条件触发。
- ❌ 认为ToT一定比CoT好,说“ToT是CoT的升级版,应该全面替代”。 → ✅ 必须指出:ToT成本是CoT的10-100倍,只适合需要探索的复杂任务,对简单问题反而浪费。
- ❌ 忽略外部工具,只谈Prompt内技巧。 → ✅ 必须提到:代码解释器、知识库等工具能弥补LLM的算术和记忆短板,是推理增强的关键一环。
6️⃣ 简历呼应
- 如果你有RAG项目:从“检索增强推理”角度切入,说明如何用CoT引导模型结合检索结果推理,例如“先检索相关文档,再用CoT逐步推导答案”。
- 如果你只做过传统NLP:用“序列标注 vs 结构化推理”类比,说明传统模型是单步预测,LLM通过CoT实现多步推理,类似“从线性分类器到决策树”。
- 如果你是校招无项目:聚焦论文复现,例如“我在GSM8K上复现了CoT+自洽性,准确率从30%提升到55%,并分析了不同N值的成本曲线”。
- “Chain-of-Thought Prompting Elicits Reasoning in Large Language Models” (Wei et al., 2022)
- “Self-Consistency Improves Chain of Thought Reasoning in Language Models” (Wang et al., 2022)
- “Tree of Thoughts: Deliberate Problem Solving with Large Language Models” (Yao et al., 2023)
- “Program of Thoughts: Solving Math Problems with LLMs and Code” (Chen et al., 2022)
- “ReAct: Synergizing Reasoning and Acting in Language Models” (Yao et al., 2022)