点击蓝字 关注我
热爱生活 热爱发现
本文:4054字 阅读6分钟
你是否遇到过这样的场景?
👉 用ChatGPT修bug,它却写起了散文;
👉 让Copilot生成测试用例,结果跑题到外太空;
👉 明明调整了提问方式,AI的输出质量却像过山车...
最新研究发现:问题可能出在你的“提问姿势”! 巴西与加州大学团队用 2000+测试案例 ,横跨 10类编程任务 ,实测 14种主流提示技术 ,最终揭示: “90%的低效输出,源于技术与任务的不匹配
🔍 一、14种技术全景图:谁是真王者?
论文从46种技术中筛选出14种主流方法,通过四大模型(含DeepSeek-Coder、Llama 3)实测。
- Exemplar Selection KNN (ES-KNN)
技术描述: 使用k-近邻方法选择相似示例来丰富提示上下文。
工作原理: 将数据样本转换为向量嵌入,计算余弦相似度,检索最相似的k个样本作为上下文示例。
提示词示例:
请根据以下相似代码示例来检测缺陷:示例1:[相似代码1] -> 缺陷类型:空指针异常示例2:[相似代码2] -> 缺陷类型:数组越界示例3:[相似代码3] -> 缺陷类型:无缺陷现在请分析以下代码:[待分析代码]
- Few Shot Contrastive CoT (CCoT)
技术描述: 使用正确和错误的思维链示例来细化推理步骤。
提示词示例:
通过对比正确和错误的推理过程来解决问题:正确推理:步骤1:检查变量初始化步骤2:验证边界条件步骤3:确认返回值结果:正确错误推理:步骤1:直接使用变量(未检查初始化)步骤2:忽略边界条件结果:出现空指针异常现在请用正确的推理方式分析:[代码]
- Tree Of Thought (TroT)
技术描述: 构建多个分支推理路径来探索复杂设计问题的多样化解决策略。
提示词示例:
请使用树状思维分析这个问题:分支1:从性能角度考虑- 时间复杂度优化- 空间复杂度优化分支2:从可维护性角度考虑- 代码可读性- 模块化设计分支3:从安全性角度考虑- 输入验证- 错误处理综合以上分支,给出最佳解决方案:[问题描述]
- Self Ask (SA)
技术描述: 让模型在回答前生成自己的后续问题,帮助逐步分解和解决复杂问题。
提示词示例:
在解决这个编程问题前,请先问自己几个问题:问题:这个函数的主要功能是什么?问题:需要处理哪些边界情况?问题:可能出现什么异常?问题:如何优化性能?现在基于这些问题来分析:[代码问题]
5.Universal Self Consistency (USC)
技术描述: 结合模型的多个答案,使用元提示选择最一致的答案,提高输出可靠性。
提示词示例:
请生成3个不同的解决方案:方案1:[详细描述方法1]方案2:[详细描述方法2]方案3:[详细描述方法3]现在分析这3个方案的一致性,选择最可靠的方案并说明理由。
6.Self Refine (SR)
技术描述: 通过自我评估和更新来迭代改进初始响应。
提示词示例:
第一步:给出初始解决方案[初始方案]第二步:自我评估- 这个方案有什么问题?- 可以如何改进?第三步:提供改进后的方案[改进方案]第四步:再次评估是否还需要进一步优化
7.Self-Generated In-Context Learning (SG-ICL)
技术描述: 自动生成上下文示例来模拟少样本学习,简化编程任务的提示制定。
提示词示例:
首先生成3个相关示例:自生成示例1:[问题] -> [解决方案]自生成示例2:[问题] -> [解决方案]自生成示例3:[问题] -> [解决方案]基于这些示例,现在解决:[实际问题]
8.Thread Of Thought (ToT)
技术描述: 引导LLM逐步处理问题,将大型复杂任务分解为小的可管理部分。
提示词示例:
让我们一步步分析这个问题:第1步:理解问题核心[分析问题本质]第2步:确定关键组件[识别主要模块]第3步:逐个分析组件[详细分析每个部分]第4步:综合解决方案[整合所有部分]请暂停并总结每一步,然后继续下一步。
- Step Back Prompting (SBP)
技术描述: 首先让模型从整体审视问题,思考关键思想和主要事实,然后制定解决方案。
提示词示例:
在深入细节之前,让我们先退一步:高层次问题:这个问题的本质是什么?核心概念:涉及哪些关键技术概念?相关原理:需要应用什么基本原理?基于以上高层次分析,现在制定具体解决方案:[问题]
10.Emotional Prompting (EP)
技术描述: 融入情感语言来塑造更有吸引力和共鸣的响应。
提示词示例:
这个任务对项目成功非常重要!请仔细分析代码中的潜在缺陷。你的专业技能对团队来说是宝贵的,请提供最佳的解决方案。我相信你能找到最优雅和高效的代码实现方式!任务:[具体编程任务]
11.Style Prompting (SP)
技术描述: 指导模型采用特定的语调或格式,确保生成的代码注释和文档符合期望的风格。
提示词示例:
请以资深软件架构师的风格回答:- 使用专业术语- 提供详细的技术解释- 包含最佳实践建议- 考虑长期维护性问题:[技术问题]
12.Rephrase and Respond (RR)
技术描述: 要求LLM首先用自己的话重述问题并添加必要细节,然后给出答案。
提示词示例:
首先,请用你自己的话重新描述这个问题:[原问题重述]补充理解:- 问题的关键要求是什么?- 需要考虑哪些约束条件?- 期望的输出格式是什么?基于以上理解,现在提供解决方案:
13.Role Prompting (RP)
技术描述: 分配特定角色身份(如代码审查员或开发者)来定制对特定SE任务细节的响应。
提示词示例:
你现在是一位经验丰富的高级软件工程师,专门负责代码质量审查。你的任务是:- 仔细检查代码逻辑- 识别潜在的性能问题- 提供改进建议- 确保代码符合最佳实践请审查以下代码:[代码]
14.Analogical Prompting (AP)
技术描述: 提示LLM使用类比来使代码解释或设计思想更容易理解。
提示词示例:
请用生活中的类比来解释这个算法:就像图书馆管理员整理书籍一样:- 排序算法就像按字母顺序排列书籍- 搜索算法就像在目录中查找特定书籍- 数据结构就像不同的存储方式(书架、抽屉、文件柜)现在用类似的方式解释:[技术概念]
⚡️ 二、 总体表现排名
基于在10个软件工程任务上的综合表现,提示技术的总体排名如下:
三个最佳表现技术:
-
ES-KNN - 在多个任务中表现优异,特别是克隆检测、代码翻译和断言生成
-
USC - 在代码问答和代码生成任务中效果突出
-
ToT - 在缺陷检测任务中表现最佳
三个最差表现技术
- Self Refine (SR) - 自我优化技术,迭代改进过程可能导致过度复杂化,反而降低了回答质量
- Tree of Thought (TroT) - 思维树技术,分支推理在软件工程的具体任务中可能过于发散,缺乏针对性
- Self-Generated In-Context Learning (SG-ICL) - 自生成上下文学习
-
自动生成的示例可能质量不高,缺乏真实场景的准确性
-
生成的上下文可能与实际任务需求不匹配,误导模型判断
各任务最佳技术:
任务类别 | |||
具体任务 | |||
最佳技术 | |||
最差技术 | |||
代码理解 | |||
缺陷检测 | |||
ToT | |||
EP | |||
代码理解 | |||
克隆检测 | |||
ES-KNN | |||
SR | |||
代码理解 | |||
异常类型预测 | |||
ES-KNN | |||
RR | |||
代码理解 | |||
代码问答 | |||
USC | |||
TroT | |||
代码生成 | |||
代码翻译 | |||
ES-KNN | |||
SG-ICL | |||
代码生成 | |||
Bug修复 | |||
Control | |||
RR | |||
代码生成 | |||
变异生成 | |||
ES-KNN | |||
ToT | |||
代码生成 | |||
断言生成 | |||
ES-KNN | |||
SR | |||
代码生成 | |||
代码摘要 | |||
Control | |||
RR | |||
代码生成 | |||
代码生成 | |||
USC | |||
ES-KNN | |||
⚡️三、资源成本分析:性能与效率的权衡
Token消耗分析
Token是衡量大型语言模型成本的基本单位,直接影响API调用费用。研究发现,不同提示技术的token消耗存在显著差异:
高消耗技术:
-
ES-KNN(示例选择K近邻):由于包含大量相似示例,导致token消耗最高
-
USC(通用自一致性):需要生成多个答案进行比较,增加输出token数量
-
CCoT(对比思维链):包含正确和错误示例对比,显著增加提示长度
低消耗技术:
-
RP(角色提示):仅包含角色定义,token效率最高
-
Control(基线方法):使用简单指令,消耗最少
-
EP(情感提示):添加情感语言,但总体长度可控
响应时间成本
响应时间直接影响用户体验和计算资源占用。研究测量了每种技术的平均响应延迟:
耗时技术:
-
USC:由于需要生成多个候选答案,响应时间最长
-
SR(自我优化):迭代改进过程增加计算时间
-
ToT(思维线程):逐步分解处理导致延迟增加
高效技术:
- ES-KNN:尽管token多,但单次推理速度快
- RP:简洁的角色定义实现快速响应
- Control:基线方法响应最快
各任务资源消耗详情
Token节省分析
研究统计了每个任务相对于基线方法的平均token节省情况:
时间节省分析
响应时间节省情况显示了不同任务的计算效率:
成本效益权衡分析
性能与成本的矛盾
研究揭示了提示技术在性能提升和资源消耗之间的复杂权衡关系
高性能高成本技术:
- ES-KNN:在多数任务中性能最佳,但token消耗显著增加,适合对准确性要求极高的场景
- USC:在代码问答和生成任务中表现优异,但需要更多计算时间和token
性价比优选技术:
- RP(角色提示):在token效率方面表现最佳,同时保持合理的性能水平
- Control基线:虽然性能一般,但资源消耗最低,适合资源受限环境
🚨四、拓展场景思考:任务决定技术
▎场景1:高逻辑任务(Bug修复/算法设计)
▶ 黄金组合:TroT + USC
# 终极模板(论文实测有效) "Step1: 逐步分析此函数的错误原因 Step2: 生成3种修复方案并对比优劣 Step3: 输出最终代码 Step4: 自我检查是否违反[内存/性能]约束"
💡 数据支撑 :在200+个算法题测试中,该组合正确率 从58%飙升至79%
▎ 场景2:沟通任务(文档/注释生成)
▶ 黄金组合:RP + EP
“扮演被PM催稿的工程师,用三句吐槽向新手解释: 1. 此API的核心坑点 2. 附一个真实事故案例(带代码片段)”
💡 数据支撑 :用户评分显示文档可读性 提升31% ,且Token消耗降低40%
🚨五、拓展场景思考:资源优化策略
基于应用场景的选择
▶ 资源充足的研究环境:
-
优先选择ES-KNN、USC等高性能技术
-
注重准确性和完整性,成本考虑较低
▶ 商业生产环境:
-
平衡性能和成本,选择RP、ToT等中等消耗技术
-
实施成本监控和预算管理
▶ 资源受限场景:
-
使用Control、RP等低成本技术
-
通过技术组合优化性价比
论文参考文档
让我们携手共创更多美好时刻!
如果您发现这篇文章对您有所启发或帮助, 请不吝赐赞,为我 【点赞】、【转发】、【关注】 ,带你一起玩转AI !后台回复知识库 ,获取AI大眼萌整理的AI知识库内容。
<您的点赞和在看,只有我能够看到。>
微信号|AICuteMQ
往期精彩内容:
告别“面瘫”虚拟人!腾讯开源多角色表情同步黑科技,1分钟生成电影级对话视频